KalMOOC
Un MOOC sur le filtre de Kalman (2ième édition)
Ouverture le 10 Octobre 2017
Luc Jaulin, ENSTA-Bretagne, UBO, Lab-STICC
lucjaulin@gmail.com






  1. Introduction
  2. Moodle (dépôt des devoirs et forums)
  3. Dates
  4. Cours et énoncés des exercices
  5. Leçons et vidéos
  6. Liste des diplômés 2016
  7. Autres MOOCs
  8. Miscellaneous








Introduction à KalMOOC

Ce MOOC est gratuit et correspond aux chapitres 6,7 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 d'un cours sur le filtre de Kalman pour 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 le filtre de Kalman et qui souhaitent le faire de façon simple et intuitive, tout en restant rigoureux. Ici, nous ne traitons pas le problème de la commande (chapitres 2,3,4 du même livre) qui est rattaché à un autre MOOC : RobMOOC.

                                                  

Contexte. Un observateur d'état cherche à reconstruire le vecteur d'état d'un système dynamique à partir de toutes les données recueillies sur le système à travers le temps. Le but de cours est de présenter le filtre de Kalman qui permet une telle reconstruction, dans un contexte probabiliste où le système à observer est linéaire et le bruit gaussien. Le filtre de Kalman est utilisé dans de nombreuses applications comme la localisation en robotique mobile qui nous intéressera particulièrement. Pour une approche ensembliste (et non plus probabiliste), nous vous renvoyons vers un autre MOOC : IAMOOC.

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 doivent être installés 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 kalmoocpy.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 maîtriser les calculs d'incertitude à travers les matrices de covariance, comprendre les équations du filtre de Kalman et être capables de l'implémenter sur des cas pratiques.

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.

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. Ce cours est complètement gratuit.

Contact. Pour vos questions, essayez de passer par le forum via 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 8 leçons (numérotées A,B,C,D,E,F,G,H). Chaque leçon est constituée d'une heure de cours et de deux heures de travaux pratiques sur machine.






Dates

Ce MOOC dure 8 semaines pendant les mois d'octobre-novembre 2017. Les dates officielles de début de chaque leçon sont les suivantes.
Mardi 10/10/2017, 12h
Mardi 17/10/2017, 12h
Mardi 24/10/2017, 12h
Mardi 31/11/2017, 12h
Mardi 7/11/2017, 12h
Mardi 14/11/2017, 12h
Mardi 21/11/2017, 12h
Mardi 28/11/2017, 12h
Mardi 09/01/2018. Remise des diplômes.

Pour chaque leçon, vous devez rendre, vos programmes Matlab, Python (ou éventuellement Scilab, Octave, ou autre) associés. Vos fichiers devront être postés sur Moodle avant le mardi (12h) de la semaine qui suit. Par exemple, les exercices associés à la leçon A devront être rendus avant le mardi 17 octobre à 12h.
Tous les exercices doivent être rendus le 12 décembre car je commence les corrections juste après. Pour ceux qui sont en retard, merci de me prévenir par email.






Enoncés

Le cours et les énoncés des exercices sont donnés dans le fichier: kalmooc.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. 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. Moindres-carrés

Ouverture: Officiellement le mardi 10 octobre 2017, 12h, mais je l'ouvre dès maintenant pour une phase d'adaptation.
Résumé: Dans cette leçon A, nous donnons les objectifs de l'identification et de l'estimation de paramètres. Après avoir présenté les formes quadratiques et leur minimisation lorsque ces dernières sont convexes, nous introduisons la méthode des moindres-carrés dans le cas linéaire.



Exercice 6.1. Représentation d'une fonction quadratique
Exercice 6.2. Identification d'une parabole
Partez du fichier ex_parab.m dans kalmooc.zip ou bien du fichier ex_parab.py dans kalmoocpy.zip.
Exercice 6.3. Identification des paramètres d'un moteur à courant continu



Leçon B. Estimation de paramètres

Ouverture: mardi 17 octobre 2017, 12h
Résumé: La leçon B, propose d'étendre l'estimation au sens des moindres carrés au cas non-linéaire. Pour cela, nous introduisons les principes de l'optimisation globale dans le cas où le critère à minimiser est non-convexe. Nous donnons ensuite un algorithme non-déterministe pour l'optimisation globale.



Exercice 6.4. Estimation d'une fonction de transfert
Partez du fichier ex_transfer.m ou du fichier ex_transfer.py.
Exercice 6.5. Méthode de Monté-Carlo
Partez du fichier ex_montecarlo.m ou du fichier ex_montecarlo.py.
Exercice 6.6. Localisation par recuit simulé
Partez du fichier ex_anneal.m ou du fichier ex_anneal.py.



Leçon C. Matrices de covariance

Ouverture: mardi 24 octobre 2017, 12h
Résumé: La leçon C, introduit la notion de matrice de covariance et montre comment cette dernière peut être utilisée pour caractériser l'incertitude sur un vecteur aléatoire. Nous montrons également comment manipuler les matrices de covariance dans le but de propager les incertitudes à travers une application linéaire.



Exercice 7.1. Distribution gaussienne
Partez des fichiers ex_gauss.m ou ex_gauss.py
Exercice 7.2. Ellipses de confiance
Partez des fichiers ex_sixcov.m ou ex_sixcov.py.
Exercice 7.3. Ellipsoïde de confiance : prédiction
Partez des fichiers ex_predicov.m ou ex_predicov.py.
Exercice 7.6. Bruit brownien
Partez des fichiers ex_brownian.m ou ex_brownian.py.



Leçon D. Estimateurs linéaires orthogonaux

Ouverture: mardi 31 octobre 2017, 12h
Résumé: La leçon D, s'intéresse aux vecteurs aléatoires gaussiens et montre comment leur densité de probabilité se caractérise totalement par une espérance mathématique et une matrice de covariance. Nous donnons également les bases de l'estimation linéaire dans un contexte linéaire. Nous donnons les équations d'un estimateur linéaire centré orthogonal qui forment une des briques essentielles du filtre de Kalman.




Leçon E. Filtre de Kalman

Ouverture: mardi 7 novembre 2017, 12h
Résumé: Dans la leçon E, nous montrerons comment dans un cadre dynamique, où un système décrit par des équations d'état évolue dans le temps, un estimateur linéaire récursif peut être obtenu. Il s'agit du filtre de Kalman qui se décompose en deux étapes : la prédiction et la correction. En toute rigueur, ce filtre ne peut s'utiliser que pour des systèmes linéaires et dans un contexte de bruits additifs et gaussiens.




Leçon F. Localisation

Ouverture: mardi 14 novembre 2017, 12h
Résumé: La leçon F s'intéresse à des problèmes plus réalistes afin de mieux comprendre comment s'utilise le filtre de Kalman. Nous avons choisi la localisation car c'est dans ce contexte que le filtre de Kalman a été initialement utilisé (mission Apollo) mais aussi qu'il a été le plus appliqué. Nous allons donc nous placer dans le cas d'un robot mobile dont le mouvement est décrit par des équations d'état à temps continu évoluant dans un environnement composé d'amers ponctuels dont les positions sont connues. Lorsque le robot perçoit ces amers, il en mesure des angles (cas de la localisation goniométrique) ou des distances (trilatération). Afin d'utiliser un filtre de Kalman (qui, rappelons considère des systèmes linéaires à temps discrets), nous montrons comment transformer l'évolution du robot en une évolution linéaire et comment effectuer la discrétisation temporelle du système, en prenant en compte les bruits.




Leçon G. Observateurs d'état

Ouverture: mardi 21 novembre 2017, 12h
Résumé: La leçon G présente les observateurs d'état dans un contexte général et explique en quoi le filtre de Kalman peut être interprété comme un tel observateur. Nous introduisons trois observateurs proches du filtre de Kalman.
(1) Le filtre de Kalman-Bucy qui est une version différentielle du filtre Kalman (qui lui est discret).
(2) Le filtre de Kalman étendu ou EKF (Extended Kalman Filter) qui s'applique lorsque le système à observer est non-linéaire. Le principe est de linéariser afin se pouvoir utiliser le filtre de Kalman.
(3) L'observateur de Luenberger qui possède une différence essentielle avec le filtre de Kalman : il ne demande aucune hypothèse probabiliste. L'incertitude (ou plutôt son influence) y est exprimée à l'aide de constantes de temps.




Leçon H. Filtrage bayésien

Ouverture: mardi 28 novembre 2017, 12h
Résumé: La leçon H généralise le filtrage de Kalman dans un contexte non-linéaire et non-gaussien. On obtient alors un filtre bayésien qui cherche à manipuler directement les densité de probabilité et non pas uniquement les moyennes et les covariances. En montant d'un niveau d'abstraction, le filtre bayésien permet d'avoir une meilleure compréhension du filtre de Kalman et d'étendre ses capacités. Afin d'illustrer cela, nous nous intéresserons au lissage qui permet d'améliorer les précisions obtenues pour l'estimation d'état dans le cas où les données futures sont disponibles. Enfin, nous proposerons à une application ambitieuse du filtre de Kalman qui est le SLAM (Simultaneous Localization And Mapping). Dans un tel contexte, un robot doit se déplacer dans un environnement inconnu, tout en se localisant dans cet environnement à travers une carte qu'il est en train de construire.







Liste des 76 diplômés de l'année 2016

Ayman Al Khazraji
Frédéric Launay
Julien Brisset
Salima BORSALI
Hassan Bouchiba
Yassine BOUKAL
Jean-Louis Cougnon
Jean-Alexis Delamer
Gaël Ecorchard
Ibrahima Faye
Aïda Feddaoui
Maxime FERRERA
Salameh Jack
François Lamoline
Dory Merhy
ALOUANE Mohamed Amine
Julien Moreau
Lucile Rossi
Jonathan SAVIN
Jean-Baptiste Sorba
Pauline Thémans
Philippe Chapuis
Mahmoud Abboud
Raphael Abellan-Romita
Maha Abouzaid
Mahab AL JOHANI
Abdullah Al Mahmoud
Rakan Ali
Simon Allenic
Robin BAUDINO
Yacine Benhnini
Maxime Berolo
Mohammed Bin salamah
William Blachère
Arifa Bou Orm
François CÉBRON
Matthieu Chailloux
Daniel Chaya
Romain Da Canal
Julien DAMERS
Mouhamadou Diallo
Justin Dourlens
Mohamed EL ALAMI
Mariam EL HELOU
Majed EL KADRI
Nancy EL SAMRA
Emilien Fournier
Gabriel GODEAU
Yoann Guguen
Morgan Gy
Louisa Henry
Alae Eddine Hmamouche
Hiba Hnaini
Fabrice Lallement
Perrine Lohues
Mathieu Mayssal
Mohamad Mezher
Philipe MIRANDA DE MOURA
Alexis Murail
Yasmine Najar
Pascal Nguyen
Mohamed Amine OUADRHIRI
Mohamed OUTAHAR
Xavier Quelard
Clément Rolinat
Thomas Rougeau
Emilien Tankéré
Joris Tillet
Sophie Tuton
REMI VALENTON
Nicolas VEYLON
Mael Vigouroux
Jean Walter
Adam Wild
Thomas Xavier Caturra
Jacques Kadima







Miscellaneous

Films de quelques robots Lab-STICC/ENSTA-Bretagne associés à ce MOOC : Vidéo 1, Vidéo 2.