RobMOOC
Un MOOC sur la commande non-linéaire des robots (2d édition)
Luc Jaulin, ENSTA-Bretagne, UBO, Lab-STICC
lucjaulin@gmail.com






  1. Introduction à RobMOOC
  2. Accès à Moodle (dépôt des devoirs et forums)
  3. Dates
  4. Enoncés en pdf des exercices.
  5. Leçons et vidéos
  6. Films de quelques robots associés à ce MOOC : Vidéo 1, Vidéo 2.
  7. Autres MOOCs
  8. Liste des diplômés.







Introduction à RobMOOC

RobMOOC est un MOOC en français, gratuit et ouvert à tous. Il correspond aux chapitres 2,3,4 du livre "la robotique mobile, Luc Jaulin (2015), ISTE editions" qui existe aussi en version anglaise "Mobile Robotics, Luc Jaulin (2015), ISTE editions". Il s'agit de la seconde édition (la première ayant eu lieu du 22 février -> 04 avril 2016) d'un cours sur la commande non-linéaire des robots mobiles. Ce cours s'adresse à des débutants, bien que certaines notions en mathématiques soient nécessaires (typiquement de niveau demandé à l'entrée des écoles d'ingénieur). Ce MOOC peut également aider les enseignants qui doivent enseigner l'automatique non-linéaire et qui souhaitent le faire de façon simple et intuitive, tout en restant rigoureux. Ici, nous ne traitons pas du problème de l'estimation d'état qui est rattaché à un autre MOOC : KalMOOC.

                                                  

Contexte. Les robots mobiles sont en constante évolution ces dernières décennies. Pour se déplacer, ces robots peuvent rouler, glisser, naviguer, nager ou bien voler. Les équations différentielles qui régissent leurs mouvements sont fortement non-linéaires. L'objectif de ce cours est de donner les méthodes qui permettent d'élaborer les lois de commande qui permettront à ces robots d'accomplir une tâche précise et ceci dans un environnement parfois encombré. Dans ce cours, nous supposerons que le robot sait où il se trouve et qu'il est capable de percevoir son environnement. Ce cours s'intéresse donc principalement à la commande et au guidage.

Prérequis. Il est nécessaire d'avoir quelques notions en Matlab (ou Python) et des bases en mathématiques élémentaires (typiquement le niveau d'entrée requis à l'entrée d'école d'ingénieur). Nous éviterons l'utilisation d'outils mathématiques trop élaborés. Matlab (ou Python) doit être installé sur votre machine. Les fichiers Matlab utiles pour les exercices se trouvent dans robmooc.zip. Pour les utilisateurs de Python, les fichiers utiles sont dans robmoocpy.zip. Dans le zip Python, il y a une librairie roblib.py qui faudrait essayer ne pas toucher afin que je puisse comprendre vos programmes et les faire tourner sur ma machine facilement.

Postrequis. Après ce cours, vous devriez être capables de concevoir une loi de commande pour un robot mobile décrit par des équations d'état, comme un avion, un voilier, ou une voiture. Cette loi de commande devra avoir un objectif clair (comme atteindre un point précis, ou suivre une ligne) tout en évitant les obstacles potentiels et ne pas entrer en collision avec d'autres robots.

Diplôme. Pour ceux et celles qui terminent correctement ce MOOC, un diplôme vous sera distribué à la fin. Pour étudiants en thèse, ce diplôme peut vous permettre d'obtenir vos crédits doctoraux demandés par les écoles doctorales.

Inscription. L'inscription n'est pas obligatoire pour suivre les vidéos, mais est indispensable pour participer au forum et avoir le diplôme. Pour s'inscrire, il faut aller sur plateforme d'apprentissage Moodle , s'inscrire et s'enrôler. Ainsi, vous aurez accès au forum, dépôt des devoirs. Une petite vidéo d'explication peut vous être utile si vous avez du mal à vous inscrire. Attention, cette vidéo est montrée ici pour un autre MOOC (KalMOOC). Le principe est le même pour RobMOOC.
Ce cours est complètement gratuit.

Contact. Pour vos questions, essayez de passer par le forum sous Moodle, afin d'en faire bénéficier les autres. Sinon, écrivez-moi directement un email sur lucjaulin@gmail.com.

Structure du cours. Ce cours se réparti en 3 chapitres chacun constitué de 2 leçons, soit un total de 6 leçons (numérotées A,B,C,D,E,F). Chaque leçon est constituée d'une heure de cours et de deux heures de travaux pratiques sur machine.
Une version pdf du cours et des énoncés des exercices peut être téléchargée.
Chapitre 1 : Commande par bouclage linéarisant
Chapitre 2 : Commande sans modèle
Chapitre 3 : Guidage









Dates

Ce MOOC dure 6 semaines. Les dates officielles de début de chaque leçon pour l'année 2017 sont les suivantes.
Jeudi 02/02/2017, 12h : Leçon A
Jeudi 09/02/2017, 12h : Leçon B
Jeudi 16/02/2017, 12h : Leçon C
Jeudi 23/02/2017, 12h : Leçon D
Jeudi 02/03/2017, 12h : Leçon E
Jeudi 09/03/2017, 12h : Leçon F

Pour chaque leçon, vous devez rendre, pour chaque exercice, le programme Matlab (ou Python, ou autre) associé. Vos fichiers devront être postés sur Moodle avant le jeudi (12h) de la semaine qui suit. Par exemple, les exercices 2.1, 2.2, 2.3 de la Leçon A devront être rendus avant le jeudi 09 février 12h.






Enoncés

Les énoncés sont téléchargeables avec le cours: pdf .
Les fichiers utiles pour les exercices se trouvent dans robmooc.zip pour les utilisateurs de Matlab et sur robmoocpy.zip pour les utilisateurs de Python.
Une vidéo de correction pour les exercices vous est donnée lors de l'ouverture de la leçon, mais pas le programme informatique car c'est à vous de le faire. Cette vidéo vous donne une méthode possible de résolution, mais vous n'êtes pas obligés de la suivre.









Leçons et Vidéos





Leçon A. Introduction au bouclage linéarisant

Ouverture : Jeudi 02/02/2017, 12h
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.


Exercices. (à rendre sous Moodle)
Exercice 2.1. Manivelle. vidéo. (partez du fichier ex_crank.m qui se trouve robmooc.zip ou du fichier ex_crank.py qui se trouve robmoocpy.zip).
Exercice 2.2. Les trois bacs. vidéo. (ex_pools.m ou ex_pools.py).
Exercice 2.3. Train de robots. vidéo. (ex_train.m ou ex_train.py).



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

Ouverture : Jeudi 09/02/2017, 12h
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.


Exercices. (à rendre sous Moodle)
Exercice 2.4. Commande d'un robot sous marin 3D. vidéo. (ex_auv3d.m ou ex_auv3d.py).
Exercice 2.6. Poursuite. vidéo. (ex_pursuit.m ou ex_pursuit.py).
Exercise 2.8. Commande par mode glissant. vidéo. (ex_sliding.m ou ex_sliding.py).
Exercice 2.9. Groupe de robots. vidéo. (ex_group.m ou ex_group.py).
Exercice 2.10. Convoi de robots. vidéo. (ex_convoy.m ou ex_convoy.py).



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

Ouverture : Jeudi 16/02/2017, 12h
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.


Exercices. (à rendre sous Moodle)
Exercice 3.1. Robot char sur une ligne. vidéo. (ex_tank_line.m ou ex_tank_line.py).
Exercice 3.2. Voiture de Van der Pol. vidéo. (ex_vanderpol.m ou ex_vanderpol.py).
Exercice 3.3. Ancrage. vidéo. (ex_anchor.m ou ex_anchor.py). Vidéo sur une expérimentation aux fêtes nautiques de Brest 2016.



Leçon D. Commande d'un robot voilier

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

Ouverture : Jeudi 23/02/2017, 12h
Résumé: Un voilier est un exemple type de système mobile complexe et incertain pour lequel il n'existe pas d'équations d'état fiables. Pourtant ce système est facile à piloter puisque qu'il a été conçu avec cette préoccupation, mais bien évidemment aussi pour ses performances. La leçon D illustre dans ce contexte comment la méthode de pilotage utilisée par l'humain pour piloter un voilier peut être transformée en un régulateur simple et robuste. La méthodologie pourra se généraliser à d'autres types de systèmes comme le pilotage automatique d'un avion.

Exercices. (à rendre sous Moodle)
Exercice 3.5. Robot voilier. vidéo. (ex_sailboat.m ou ex_sailboat.py).
Exercice 3.6. Drone volant. vidéo. (ex_plane.m ou ex_plane.m.py).



Leçon E. Guidage, champ de potentiels artificiels

Ouverture : Jeudi 02/03/2017, 12h
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.


Exercices. (à rendre sous Moodle)
Exercice 4.5. Commande en cap d'une voiture de Dubins. vidéo. (ex_dubins.m ou ex_dubins.py).
Exercice 4.1. Poursuite sur une sphère. vidéo. (ex_earth.m ou ex_earth.py).
Exercice 4.7. Potentiels artificiels. vidéo. (ex_potential.m ou ex_potential.py).
Exercice 4.8. Flocking. vidéo. (ex_flocking.m ou ex_flocking.py).



Leçon F. Planification de chemin

Ouverture : Jeudi 09/03/2017, 12h
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.


Exercices. (à rendre sous Moodle)
Exercice 4.2. Planification d'une trajectoire. vidéo. (ex_bezier.m ou ex_bezier.py).
Exercice 4.4. Calcul d'un diagramme de Voronoï. vidéo. (ex_voronoi.m ou ex_voronoi.py).
Exercice 4.6. Chemins de Dubins. vidéo. (ex_dubinspath.m ou ex_dubinspath.py).





Liste des étudiants diplômés




51 diplômés en 2016

AL-KHAZRAJI Ayman
AUBERTOT Quentin
BARONI Kévin
BARONNIER Romain
BASSET Pierre
BEAUDOIN Maxime
BEN SAID Hela
BERNARDES Evandro
BHIRI Bassem
BOENNING Hannah
BOUKAL Yassine
BOURGOIS Auguste
CHANU Simon
COTTEN Guillaume
DALIN Eloïse
EL ABDALAOUI Zacharie
EL JAWAD Alaa
ENNOUHI M'hamed Fadil
FONTANA Werner
GALLAND Alexandre
GY Morgan
KARKOUB El Wali
LE ROCH Gwenn
LEGAY Kevin
LI Ang
LIU Wanxin
MANSOUR Fatma
MARTIN Pierre
MEHDI Nima
MESLEM Nacim
MILHEM Rémi
NEAU Guillaume
ORJUELA Rodolfo
PERTIERRE DO MONTE Sergio
PLANCHOT Antoine
RAYNEAU Vincent
RENAUDEAU Brice
ROUSSEAU Gauthier
SOLA Yoann
SOULIE Camille
SUN Tithnara
TANGUY Florian
TANGUY Noel
TERTRAIS Donatien
THIBAULT Adrien
TOMEZACH Julien
VADAINE Hugo
VANDERNOTTE Sylvain
WELTE Anthony
ZHU Lei
ZIANE Mohamed Mahrez


40 diplômés en 2017

Raphael Abellan Romita
Maha Abouzaid
Alexandre Ambiehl
Matthieu AMY
Julien Brisset
Rafael Bailón-Ruiz
Yacine Benhnini
Maxence Blond
Salima BORSALI
François Cébron
Philippe Chapuis
Jean-Louis Cougnon
Julien DAMERS
Emilien Fournier
Nicolas Gartner
Gabriel GODEAU
Yoann Guguen
Jacques Kadima
Fabrice Lallement
Pierre-Albert Landel
Matheus Laranjeira
Laëtitia Li
Damien Lucas
Fabien Niel
YANNICK MADJIDABAYE
Mohamad Mezher
Philipe MIRANDA DE MOURA
Olivier Mullier
yasmine najar
Gustav Öman Lundin
Mohamed Amine OUADRHIRI
Mohamed OUTAHAR
Eder Alejandro Rodriguez Martinez
Clément Rolinat
Joris Tillet
Quang Huy Truong
Sophie Tuton
Ulysse Vautier
Nicolas VEYLON
Jean Walter
Noelie Ramuzat