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
Ahmad Hably, Laboratoire  GIPSA, mail

Horaires et salle : Semestre 2, Lundi, 14h - 15h30, 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 2 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
Les travaux développé dans la partie pratique sera présenté lors d'une soutenance de projet d'environ 15mn.
L'assiduité au projet est prise en compte.

Déroulement de la soutenance 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 (4 février 2013), Ahmad Hably et Thao Dang, CM Introduction

    Cours 2 (11 février 2013), Ahmad Hably, CM Commande d'un robot suiveur de ligne

    Cours 3 (18 février 2013), Ahmad Hably, CM Discrétisation de controleurs

    Cours 4 (4 mars 2013), Thao Dang et Ahmad Hably, CM et TP Discrétisation de contrôleurs (suite)

    Cours 5 (11 mars 2013), Thao Dang, Discrétisation de contrôleurs (Correction TP) et Traducteur de Simulink vers Lustre (CM)
  • Conversion des nombres à virgule flottante vers des entiers: présentation

  • Cours 6 (18 mars 2013), Thao Dang et Ahmad Hably, TP : Application au robot - Discrétisation de contrôleurs et sa traduction vers Lustre

    Cours 7 (25 mars 2013), Thao Dang et Ahmad Hably, CM + TP Traduction vers NXC
    • TP: Conversion des nombres à virgule flottante vers des entiers - Application au contrôleur du robot (au niveau de Simulink) présentation


    • CM - Génération du code NXC pour LEGO à partir d'un programme Lustre. Présentation, Document

    Cours 8 (7 mavril 2013), Thao Dang et Ahmad Hably, TP Traduction vers NXC (2)
    • Correction de l'exercise sur des filtres anti-alias
    • Note sur la conversion de type Note



    A partir du cours 9 (15 avril 2013), Thao Dang et Ahmad Hably, TP Traduction vers NXC (3)

    • 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.

    Un exemple d'un programme de "glue" en NXC et quelques remarques