RobMOOC
Un MOOC sur la commande non-linéaire des robots
3ième é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 et cours (en pdf)
  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 troisième édition (la première ayant eu lieu du 22 février au 04 avril 2016 et la deuxième 2 février au 15 mars 2017) 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 de ce cours. Ce document permet à certains étudiants en thèse d'obtenir des crédits ECTS (European Credit Transfert System) que demandent les écoles doctorales.
Pour avoir votre diplôme, il vous faut un minimum de 20 points, ce qui vous permet de ne pas faire tous les exercices.

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 proche 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 travaux pratiques sur machine.
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 sont les suivantes.
Jeudi 01/02/2018, 12h : Leçon A
Jeudi 08/02/2018, 12h : Leçon B
Jeudi 15/02/2018, 12h : Leçon C
Jeudi 22/02/2018, 12h : Leçon D
Jeudi 01/03/2018, 12h : Leçon E
Jeudi 08/03/2018, 12h : Leçon F
Jeudi 22/03/2018. Remise des diplômes.

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 08 février 12h.






Enoncés

Les énoncés sont téléchargeables avec le cours:
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. Parfois, on ne vous demande pas rendre un programme Matlab ou Python, mais une correction sur papier. Dans ce cas, postez un scan (pris par votre téléphone, par exemple) ou un fichier en pdf.









Leçons et Vidéos





Leçon A. Introduction au bouclage linéarisant

Ouverture : Jeudi 01/02/2018, 12h (officiellement)
Cette leçon est volontairement ouverte en avance pour permettre une phase d'adaptation
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 (1 point)
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 (1 point)
ex_pools.m ou ex_pools.py.
Exercice 2.3. Train de robots (1 point)
ex_train.m ou ex_train.py.



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

Ouverture : Jeudi 08/02/2018, 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 (1 point)
Exercice 2.6. Poursuite (1 point)
Exercise 2.8. Commande par mode glissant (1 point)
Exercice 2.9. Groupe de robots (1 point)
Exercice 2.10. Convoi de robots (1 point)



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

Ouverture : Jeudi 15/02/2018, 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 (1 point)
Exercice 3.2. Voiture de Van der Pol (1 point)
Exercice 3.3. Ancrage (1 point)



Leçon D. Commande de véhicules

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

Ouverture : Jeudi 22/02/2018, 12h
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'il a été conçu avec cette préoccupation, mais bien é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.

Exercices. (à rendre sous Moodle)
Exercice 3.5. Robot voilier (2 point)
Exercice 3.6. Avion (2 point)
Exercice 3.7. Quadrotor (2 point)
Exercice 3.8. Isobath (2 point)




Leçon E. Guidage, champ de potentiels artificiels

Ouverture : Jeudi 01/03/2018, 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 (1 point)
Exercice 4.1. Poursuite sur une sphère (1 point)
Exercice 4.7. Potentiels artificiels (1 point)
Exercice 4.8. Flocking (1 point)
Exercice 4.9. Traffic jam (2 point)





Leçon F. Planification de chemin

Ouverture : Jeudi 08/03/2018, 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 (1 point)
Exercice 4.4. Calcul d'un diagramme de Voronoï (1 point)
Exercice 4.6. Chemins de Dubins (2 point)





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