UV 4.7
Simulation et commande des robots
Ce cours est associé en partie au MOOCs intitulés RobMOOC et IAMOOC
Luc Jaulin, Simon Rohou, Charles Vanwynsberghe, Julien Damers, ENSTA-Bretagne, Lab-STICC





  1. Présentation de l'UV 4.7
  2. Version pdf du polycopié
  3. Site de RobMOOC
  4. Site de IAMOOC
  5. Dates de l'UV, Planification générale
  6. Leçons
  7. Liste des étudiants de l'UV
  8. Proxy problems with ENSTA (IAMOOC)
  9. Vidéos en avance







Présentation

Introduction

Cette UV 4.7 est une des UV du profil robotique.
L'UV est centrée sur la simulation et la commande des robots avec des outils logiciels pour la robotique. Elle comprend quelques concepts d'intelligence artificielle comme les méthodes ensemblistes pour la localisation et la commande non-linéaire des robots. Elle possède
- une composante théorique basée sur le calcul par intervalles et qui sera utilisée pour la localisation (un peu de façon similaire au filtre de Kalman)
- une autre composante théorique sur la commande non-linéaire des robots
- et une composante logicielle.
Le seul langage autorisé sera Python. Matlab qui est normalement autorisé pour les extérieurs inscrits à RobMOOC ne le sera pas dans le cadre de cette UV.
Tout ce qui est écrit en vert dans les MOOC concerne les extérieurs (ceux qui font le MOOC et qui ne sont pas de l'ENSTA Bretagne).

Notation

Pour la notation de cette UV 4.7, vous avez deux notes (sur 20) toutes avec le même coefficient.

Contrôle continu. La note comprend
- les devoirs rendu sous Moodle. Vous pouvez vous mettre en binôme, mais chaque étudiant doit rendre son propre devoir en indiquant le nom de son binôme
- les évaluations machine. Suite à un tirage au sort, vous êtes évalués seuls devant la machine.
- les problèmes notés. Pour ces derniers, vous avez en H1 une présentation et aide à la résolution du problème. L'évaluation se passe en H2-H3. Vous pouvez vous mettre en binôme.
La note résultante est une moyenne des notes qui vous sont données lors des évaluations individuelles sur machine, les devoirs rendus sous Moodle et les problèmes notés.


Note Examen. Vous aurez une évaluation écrite en salle d'examen. Vous avez le droit à votre polycopié et à vos notes manuscrites. La calculatrice et autres appareils électroniques sont interdits. Cette évaluation écrite se décompose en
(1) Un QCM avec correction automatique grâce au logiciel AMC (auto-multiple-choice), portant sur des questions de cours et de compréhension. Le QCM durera 30 minutes et vous donnera une note sur 12.
(2) Un examen écrit de 40 minutes avec des problèmes liés à cette UV 3.7 (assez proches des exercices vus en BE) vous donnera également une note sur 8.
La somme de ces deux notes vous donnera une note sur 20.
Afin de ne privilégier personne, je ne réponds pas aux questions individuelles sur l'examen. Bien sûr, vous pouvez poser votre question par email et si je la trouve pertinente, je réponds sous la forme d'un email à tous.

Absences. Il faut éviter absolument les absences pour le contrôle écrit.
Pour le contrôle continu, il y a beaucoup d'évaluations et des absences sont probables. Dans ce cas, vous faut justifier votre absence en la signalant auprès de Laurence Gautier par email en donnant une raison valable et en me mettant en copie. Laurence doit alors vous répondre pour accepter cette justification toujours me mettant en copie.
Votre note sera gelée, ce qui signifie qu'elle ne sera pas prise en compte dans la moyenne qui forme votre note de contrôle continu.



Calendrier

Vous trouverez le Calendrier pris sur hélato (onglet CI2A).

Calendrier RobMOOC


En C4, nous avons cours sur la commande d'une chaîne d'intégrateurs.
Exceptionnellement, cette première leçon se tiendra le lundi pm.
Dans la suite, l'UV sera le jeudi matin.
Il faudra vous inscrire sur le site de RobMOOC.
Le BE en C5,C6,C7, concerne la stabilisation d'un satellite.
Le fichier de départ est 3.09_ex_satellite.py.
Le fichier roblib.py se trouve sur https://www.ensta-bretagne.fr/jaulin/roblib.py
La vidéo de correction :




En C1, nous avons cours sur la commande linéarisante.
En C2-C3-C4. Vous commencez les exercices 2.1, 2.2, 2.3 de RobMOOC A (voir ci-dessous sur cette même page)
Vous devrez rendre vos exercices 2.1, 2.2, 2.3 sous le Moodle de RobMOOC, Leçon A, avant le , 8:00






Vous devez avoir rendu vos exercices 2.1, 2.2, 2.3 sous le Moodle de RobMOOC, Leçon A avant 8:00.
Julien Damers assurera l'encadrement et l'évaluation car je serai en déplacement à Montpellier.
En C1, vous travaillez chez vous ou dans la salle de TD (F004bis), si vous avez besoin de discuter entre vous.
En C2, dix d'entre vous seront évalués en F016 sur le BE de la semaine précédente (exercices 2.1, 2.2, 2.3 ).
Une note sur 10 vous sera donnée par Julien Damers.
En parallèle (et toujours en F016), il faudra faire RobMOOC B (disponible sur cette même page ci-dessous) pendant les créneaux C2,C3,C4.
Ainsi, dans la même salle F016, il y aura les évalués et les autres.
Vous devrez rendre vos exercices 2.4, 2.6, 2.8 sous le Moodle de RobMOOC, Leçon B, avant le , 8:00






Vous devez avoir rendu vos exercices 2.4, 2.6, 2.8 sous le Moodle de RobMOOC, Leçon B avant 8:00.














Calendrier IAMOOC















C2-C3. Examen. Vous avez examen en C2. L'examen est censé durer 1h15, de 9h30 à 10h45. La calculatrice sera interdite. Le polycopié et les notes manuscrites sont autorisés.
Pour la surveillance, vous devrez être séparés d'au moins une table chacun.






Leçons de RobMOOC et de IAMOOC

Pour RobMOOC, les fichiers Python utiles sont dans
Utiliser la librairie roblib.py :
Une petit help sur cette librairie est donné ici :





Leçon A de RobMOOC. Introduction au bouclage linéarisant

Résumé : Dans cette leçon A, nous présenterons la problématique de la commande non-linéaire des robots mobiles. Nous introduirons ensuite la commande linéaire d'une chaîne d'intégrateurs par placement de pôles, qui sera un outil indispensable par la suite pour effectuer le suivi de trajectoire pour nos robots. Pour introduire le principe de commande linéarisante, nous nous intéresserons à la régulation d'un pendule. Nous appliquerons le même principe à la conception d'une loi de commande pour un robot de type char afin que ce dernier soit capable de suivre une trajectoire en forme de cycloïde.




Exercice 2.1. Manivelle
Partez du fichier ex_crank.py qui se trouve robmoocpy.zip.
Exercice 2.2. Les trois bacs
ex_pools.py.
Exercice 2.3. Train de robots
ex_train.py.



Leçon B de RobMOOC. Commande par bouclage linéarisant, singularités et modes glissants

Résumé : La leçon B, présentera d'une façon plus générale l'approche par bouclage linéarisant pour la commande des robots mobiles. Pour cela, nous introduirons les concepts de retards différentiels et le graphe qui lui est associé. Nous montrerons les problèmes de singularité pouvant exister dans les lois de commande et leur interprétation. Nous donnerons également des méthodes pour faire face à ces singularités. Nous introduirons une variante importante de la méthode par bouclage linéarisant : la commande par modes glissants, ou sliding modes.



Exercice 2.4. Commande d'un robot sous marin 3D
ex_auv3d.py.
Exercice 2.6. Poursuite
ex_pursuit.py.
Exercise 2.8. Commande par mode glissant
ex_sliding.py.




Leçon C de RobMOOC. Commande sans modèle (ou mimétique)

Résumé : Après avoir présenté le rôle du modèle dans la commande des robots, en s'intéressant plus particulièrement aux liens entre les modèles dynamiques et cinématiques, la leçon C proposera une autre vision de la régulation des robots mobiles. Cette dernière ne s'appuie pas sur les équations d'état du robot (c'est pour cela que nous la qualifions de sans modèle), mais plus sur l'intuition que l'on a sur sa dynamique. Cela pourra se faire par exemple en mimant les méthodes de pilotage existantes, qu'elles soient humaines (comme c'est le cas s'il s'agit d'un véhicule élaboré pour être conduit par un humain) ou de nature biologique (en copiant par exemple la méthode de déplacement d'une anguille). Pour illustrer ces notions, nous nous intéresserons au suivi de ligne pour un robot de type char et à la commande d'un robot patineur.






Leçon D de RobMOOC. Commande de véhicules

Il n'y a pas de vidéo de cours pour cette leçon, juste des exercices.

Résumé: On s'intéresse ici à des robots mobiles complexes et incertains de type véhicule (comme des voiliers, avions, quadrotors, etc) pour lesquels il n'existe pas d'équations d'état fiables et qui peuvent évoluer dans un environnement mal défini. Pourtant de tels systèmes sont parfois faciles à piloter du fait puisque qu'ils ont été conçus avec cette préoccupation, et évidemment aussi pour leurs performances. La leçon D illustre dans ce contexte comment la méthode de pilotage utilisée par l'humain pour piloter un véhicule peut être transformée en un régulateur simple et robuste.





Leçon E de RobMOOC. Guidage, champ de potentiels artificiels

Résumé : Une fois que le robot est capable de se réguler, de suivre un cap ou bien une trajectoire, il nous reste à trouver le chemin à suivre pour atteindre l'objectif fixé. Pour cela, il nous faut prendre en compte la structure de l'environnement, afin d'éviter les obstacles, de ne rester que dans les zones autorisées (par exemple un robot sous marin ne peut naviguer sur la terre ferme) ou de prendre en compte la rotondité de la terre lorsque les espaces à parcourir sont grands. Nous allons pour cela nous appuyer sur des méthodes à base de champ de potentiels artificiels.






Leçon F de RobMOOC. Planification de chemins

Résumé : Planifier son chemin ou sa trajectoire, lorsque le chemin dépend du temps, consiste à trouver une équation temporelle pour la consigne à suivre pour notre robot. Les outils qui peuvent être utilisés dans un tel contexte sont les polynômes de Bézier et les diagrammes de Voronoï, qui seront introduits dans cette leçon F.





Liste des étudiants de l'UV 4.7, 2018-19

Alexandre Argento
Kevin Bedin
Matthieu Bouveron
Quentin Cardinal
Cyril Cotsaftis
Alexandre Courjaud
Nathan Fourniol
Florian Gaurier
Jonathan Gomis
Aurelien Grenier
Corentin Jegat
Arnaud Klipfel
Erwann Landais
Louis Lesieur
Luc Longin
Driss Tayebi
Andrieux Hyacinthe
Pierre-Yves Mauduit
Philibert Adam (substitution)
David Brellmann (substitution)
Clément Fauchereau (substitution)
Romane Flechard (substitution)
Aurelien Lebrun (substitution)
Anouar Mahla (substitution)
Ange Valli (substitution)