KalMOOC
Un MOOC sur le filtre de Kalman
Ouverture de la 10ième édition :
-->
Luc Jaulin, ENSTA, UBO, Lab-STICC
jaulin.kalmooc@gmail.com



Lab-STICC UBO GDR MACS GDR Robotique ENSTA Bretagne DGA ROBEX Sperob SAGIP



  1. Introduction
  2. Programme avec les dates et les points
  3. Rendus
  4. Fichiers
  5. Leçons et vidéos
  6. Autres MOOCs








Introduction à KalMOOC

Ce MOOC est gratuit et correspond plus ou moins 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 le 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 récoltées sur le système à travers le temps. Le but de ce 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.


Objectif

Après ce cours, vous devriez maîtriser les calculs d'incertitudes à 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.
Pour avoir votre diplôme, il vous faut un minimum de 30 points (sur les 43 points atteignables), ce qui vous permet de ne pas faire tous les exercices.
Un exemple type de diplôme :


Inscription

Pour s'inscrire, il faut aller sur
L'inscription n'est pas obligatoire pour suivre les vidéos, mais est indispensable pour avoir le diplôme.


Vidéo de correction

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


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.






Programme avec les dates et les points

Leçon A. Méthode des moindres-carrés , 12:00.
Exercice 1. Représentation d'une fonction quadratique (1 point)
Exercice 2. Identification d'une parabole (1 point)
Exercice 3. Identification des paramètres d'un moteur à courant continu (1 point)
Exercice 4. Estimation d'une fonction de transfert (1 point)

Leçon B. Estimation de paramètres , 12:00.
Exercice 5. Méthode de Newton pour la localisation (1 point)
Exercice 6. Méthode de Monté-Carlo (1 point)
Exercice 7. Localisation par recuit simulé (2 points)

Leçon C. Matrices de covariance , 12:00.
Exercice 8. Distribution gaussienne (1 point)
Exercice 9. Ellipses de confiance (1 point)
Exercice 10. Ellipsoïde de confiance : prédiction (1 point)
Exercice 11. Bruit brownien (1 point)

Leçon D. Estimateurs linéaires orthogonaux , 12:00.
Exercice 12. Ellipsoïde de confiance : correcteur (1 point)
Exercice 13. Propagation de matrices de covariance (1 point)
Exercice 14. Estimateur linéaire pour la résolution de trois équations (1 point)
Exercice 15. Estimateur linéaire pour l'estimation des paramètres d'un moteur électrique (1 point)
Exercice 16. Trochoïde (1 point)

Leçon E. Filtre de Kalman , 12:00.
Exercice 17. Filtre de Kalman pour la résolution de trois équations (1 point)
Exercice 18. Filtre de Kalman sur trois pas (1 point)
Exercice 19. Estimation des paramètres d'un moteur électrique (1 point)
Exercice 20. Estimation de la température (1 point)

Leçon F. Localisation , 12:00.
Exercice 21. Localisation à partir de la mesure des distances aux murs (1 point)
Exercice 22. Marcheur aveugle (1 point)
Exercice 23. Localisation à l'estime (1 point)
Exercice 24. Localisation goniométrique (2 points)
Exercice 25. Localization using a Lidar (1 point)

Leçon G. Observateurs d'état , 12:00.
Exercice 26. Estimation d'état et commande d'un pendule inversé (2 points)
Exercice 27. Suivi d'un bateau par deux radars (1 point)
Exercice 28. Localisation d'un robot dans une piscine (1 point)
Exercice 29. Instantaneous localization (1 point)

Leçon H. Filtrage bayésien , 12:00.
Exercice 30. Densité conditionnelle et densité marginale (1 point)
Exercice 31. Prévision météo (1 point)
Exercice 32. Robot porte (1 point)
Exercice 33. Le robot dans la forêt (1 point)
Exercice 34. Bayes rule with Kalman (1 point)
Exercice 35. Dérivation des équations du lisseur de Kalman (1 point)
Exercice 36. SLAM dans un contexte de robotique sous-marine (3 points)
Exercice 37. Filtre particulaire (2 points)

Fermeture : , 12:00.

Remise des diplômes : , 12:00.






Rendus

Pour chaque leçon, vous devez rendre, pour chaque exercice, le programme Python, Matlab (ou autre) associé.
Vos fichiers devront être envoyés par email à jaulin.kalmooc@gmail.com
avant le jeudi (12h) de la semaine qui suit.
Il faudrait m'envoyer un fichier pdf avec des explications et des captures écran du programme réalisé.






Fichiers

Enoncés avec le cours.

Sources Latex + figures du polycopié (utile si vous voulez reprendre des éléments pour vos propres cours)

Programmes de démarrage pour les utilisateurs de Matlab.
Programmes de démarrage pour les utilisateurs de Python.
Librairie à utiliser par les utilisateurs de Python roblib.py.







Leçons et Vidéos



Leçon A. Méthode des moindres-carrés

Ouverture: , 12h (ouvert dès maintenant pour permettre une 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 1. Représentation d'une fonction quadratique
Pour les utilisateurs Python, vous pouvez partir du fichier quadra.py dans kalmoocpy.zip.

Exercice 2. Identification d'une parabole
Partez du fichier ex_parab.m dans kalmooc.zip ou bien du fichier parab.py dans kalmoocpy.zip.

Exercice 3. Identification des paramètres d'un moteur à courant continu

Exercice 4. Estimation d'une fonction de transfert
Partez du fichier ex_transfer.m ou du fichier transfer.py.




Leçon B. Estimation de paramètres

Ouverture: , 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.




Leçon C. Matrices de covariance

Ouverture: , 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.




Leçon D. Estimateurs linéaires orthogonaux

Ouverture: , 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: , 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: , 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 le, 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: , 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: , 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.