Le filtre de Kalman : comment estimer, à partir de mesures imprécises, où se trouve une voiture et à quelle vitesse elle roule
La combinaison de deux mesures et le gain de Kalman, le filtre comme moyenne cumulée, le modèle d’état, la prédiction et la correction, le suivi d’une voiture par GPS avec estimation de la vitesse non mesurée, le réglage des bruits Q et R, l’optimalité et les extensions non linéaires.
Série Bases de l’IA Partie 41 sur 52
- Carte de l’intelligence artificielle : qu’est-ce qui est quoi et comment tout s’emboîte
- Brève histoire de l’intelligence artificielle : de Turing aux modèles de langage
- Données, modèle, entraînement, inférence : les notions de base sur un seul exemple
- Lire la notation mathématique : symboles, indices, sommes et quantificateurs
- Ensembles et relations : les briques dont sont faites les définitions en IA
- Fonctions et applications : pourquoi tout modèle d’IA est une fonction
- Logique et démonstrations : les règles selon lesquelles on raisonne en IA
- Graphes et arbres : la structure sur laquelle reposent la recherche et les réseaux de neurones
- Algèbre linéaire pour l’apprentissage automatique : vecteurs, matrices et pourquoi l’IA multiplie surtout
- Dérivées, gradient et règle de dérivation en chaîne : comment un modèle sait dans quelle direction apprendre
- Descente de gradient : comment un modèle apprend
- Qu’est-ce que la probabilité : du lancer de dé aux axiomes de Kolmogorov
- Probabilité conditionnelle et théorème de Bayes : comment réviser une estimation quand on apprend du nouveau
- Variable aléatoire et fonction de répartition : une seule fonction qui dit tout de la loi
- Fonction de densité et fonction de masse : pourquoi une variable continue a une probabilité nulle en chaque point
- Espérance, variance et covariance : où se situe une loi, quelle est sa largeur et ce qui varie avec quoi
- Panorama des lois de probabilité : Bernoulli, binomiale, Poisson, uniforme, normale et exponentielle
- Loi des grands nombres et théorème central limite : pourquoi les moyennes sont si prévisibles
- Statistique et estimation de paramètres : maximum de vraisemblance, MAP et intervalles de confiance
- Théorie de l’information : entropie, entropie croisée et divergence KL — d’où viennent les fonctions de perte
- Recherche dans l’espace d’états : BFS, DFS, UCS et A* en animations
- Jeux et adversaires : minimax, élagage alpha-bêta et Monte Carlo tree search
- Satisfaction de contraintes : backtracking, propagation de contraintes et AC-3 sur un sudoku et une carte des régions tchèques
- Logique et systèmes à base de connaissances : chaînage avant et arrière, résolution et systèmes experts
- Planification : STRIPS, monde des blocs, heuristiques par relaxation et planification dans les agents IA
- Recherche locale et recuit simulé : un voyageur de commerce à travers les chefs-lieux de région tchèques
- Algorithmes génétiques : population, croisement, mutation et sélection sur un sac à dos de randonnée
- Stratégies d’évolution et programmation génétique : de la règle du cinquième à la loi de Kepler
- Optimisation par colonies de fourmis : comment une piste de phéromone trouve un chemin court
- Optimisation par essaim de particules : inertie, expérience propre et expérience de l’essaim
- Neuroévolution : faire évoluer les poids et la forme des réseaux de neurones, et l’algorithme NEAT
- Ensembles flous et fonctions d’appartenance : comment écrire « un peu chaud »
- Logique floue et probabilité : pourquoi « un peu chaud » ne veut pas dire « probablement chaud »
- Logique floue : t-normes, implications et règles SI–ALORS
- Commande floue : Mamdani et Sugeno, du ventilateur au pendule inversé sur un chariot
- Clustering flou : l’algorithme fuzzy c-means et les points entre les clusters
- Systèmes neuro-flous (ANFIS) : des règles floues qui apprennent à partir des données
- Chaînes de Markov : matrice de transition, distribution stationnaire et PageRank
- Modèles de Markov cachés : l’algorithme de Viterbi et le casino malhonnête
- Réseaux bayésiens : pourquoi l’herbe est mouillée et ce que cela implique pour l’arroseur
- Le filtre de Kalman : comment estimer, à partir de mesures imprécises, où se trouve une voiture et à quelle vitesse elle roule
- Types d’apprentissage automatique : supervisé, non supervisé, semi-supervisé et plus
- Prompts, contexte et RAG : comment donner au modèle les bonnes informations
- Autoencodeurs variationnels (VAE) : de nouvelles images à partir d’un espace latent continu
- Réseaux antagonistes génératifs (GAN) : le faussaire contre le détective
- Modèles de diffusion : comment une image naît du bruit pur
- Processus de décision markoviens : états, actions, récompenses et équations de Bellman
- Q-learning et DQN : apprendre la valeur des actions, du tableau au réseau de neurones
- Policy gradient et PPO : apprendre directement la politique
- Comment fonctionne un agent IA : un modèle de langage en boucle avec des outils
- Programmer avec des agents IA : consigne, tests et vérification
- Évaluation et sécurité des systèmes d’IA : comment mesurer et comment surveiller
Programme complet de la série 52 sur 83 sujets publiés
- Comment combiner deux mesures imprécises et ce qu’est le gain de Kalman.
- Comment le filtre alterne prédiction selon le modèle et correction selon la mesure — et estime même ce que personne ne mesure.
- Pourquoi le réglage des bruits Q et R compte autant et comment le filtre s’en sort dans un monde non linéaire.
Utile à connaître avant : Modèles de Markov cachés : l’algorithme de Viterbi et le casino malhonnête, Panorama des lois de probabilité : Bernoulli, binomiale, Poisson, uniforme, normale et exponentielle
Apollo 11 est parti vers la Lune avec un ordinateur de bord qui avait moins de mémoire qu’une calculatrice graphique d’aujourd’hui. La navigation devait pourtant estimer en continu, à partir de mesures imprécises des étoiles, du radar et des capteurs inertiels, où se trouvait le vaisseau et à quelle vitesse il volait. Elle s’est appuyée sur une méthode que Rudolf Kálmán a publiée en 1960 et que Stanley Schmidt a mise en pratique pour la NASA. Le filtre de Kalman se trouve aujourd’hui dans chaque téléphone qui combine le GPS et l’accéléromètre, dans chaque drone et dans chaque voiture qui se maintient seule dans sa voie. Cette partie clôt le module consacré aux modèles probabilistes.
Elle fait suite aux parties Modèles de Markov cachés et Panorama des lois de probabilité.
1. Deux mesures imprécises valent mieux qu’une
Commençons simplement. Nous mesurons deux fois la distance qui nous sépare d’un phare : une fois avec un instrument précis — 100 m avec une incertitude (écart type) de 5 m —, une autre fois avec un instrument grossier — 110 m avec une incertitude de 10 m. Quelle est la meilleure estimation ?
Théorème — combinaison de deux estimations normales
Si l’on dispose de deux estimations indépendantes N(m1, σ12) et N(m2, σ22), l’estimation combinée est normale, avec
m = m1 + K (m2 − m1), σ2 = (1 − K) σ12, où K = σ12 / (σ12 + σ22).
De manière équivalente, 1/σ2 = 1/σ12 + 1/σ22 : les précisions s’additionnent.
Démonstration. L’estimation combinée a une densité proportionnelle au produit des deux densités (théorème de Bayes, avec la première estimation comme loi a priori et la seconde comme vraisemblance). Dans l’exposant, deux fonctions quadratiques s’additionnent :
−(x − m1)2 / (2σ12) − (x − m2)2 / (2σ22) = −½ (1/σ12 + 1/σ22) x2 + (m1/σ12 + m2/σ22) x + const.
Une densité d’exposant −½ ax2 + bx est, après complétion du carré, normale de variance 1/a et d’espérance b/a. On en déduit 1/σ2 = 1/σ12 + 1/σ22, donc σ2 = σ12σ22 / (σ12 + σ22) = (1 − K) σ12, et m = σ2 (m1/σ12 + m2/σ22) = (1 − K) m1 + K m2 = m1 + K (m2 − m1). ∎
Prenez la première estimation et déplacez-la vers la seconde — d’autant plus que vous faites confiance à la seconde. Le nombre K indique quelle part de l’écart reprendre. Le résultat est plus précis que chacune des mesures prise isolément ; même une mesure grossière apporte de l’information.
m = m1 + K (m2 − m1), K = σ12 / (σ12 + σ22), σ2 = (1 − K) σ12
- m1, σ12
- la première estimation (en bleu sur la figure) est le point de départ — c’est à partir d’elle qu’on se déplace ; sa variance au numérateur de K signifie : moins on fait confiance à la première estimation, plus on a le droit de s’en éloigner
- m2, σ22
- la seconde estimation (en ambre) ; elle n’entre dans la formule que par l’écart m2 − m1 — si les deux coïncidaient, il n’y aurait rien à corriger. Sa variance au dénominateur de K réduit le gain : on fait peu confiance à une mesure grossière
- K
- le gain de Kalman, un nombre entre 0 et 1 — la part de l’écart à reprendre. C’est la part de l’incertitude de la première estimation dans l’incertitude totale, si bien que l’estimation la plus précise « tire » le résultat vers elle
- m, σ2
- l’estimation combinée (en vert) ; le facteur 1 − K < 1 garantit que la nouvelle incertitude est plus petite que la première — chaque mesure, même grossière, apporte quelque chose
Ici K = 25 / (25 + 100) = 0,2 : nous reprenons un cinquième de l’écart et obtenons 102 m avec une incertitude de √20 ≈ 4,5 m — moins que les 5 m de l’instrument précis. Ce nombre K est le gain de Kalman, et tout le filtre n’est rien d’autre que cette étape, répétée dans le temps.
Exemple — combinaison des mesures 100 ± 5 m et 110 ± 10 m pas à pas
Variances : σ12 = 52 = 25, σ22 = 102 = 100.
Gain : K = 25 / (25 + 100) = 0,2.
Espérance : m = 100 + 0,2 · (110 − 100) = 102 m — la même chose que la moyenne pondérée 0,8 · 100 + 0,2 · 110.
Variance : σ2 = (1 − 0,2) · 25 = 20, σ = √20 ≈ 4,47 m.
Vérification par les précisions : 1/25 + 1/100 = 0,04 + 0,01 = 0,05 = 1/20. ✓
2. Mesurer plusieurs fois la même grandeur
Nous mesurons la température d’une pièce avec un thermomètre d’incertitude 2 °C, cinquante fois de suite, et après chaque mesure nous combinons la nouvelle valeur avec l’estimation courante. Après cinquante mesures, l’estimation vaut 19,895 °C — exactement la moyenne arithmétique de toutes les mesures — et l’incertitude 0,283 °C = 2/√50. Pour une grandeur qui ne change pas, le filtre de Kalman n’est donc qu’une moyenne cumulée ordinaire. Il devient intéressant quand la grandeur varie dans le temps.
Théorème — pour une grandeur constante, le filtre est une moyenne cumulée
Nous mesurons une constante avec un instrument de variance σ2 et partons d’une estimation si incertaine que la première mesure l’écrase complètement (v0 → ∞). Alors, après k mesures,
Kk = 1/k, mk = mk−1 + (1/k) (zk − mk−1) = (z1 + … + zk) / k, vk = σ2/k.
Démonstration par récurrence. Pour k = 1, K1 = v0 / (v0 + σ2) → 1, donc m1 = z1 et v1 = σ2. Si vk−1 = σ2/(k − 1), alors Kk = vk−1 / (vk−1 + σ2) = (1/(k − 1)) / (1/(k − 1) + 1) = 1/k et vk = (1 − 1/k) · σ2/(k − 1) = σ2/k. Si mk−1 est la moyenne des k − 1 premières mesures, alors mk = ((k − 1) mk−1 + zk) / k est la moyenne des k mesures. ∎
Dans une moyenne de dix nombres, la dixième mesure pèse un dixième — et c’est exactement le poids que lui donne le filtre. Plus vous en savez déjà, moins une nouvelle mesure vous fait bouger. L’incertitude décroît comme 1/√k : pour diviser l’erreur par deux, il vous faut quatre fois plus de mesures.
Exemple — les trois premières mesures de température
Notre filtre part d’une estimation de 0 °C avec une variance de 106 (incertitude de 1 000 °C — « je ne sais rien »), la variance de mesure est 22 = 4.
1re mesure 23,098 °C : K1 = 106 / (106 + 4) ≈ 1, estimation 23,098 °C, variance 4,00.
2e mesure 21,967 °C : K2 = 4 / (4 + 4) = 1/2, estimation 23,098 + ½ · (21,967 − 23,098) = 22,533 °C, variance 2,00.
3e mesure 16,630 °C : K3 = 2 / (2 + 4) = 1/3, estimation 22,533 + ⅓ · (16,630 − 22,533) = 20,565 °C, variance 1,33 = 4/3.
Vérification : (23,098 + 21,967 + 16,630) / 3 = 20,565 °C — une simple moyenne. Après cinquante mesures, la variance vaut 4/50 = 0,08 et l’incertitude √0,08 ≈ 0,283 °C.
3. Le modèle d’état
Définition — modèle d’état linéaire
L’état caché xk ∈ ℝn évolue, et la mesure zk l’observe avec du bruit :
xk = F xk−1 + wk, wk ~ N(0, Q), zk = H xk + vk, vk ~ N(0, R).
F est la matrice de transition, H la matrice d’observation, Q la covariance du bruit de processus et R la covariance du bruit de mesure.
C’est le modèle de Markov caché de la partie précédente, sauf que l’état n’est plus « dé honnête ou dé truqué », mais un vecteur de nombres — par exemple la position et la vitesse. La physique dit comment l’état évolue à peu près (F), les à-coups aléatoires et l’imprécision du modèle sont résumés par Q. L’instrument ne voit qu’une partie de l’état (H) et se trompe de R.
Notre exemple : une voiture roule sur une route à une vitesse à peu près constante de 15 m/s, mais le conducteur freine ou accélère de temps en temps — une accélération aléatoire d’écart type 0,5 m/s². L’état est (position, vitesse), le pas vaut 1 s, donc F = [[1, 1], [0, 1]] : la nouvelle position est l’ancienne plus la vitesse. Le GPS ne mesure que la position, avec une incertitude de 8 m : H = [1, 0], R = 64.
Définition — matrice de covariance et loi normale multidimensionnelle
Pour un vecteur aléatoire X ∈ ℝn d’espérance μ = E[X], la matrice de covariance est Σ = E[(X − μ)(X − μ)T], c’est-à-dire Σij = cov(Xi, Xj). La diagonale contient les variances des composantes, le reste les covariances ; la matrice est symétrique et semi-définie positive.
La notation X ~ N(μ, Σ) désigne la loi normale multidimensionnelle de densité proportionnelle à exp(−½ (x − μ)T Σ−1 (x − μ)). Pour une application linéaire, AX + c ~ N(Aμ + c, A Σ AT), et la somme de vecteurs normaux indépendants est normale, de covariance égale à la somme des covariances.
La matrice de covariance, c’est « l’incertitude pour plusieurs nombres à la fois ». Sur la diagonale figure à quel point nous sommes incertains de la position et à quel point de la vitesse. Hors de la diagonale, on lit si les erreurs vont ensemble : une covariance positive entre position et vitesse signifie « si nous avons placé la voiture trop en avant, nous lui avons probablement aussi attribué une vitesse trop grande ».
Exemple — d’où vient la matrice Q
Pendant un pas de durée Δt, la voiture subit une accélération aléatoire constante a ~ N(0, q2). D’après les formules du mouvement uniformément accéléré :
pk = pk−1 + Δt · vk−1 + ½ Δt2 a, vk = vk−1 + Δt · a.
Sans bruit, cela donne F = [[1, Δt], [0, 1]]. Le bruit est w = g a avec le vecteur g = (½ Δt2, Δt), et selon la règle AΣAT ci-dessus
Q = q2 g gT = q2 [[Δt4/4, Δt3/2], [Δt3/2, Δt2]].
Pour Δt = 1 s et q = 0,5 m/s² : Q = 0,25 · [[0,25; 0,5], [0,5; 1]] = [[0,0625; 0,125], [0,125; 0,25]]. En une seconde, l’accélération aléatoire ajoute donc une incertitude de √0,0625 = 0,25 m sur la position et de 0,5 m/s sur la vitesse — et les deux erreurs ont le même signe, d’où une covariance positive. C’est exactement cette matrice qui figure dans le code ci-dessous.
4. Prédiction et correction
Algorithme — filtre de Kalman
L’estimation est une loi normale d’espérance x̂ et de covariance P. À chaque pas :
Prédiction : x̂− = F x̂, P− = F P FT + Q.
Correction : K = P− HT (H P− HT + R)−1, x̂ = x̂− + K (z − H x̂−), P = (I − K H) P−.
Prédiction : « d’après la physique, la voiture devrait maintenant être ici » — et comme la physique n’est pas parfaite, l’incertitude augmente un peu. Correction : une mesure arrive ; l’écart entre la mesure et la prédiction (l’innovation) n’est repris qu’à hauteur de K, selon ce à quoi on fait le plus confiance. C’est la combinaison de deux mesures du premier chapitre — l’une des « mesures » est la prédiction tirée du pas précédent, l’autre le GPS. La covariance P retient en plus le lien entre l’erreur de position et l’erreur de vitesse, et c’est grâce à elle que le filtre corrige aussi la vitesse, que personne ne mesure.
Les couleurs des décompositions ci-dessous correspondent aux figures : la prédiction (auparavant « première estimation ») en bleu, la mesure en ambre, le résultat en vert, le gain en violet.
x̂− = F x̂, P− = F P FT + Q
- x̂−, P−
- la prédiction pour ce pas, avant l’arrivée de la mesure — elle joue le rôle de la « première estimation » dans la combinaison de deux mesures
- F … FT
- le modèle fait avancer l’estimation ; l’incertitude se propage selon la règle AΣAT (pour la voiture : une vitesse incertaine se traduit en une seconde par une incertitude sur la position). FP ne suffit pas, car la covariance est une grandeur quadratique — elle se multiplie à gauche et à droite
- Q
- le modèle n’est pas parfait (le conducteur freine), donc l’incertitude s’ajoute à chaque pas — sans Q, P tendrait vers zéro et le filtre cesserait d’écouter les mesures
K = P− HT (H P− HT + R)−1
- H P− HT
- l’incertitude de la prédiction traduite dans le langage de l’instrument (pour la voiture, seulement la variance de la position) — elle correspond à σ12
- R
- la variance de mesure, qui correspond à σ22 ; la somme entre parenthèses est la variance de l’innovation S — de combien la mesure et la prédiction peuvent diverger par pur hasard
- P− HT
- la covariance de tout l’état avec la grandeur mesurée ; grâce à elle, même la vitesse, que personne ne mesure, reçoit un gain non nul — l’erreur de position et l’erreur de vitesse sont liées
- K
- le gain de Kalman, un nombre par composante de l’état ; une inverse au lieu d’une division uniquement parce que la mesure peut être un vecteur
x̂ = x̂− + K (z − H x̂−), P = (I − K H) P−
- x̂−, P−
- la prédiction — le point de départ à partir duquel on se déplace
- z
- la nouvelle mesure (sur la figure, les points GPS en ambre) ; le seul endroit par lequel les données entrent dans l’estimation
- H
- convertit la prédiction de l’état en ce que l’instrument devrait afficher ; on ne peut pas soustraire directement la mesure et l’état, car le GPS ne voit que la position, pas la vitesse
- K
- quelle part de l’innovation z − Hx̂− reporter dans chaque composante de l’état
- x̂, P
- l’estimation corrigée (en vert sur la figure) ; le facteur I − KH réduit l’incertitude — d’autant plus que nous avons repris une grande part de la mesure
import numpy as np
F = np.array([[1, 1], [0, 1]]) # position += vitesse
H = np.array([[1, 0]]) # on ne mesure que la position
Q = 0.5**2 * np.array([[1/4, 1/2], [1/2, 1]]) # accélération aléatoire
R = np.array([[8**2]]) # GPS ± 8 m
def kalman(mereni, x, P):
for z in mereni:
x, P = F @ x, F @ P @ F.T + Q # prédiction
K = P @ H.T @ np.linalg.inv(H @ P @ H.T + R)
x = x + K @ (z - H @ x) # correction selon l’innovation
P = (np.eye(2) - K @ H) @ P
yield x, P
Exemple — les deux premiers pas du filtre sur les données de la voiture
Départ. La première mesure GPS est z1 = 8,44 m. Le filtre part de la position 8,44 m, d’une vitesse nulle et d’une grande incertitude P0 = [[100; 0], [0; 100]] (10 m et 10 m/s). La correction par cette même mesure ne change pas la position (l’innovation est nulle), elle réduit seulement sa variance : K = 100 / (100 + 64) = 0,610, P11 = (1 − 0,610) · 100 = 39,02.
Prédiction pour la 2e seconde. x̂− = (8,44 + 0; 0) = (8,44; 0,00). La covariance FPFT ajoute la variance de la vitesse à celle de la position (position += vitesse) :
P− = [[39,02 + 100 + 0,0625; 100 + 0,125], [100 + 0,125; 100 + 0,25]] = [[139,09; 100,13], [100,13; 100,25]].
Correction. Mesure z2 = 23,23 m, innovation y = 23,23 − 8,44 = 14,78 m, de variance S = 139,09 + 64 = 203,09.
K = (139,09; 100,13) / 203,09 = (0,685; 0,493),
x̂ = (8,44 + 0,685 · 14,78; 0 + 0,493 · 14,78) = (18,57 m; 7,29 m/s).
Après deux mesures, le filtre « sait » que la voiture bouge, alors que personne n’a mesuré la vitesse : il l’a estimée à 7,3 m/s (en réalité 13,9 m/s). Le gain pour la vitesse n’est non nul que grâce à la covariance 100,13 hors de la diagonale. Pourquoi seulement la moitié ? Les mesures sont bruitées de 8 m, si bien que le filtre ne prend pas encore tout à fait au sérieux un écart de 15 m — la vitesse s’affinera dans les secondes suivantes.
5. Le filtre suit une voiture
Une minute de trajet, une mesure GPS par seconde. Pendant ce temps, la voiture parcourt un peu moins d’un kilomètre, si bien que le bruit disparaîtrait sur un graphique de la position. Nous traçons donc de combien la voiture est en avance ou en retard par rapport à une conduite à exactement 15 m/s :
Les mesures GPS s’écartent de la position réelle de 8,3 m en moyenne (à partir de la dixième seconde, une fois le filtre lancé). L’estimation du filtre, de seulement 4,9 m — 41 % de moins. Et la vitesse, qu’aucun capteur ne mesure, est estimée avec une erreur de 0,8 m/s : le filtre la déduit de la façon dont la position évolue. Au début, il ne connaît pas la vitesse (il part de zéro), mais il l’accroche en quelques secondes. La bande ±2σ est l’incertitude honnête du filtre — la position réelle s’y trouve dans 95 % des pas, exactement comme il se doit.
Définition — erreur moyenne (RMSE) et bande ±2σ
L’« erreur moyenne » dans cette partie est la racine de l’erreur quadratique moyenne (RMSE) sur les pas k = 10, …, 59 (N = 50) :
RMSE = √( (1/N) ∑k (x̂k − xk)2 ),
où xk est la position réelle et x̂k l’estimation (ou la mesure seule). Les carrés pénalisent davantage les grandes erreurs que les petites, et la racine ramène le résultat en mètres. Pour le GPS seul, la RMSE devrait valoir environ σ = 8 m — elle vaut 8,3 m.
La bande ±2σ est l’intervalle x̂k ± 2√Pk,11. Pour une loi normale, l’intervalle μ ± 2σ contient une probabilité de 0,9545 ; si le filtre calcule correctement son incertitude P, la réalité doit tomber dans la bande dans environ 95 % des pas.
Le gain de Kalman se stabilise après quelques pas à K ≈ (0,30; 0,05) : de chaque innovation, le filtre reporte 30 % dans la position et 5 % (0,05 m/s par mètre d’innovation) dans la vitesse. Sur 50 trajets simulés, l’erreur du filtre vaut en moyenne 55 % de celle du GPS seul.
Théorème — gain stationnaire
Les formules pour P−, K et P ne contiennent pas les mesures z — la covariance et le gain peuvent être calculés à l’avance. En combinant prédiction et correction, on obtient la récurrence (l’équation de Riccati discrète)
P−k+1 = F (P−k − P−kHT (HP−kHT + R)−1 HP−k) FT + Q.
Pour des F, H, Q, R constants vérifiant les conditions usuelles (le système est observable — une suite de mesures permet de reconstituer tout l’état — et le bruit Q agit sur toutes ses composantes), la suite converge vers un unique point fixe, indépendamment du P0 initial ; le gain converge alors vers une valeur stationnaire.
Pour la voiture : après 60 pas, K = (0,297; 0,052) et P = [[19,04; 3,35], [3,35; 1,29]] ; le filtre s’attribue donc une précision de √19,04 ≈ 4,4 m sur la position et de √1,29 ≈ 1,1 m/s sur la vitesse.
Au début, le filtre ne sait presque rien et avale chaque mesure (gain de 0,61, puis 0,68). À mesure que l’estimation se précise, le gain diminue — jusqu’à se stabiliser là où l’incertitude ajoutée à chaque pas par le bruit Q est aussi grande que celle que retire la mesure. Ensuite plus rien ne change, c’est pourquoi, dans les appareils simples, le gain est souvent calculé une fois pour toutes à l’avance, et le filtre ne fait plus que multiplier par des nombres fixes.
6. À qui faire confiance : Q et R
Le filtre doit connaître Q et R. Pour le GPS, le fabricant indique généralement la valeur, mais le bruit de processus est plus difficile à estimer. Que se passe-t-il si nous donnons au filtre d’autres valeurs que celles des données ?
| Bruit de processus supposé par le filtre (m/s²) | 0,01 | 0,1 | 0,5 (vrai) | 2 | 10 |
|---|---|---|---|---|---|
| erreur de position (m) | 9,29 | 5,88 | 4,86 | 5,67 | 7,08 |
| erreur de vitesse (m/s) | 1,19 | 0,86 | 0,79 | 1,53 | 5,19 |
Quand le filtre croit que la voiture roule presque exactement à vitesse constante (petit Q), il s’en tient à son modèle et réagit tard aux accélérations réelles — l’erreur de position est même plus grande qu’avec le GPS seul. Quand, au contraire, il s’attend à des changements brusques (grand Q), il ne fait pas confiance au modèle et recopie les mesures bruitées. Le meilleur résultat est obtenu avec la vraie valeur 0,5. Il en va de même pour R : avec une incertitude GPS de 2, 8 et 30 m, l’erreur de position vaut 5,66 ; 4,86 et 5,39 m.
7. Pourquoi précisément ainsi
Théorème — optimalité du filtre de Kalman
Si le modèle est linéaire et les bruits normaux, la loi N(x̂k, Pk) est exactement la loi a posteriori de l’état P(xk | z1, …, zk). Sans hypothèse de normalité, le filtre de Kalman est le meilleur estimateur linéaire au sens de l’erreur quadratique moyenne.
Le filtre de Kalman, c’est le théorème de Bayes appliqué encore et encore. La prédiction est la loi a priori, la mesure est la vraisemblance, la correction est la loi a posteriori. La loi normale a cette propriété rare que le produit de lois normales est encore normal — il suffit donc de retenir l’espérance et la covariance au lieu d’une fonction entière. C’est l’algorithme forward des modèles de Markov cachés pour un état continu.
p(xk | z1:k) ∝ p(zk | xk) · ∫ p(xk | xk−1) p(xk−1 | z1:k−1) dxk−1
- ∫ p(xk | xk−1) p(xk−1 | z1:k−1) dxk−1
- la prédiction (loi a priori) : nous ne connaissons pas exactement l’état précédent, alors nous moyennons la transition sur tous les états précédents possibles, pondérés par ce à quoi nous croyions au pas précédent. L’intégrale est l’analogue continu de la somme ∑i de l’algorithme forward des HMM. Pour un modèle linéaire et une loi normale, on obtient N(Fx̂, FPFT + Q)
- p(zk | xk)
- la vraisemblance de la nouvelle mesure — à quel point chaque position expliquerait bien ce qu’a affiché le GPS ; d’après le modèle, c’est N(zk; Hxk, R)
- p(xk | z1:k)
- la loi a posteriori après toutes les mesures ; « ∝ » parce que nous n’avons pas besoin de la constante de normalisation p(zk | z1:k−1) — le produit des deux densités normales est calculé par la démonstration du théorème du début de cette partie, et il en sort exactement l’étape de correction
8. Quand le monde n’est pas linéaire
- Le filtre de Kalman étendu (EKF) linéarise le modèle non linéaire à chaque pas à l’aide de dérivées — c’est ainsi que procédait la navigation d’Apollo.
- Le filtre de Kalman unscented (UKF), au lieu de dérivées, fait passer par le modèle quelques points soigneusement choisis et en déduit une nouvelle espérance et une nouvelle covariance.
- Le filtre particulaire renonce complètement à la loi normale : il représente l’estimation par des milliers d’échantillons (des « particules ») qui se déplacent selon le modèle et sont repondérés selon les mesures. Il gère même une estimation à plusieurs pics, par exemple « le robot est soit dans la cuisine, soit dans le salon ».
- Où on le trouve : fusion du GPS, de l’accéléromètre et du gyroscope dans les téléphones, navigation des avions, des drones et des fusées, suivi d’objets par radar, localisation des voitures autonomes, et même lissage de séries temporelles économiques.
Définition — filtre de Kalman étendu (EKF)
Le modèle est non linéaire : xk = f(xk−1) + wk, zk = h(xk) + vk. L’EKF calcule l’espérance avec les fonctions non linéaires et la covariance avec leurs matrices jacobiennes (matrices des dérivées partielles) en l’estimation courante :
Fk = ∂f/∂x |x̂k−1, Hk = ∂h/∂x |x̂−k,
x̂− = f(x̂), P− = Fk P FkT + Q, x̂ = x̂− + K (z − h(x̂−)), K et P comme avant, avec Hk à la place de H.
Exemple : un radar mesure la distance h(px, py) = √(px2 + py2) ; alors Hk = (px/d, py/d) avec d = √(px2 + py2) — le vecteur unitaire dirigé vers la cible. Pour une cible en (300, 400) m, d = 500 m et Hk = (0,6; 0,8). Le résultat n’est plus la loi a posteriori exacte, seulement une approximation ; plus le modèle est courbé sur l’étendue de l’incertitude, plus elle est mauvaise.
9. Résumé
- Deux mesures normales indépendantes se combinent par une moyenne pondérée ; les précisions s’additionnent et le poids K est le gain de Kalman.
- Le filtre de Kalman alterne une prédiction selon le modèle et une correction selon la mesure ; pour une grandeur constante, c’est une moyenne cumulée.
- Pour la voiture, il a réduit l’erreur de position de 8,3 m (GPS) à 4,9 m et a estimé la vitesse non mesurée avec une erreur de 0,8 m/s ; la bande ±2σ a couvert la réalité dans 95 % des pas.
- Le résultat dépend de Q et de R : une confiance excessive dans le modèle réagit trop tard, une confiance trop faible recopie le bruit.
- Pour un modèle linéaire à bruit normal, le filtre est une mise à jour bayésienne exacte ; le monde non linéaire est l’affaire de l’EKF, de l’UKF et des filtres particulaires.
Cette partie clôt le module consacré aux modèles probabilistes. Envie de mettre la main à la pâte ? Demandez à un agent d’IA d’écrire un filtre de Kalman pour les données de l’accéléromètre de votre propre téléphone, et voyez avec quelle précision il en déduit de combien vous avez déplacé le téléphone.
Vous voyez les choses autrement ? Écrivez à support@coden-app.com.