Cours : Implantation de systèmes de contrôle, Option  SLE, ENSIMAG



Ce cours a pour but d'introduire la méthodologie de développement par modèle de systèmes de commande embarqués. Le cours contient un rappel des connaissances de base de l'automatique, des outils de conception, des langages de programmation embarquée. Sous forme d'un projet d'étude, en utilisant un robot LEGO Mindstorms NXT, les étudiants apprennent et pratiquent toutes les étapes de la chaîne de développement par modèle : modélisation, conception de contrôleur,  validation par simulation, et implantation du contrôleur dans le robot Mindstorms.

Enseignants
Thao Dang, Laboratoire  VERIMAG, mail
Romain Testylier, Laboratoire  VERIMAG, mail
Olivier Lebeltel, Laboratoire  VERIMAG, mail

Horaires et salle : Semestre 2, Jeudi, 9h45 - 11h15, Salles E301


Contenus
Dans la partie théorique (sous forme de CM) nous abordons les problèmes  de l'implantation du logiciel de contrôle.
La partie pratique :
- Applications au travers d'un problème robotique et des expérimentations sur des robots LEGO.
- Cette partie donne lieu à un projet qui est réalisé par groupes de 3 personnes.

Pour le problème robotique qui concerne la conception d'un controleur pour les robots, les connaissances des sujets présentés en 2ème année dans les cours "Introduction à la commande des systèmes embarqués" sont tres utiles.

EVALUATION
Le projet développé dans la partie pratique sera présenté lors d'un oral d'environ 15mn.
L'assiduité au projet est prise en compte.

Soutenances

Les soutenances se dérouleront le Mercredi 16 Mai en salle H206 , l'heure de passage de chaque groupe est consultable ici.
Pour chaque groupe :
  • 10 minutes pour une présentation (avec des transparents qui expliquent la réalisation du projet et les résultats obtenus)
  • 5 minutes pour faire une démonstration (avec le robot) et pour répondre aux questions
  • Un rapport est à rendre le jour des soutenances
  • Les modèles et les codes de toutes les étape du développement sont à envoyer par email aux enseignants le jour des soutenances
  • L'évaluation sera faite individuellement pour chaque membre du groupe

    Documents

    1. Un cours d'introduction à l'automatique et au traitement du signal
    2. Matlab/Simulink
    3. Quelques documents sur Lustre  : cours Synchronous programming in Control, cours M2P Programmation synchrone, un tutorial de Lustre, et une page sur la recherche autour de Lustre
    4. Page sur le traducteur Simulink vers Lustre
    5. Robot LEGO Mindstorms NXT et NXC (Not Exactly C)



    Plan

    Cours 1 (1 février 2012), CM1 (1h30), Salle E303

    Cours 2 (23 février 2012), TP1 (1h30), Salle E301 -- Commande d'un robot mobile - atteindre un point cible

    Cours 3 (1 mars 2012), TP2 (1h30), Salle E301 -- Commande d'un robot suiveur de ligne

    Cours 4 (2 mars 2012)(1h30) Suiveur de ligne - Traduction de Simulink vers Lustre
    • Continuation du TP2 - Commande d'un robot suiveur de ligne.
    • Résume des cours précédents
    • Pour ajuster les paramètres de PID, consulter ce document supplémentaire sur les systèmes du second ordre
    • Traduction de Simulink vers LUSTRE. Présentation. (Pour un rappel du langage LUSTRE, voir la présentation. Pour plus d'informations sur la traduction, voir la page sur les outils de traduction)

    Cours 5 (8 mars 2012)(1h30) Traduction de Simulink vers Lustre (suite)

    Cours 6 (15 mars 2012)(1h30) Discrétisation de contrôleurs

    Cours 7 (22 mars 2012)(1h30) Discrétisation de contrôleurs


    Cours 8 (5 avril 2012)(1h30) Traduction vers NXC
    • Génération du code NXC pour LEGO à partir d'un programme Lustre. Présentation, Document
    • Compilation de programmes NXC de contrôle vers le code du robot, en utilisant l'environnement de programmation Bricxcc
    • Instruction pour le chargement du code au robot : S'il y a un autre firmware installé sur la brique, il faut le changer en firmware standard de LEGO en utilisant l'outil LEGO MINDSTORM NXT. Puis, on lance l'environnement Bricxcc Commande Center. Bricxcc va demander le type de connexion et le type de brique, et on choisit "Automatic" et "NXT". Ensuite, on utilise le menu "Compile" pour compiler, transferer le code au robot et puis l'éxecuter.

    • Tâches à faire :
    • Extraire le contrôleur (déjà discrétisé)
    • Traduire le contrôleur en Lustre
    • Compiler le programme Lustre obtenu en NXC, écrire le programme "main" en NXC
    • Compiler le programme NXC, en utilisant l'environnement de programmation Bricxcc
    Cours 9 (3 mai 2012)(1h30) Traduction vers NXC
    • Conversion des nombres à virgule flottante vers des entiers: présentation

    Cours 10 - 11 (4 mai 2012)(3h) Experimentation
      Tâches à faire :
    • Convertir les flottants en entiers dans le modele Simulink
    • Extraire le contrôleur (déjà discrétisé)
    • Traduire le contrôleur en Lustre
    • Compiler le programme Lustre obtenu en NXC, écrire le programme "main" en NXC
    • Convertir les flottants en entiers
    • Compiler le programme NXC, en utilisant l'environnement de programmation Bricxcc

    Soutenances

    Les soutenances se dérouleront dans la salle E303, la date à confimer rapidement, l'ordre de passage sera envoyé par email.
    Pour chaque groupe :
  • 10 minutes pour une présentation (avec des transparents qui expliquent la réalisation du projet et les résultats obtenus)
  • 5 minutes pour faire une démonstration (avec le robot) et pour répondre aux questions
  • Un rapport est à rendre le jour des soutenances
  • Les modèles et les codes de toutes les étape du développement sont à envoyer par email aux enseignants le jour des soutenances
  • L'évaluation sera faite individuellement pour chaque membre du groupe