KalMOOC
Un MOOC sur le filtre de Kalman
4ième édition du au
Luc Jaulin

Lab-STICC UBO GDR MACS GDR Robotique ENSTA Bretagne DGA ROBEX Gth Rob



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








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 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.
: télécharger les fichiers Matlab utiles
: télécharger les fichiers Python utiles.
Pour Python, utiliser la librairie roblib.py :
Un petit help sur cette librairie est donné ici :



Postrequis. 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 38 points atteignables), 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. Ce cours est complètement gratuit.



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



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. Les dates officielles de début de chaque leçon sont les suivantes.
, 12h, Leçon A
, 12h, Leçon B
, 12h, Leçon C
, 12h, Leçon D
, 12h, Leçon E
, 12h, Leçon F
, 12h, Leçon G
, 12h, Leçon H
, 12h, 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 à 12h.
Pour ceux qui sont en retard, merci de me prévenir par email.






Fichiers

Enoncés avec le 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.
Une petit help sur la librairie Python.






Leçons et Vidéos



Leçon A. Moindres-carrés

Ouverture: officiellement le , 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 6.1. Représentation d'une fonction quadratique (1 point)
Exercice 6.2. Identification d'une parabole (1 point)
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 (1 point)



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.



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



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 fichier Python associé à cette leçon peut être trouvé sous le nom de 7.00_lesson.py

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



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.







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.
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
Rémi Valenton
Nicolas Veylon
Mael Vigouroux
Jean Walter
Adam Wild
Thomas Xavier Caturra
Jacques Kadima





Liste des 84 diplômés de l'année 2017

Ghina Abdallah
Jasser Al Assaf
Mohanad Al Hamdan
Sultan Al Frawy
Moayad Al Zaidi
Elias Aoun Durand
Antony Arslanyan
Denis Bacchus
Marion Badel
Yvan-Bernard Baki
Victor Bares
Paul Bouquet
Juliette Brugier
Jad Chebbo
Abdelmounim Chentouf
Evann Clavier
Alexandre Corazza
MariaLuiza Costa Vianna
Baptiste Cros
Alexandre Degurse
Sarah Delmas
Téva Demangeot
Amadou-Sall Dia
Maxime Do Rosario
Igor Dos Santos Novais
Romain Dussot
Aoun Eldandachli
Julien Feutrie
Pierre Filiol
Jérôme Gambini
Joseline-Maurelle Gohep Watso Atso
Paul-Antoine Grau
Gregor Hadjidakis
Quentin Hidderley
Alexandre Houdeville
Ibrahim Krayem
Olivier Laurendin
Lucie Lefevre
Michel Limousin
Mathieu Logario
Jalal Matar
Doja Mchaymech
Abdulaziz Mushayt
Mahmoud Naamani
Elodie Noëlé
Fabrice Poirier
Abbas Ramadan
Aurel-Cedric Songo Sonkeng
Julie Terseur
Jordane Tsafack
Louis Valéry
Anne-Laure Wozniak
Charles Coquet
Thamer Al Doughaish
Julien Dupeyroux
Baptiste Gradoussoff
Olivier Forti
Mohamed Fnadi
Meddour Ghozlane
Hafsa Bahri
Lucas Joseph
Thameur Kidar
Abdenour Kifouche
Ghani Kissoum
Philippe Lambert
Laëtitia Li
Nacim Meslem
Mathieu Naslin
Bensafi Noureddine
Alice Paschal
David Pérez Morales
Benoît Pesenti
Renaud Poncelet
Amadou Sagna
Guilherme Schvarcz Franco
Amriche Taous
Oussama Yaakoubi
Charlie Goutorbe
Pierre Benet
Guilhem Dubarry
Matthieu Faure
Julien Khalile
Khaled Benkhoud
Farouq Benchallal






Liste des 81 diplômés de l'année 2018

Caine Abdallah
Mehdi Abdelli
Philibert Adam
Abdulaziz Albrikeit
Mohammed Al Sakait
Osama Al Shuaibi
Abdulaziz Al Sudais
Alexandre Argento
Ameni Azzabi
Alexis Baulu
Kevin Bedin
Gwendal Blot
Olivier Bordron
Matthieu Bouveron
Quentin Cardinal
Colin Cros
Jérémy Cornille
Cyril Cotsaftis
Alexandre Courjaud
Riwan Cuinat
Hugo Daguerre
Georges Daher
Coraline Delblond
Marine Derouet
Quentin Ducasse
Audrey Ducruet
Rami Duyé
Ibrahim El Khatib
Emmanuel Falck
Clément Fauchereau
Manuella Feunkeu-Mfupa
Romane Fléchard
Nathan Fourniol
Matthieu Furet
Damien Goaper
Jonathan Gomis
Nicolas Hanachowicz
Christian Harb
Adrien Jeanvoine
Corentin Jegat
Jean-Luc Kersulec
Arnaud Klipfel
Yao Paul Williams Kouassi
Erwann Landais
Laëtitia Lavollée
Guillaume Le Boucher
Aurélien Lebrun
Maximilian Lesellier
Vincent Lheureux
Pierre Lledo
Luc Longin
Anouar Mahla
Teddy Martin
Pierre Mathieu
Adrien Michelet-Gignoux
Hmidi Mohamed Hedi
Amara Mohand Oussalem
Jean-Baptiste Moisinac
Etienne Monnier
Vincent Mouraux
Vincent Mussot
Eloise Noziere
Nafissath Odedele
Fabien Pons
Axel Porlan
Simon Queyrut
Quentin Rey
Ali Saad
Caine Silva
Mahmoud Souayfan
Henri Stoven
Georges Tanios
Thibaud Toullier
Ange Valli
Hamdi Walid
Nelson Wouogang Nzesseu
Mohammad Yassine
David Pallier
Driss Tayebi
Christian Koumlah Mbey