4 points par GN⁺ 22 일 전 | 1 commentaires | Partager sur WhatsApp
  • Le filtre de Kalman est un algorithme optimal d’estimation d’état qui estime l’état d’un système et prédit son évolution future dans un environnement bruité
  • En prenant l’exemple d’un radar de suivi d’avion, l’article explique comment améliorer la précision en répétant les étapes de prédiction et de mise à jour à partir de mesures de distance et de vitesse
  • À chaque étape, il calcule le vecteur d’état, la matrice de covariance et le gain de Kalman (Kalman Gain) afin de combiner de façon pondérée les mesures et les prédictions
  • En tenant compte à la fois de l’incertitude de mesure et de l’incertitude du modèle, il montre numériquement que l’erreur d’estimation (incertitude) diminue avec le temps
  • Grâce à un exemple numérique intuitif et à des calculs détaillés étape par étape, il fournit une base de compréhension permettant de concevoir et d’implémenter soi-même un filtre

Introduction au filtre de Kalman

  • Le Kalman Filter est un algorithme d’estimation d’état qui permet d’estimer et de prédire l’état d’un système dans un environnement où existent des incertitudes, comme le bruit de mesure ou des facteurs externes

    • Il est utilisé comme outil clé dans de nombreux domaines, comme le suivi d’objets, la navigation, la robotique ou le contrôle
    • Par exemple, il permet de réduire le bruit dans la trajectoire d’une souris pour obtenir un mouvement plus fluide, de détecter des tendances dans les données financières ou encore d’être utilisé pour les prévisions météo
    • L’article souligne que de nombreux supports pédagogiques insistent surtout sur les dérivations mathématiques et manquent d’exemples concrets ; ce document propose donc une explication intuitive centrée sur des exemples numériques
    • Il traite aussi de cas où un filtre mal conçu échoue à suivre correctement l’objet, puis présente des méthodes pour le corriger
    • L’objectif est de permettre au lecteur d’acquérir une compréhension suffisante pour concevoir et implémenter lui-même un filtre de Kalman

Parcours d’apprentissage

  • Vue d’ensemble en une page : présente brièvement les concepts clés et les principales formules, en ne demandant que des bases en statistiques et en algèbre linéaire
  • Tutoriel web gratuit : tutoriel en ligne qui construit l’intuition à l’aide d’exemples numériques étape par étape, sans prérequis
  • Kalman Filter from the Ground Up (livre) : 14 exemples numériques complets, filtres non linéaires (Extended/Unscented) et fusion de capteurs, avec du code Python et MATLAB

Pourquoi la prédiction est nécessaire

  • La nécessité de l’estimation d’état et de la prédiction est expliquée à travers l’exemple d’un radar de suivi d’avion
    • L’état du système est la position de l’avion (distance (r)), et le radar calcule cette distance à partir du temps de retour de l’impulsion réfléchie
    • La vitesse (v) peut être mesurée via l’effet Doppler
  • La prédiction de la position après un intervalle de temps donné (\Delta t) est réalisée à l’aide d’un modèle dynamique
    • Exemple : (r_{t_1} = r_{t_0} + v \cdot \Delta t)
    • (\Delta t = 5s), (r_{t_0}=10,000m), (v=200m/s) → (r_{t_1}=11,000m)
  • Dans le monde réel, il existe du bruit de mesure (Measurement Noise) et de l’incertitude dans le modèle (Process Noise)
    • Même si plusieurs radars mesurent en même temps, les résultats diffèrent légèrement
    • Des facteurs externes comme le vent peuvent invalider l’hypothèse d’une vitesse constante
  • Le filtre de Kalman effectue à la fois l’estimation de l’état courant et la prédiction de l’état futur, tout en fournissant l’incertitude (variance) associée à chaque estimation
    • C’est un algorithme optimal qui minimise l’incertitude de l’estimation d’état

Exemple de filtre de Kalman

  • Un radar unidimensionnel mesure la distance (r) et la vitesse (v) d’un avion

    • Vecteur d’état (\boldsymbol{x} = [r, v]^T)
    • Le système est représenté à l’aide de vecteurs et de matrices
  • Itération 0 — Initialisation et prédiction

  • Initialisation

    • Le filtre est initialisé avec la première mesure (\boldsymbol{z}_0 = [10{,}000, 200]^T)
    • Incertitude de mesure (écart-type) : distance 4m, vitesse 0.5m/s (\boldsymbol{R}_0 = \begin{bmatrix}16 & 0 \ 0 & 0.25\end{bmatrix})
    • Estimation initiale de l’état (\hat{\boldsymbol{x}}_{0,0} = \boldsymbol{z}_0)
    • Covariance initiale (\boldsymbol{P}_{0,0} = \boldsymbol{R}_0)
  • Étape de prédiction

    • Intervalle de temps (\Delta t = 5s)
    • Matrice de transition d’état (\boldsymbol{F} = \begin{bmatrix}1 & 5 \ 0 & 1\end{bmatrix})
    • État prédit (\hat{\boldsymbol{x}}{1,0} = \boldsymbol{F}\hat{\boldsymbol{x}}{0,0} = [11{,}000, 200]^T)
    • Prédiction de la covariance (hors bruit de processus) : (\boldsymbol{P}{1,0} = \boldsymbol{F}\boldsymbol{P}{0,0}\boldsymbol{F}^T = \begin{bmatrix}22.25 & 1.25 \ 1.25 & 0.25\end{bmatrix})
    • Ajout du bruit de processus ((\sigma_a = 0.2m/s^2)) : (\boldsymbol{Q} = \begin{bmatrix}6.25 & 2.5 \ 2.5 & 1\end{bmatrix})
    • Covariance prédite finale : (\boldsymbol{P}_{1,0} = \begin{bmatrix}28.5 & 3.75 \ 3.75 & 1.25\end{bmatrix})
  • Résumé de l’itération 0

    • Initialisation de l’état et de la covariance à partir de la première mesure
    • Utilisation du modèle de transition d’état pour prédire l’état suivant et son incertitude
    • Formules de prédiction
      • Prédiction de l’état : (\hat{\boldsymbol{x}}{n+1,n} = \boldsymbol{F}\hat{\boldsymbol{x}}{n,n} + \boldsymbol{G}\boldsymbol{u}_n)
      • Prédiction de la covariance : (\boldsymbol{P}{n+1,n} = \boldsymbol{F}\boldsymbol{P}{n,n}\boldsymbol{F}^T + \boldsymbol{Q})
  • Itération 1 — Mise à jour et prédiction

  • Mise à jour du filtre

    • Deuxième mesure : (\boldsymbol{z}_1 = [11{,}020, 202]^T)
    • Hausse de l’incertitude de mesure (écart-type : distance 6m, vitesse 1.5m/s) (\boldsymbol{R}_1 = \begin{bmatrix}36 & 0 \ 0 & 2.25\end{bmatrix})
    • Comparée à la covariance prédite (\boldsymbol{P}_{1,0}), l’incertitude de prédiction est plus faible
    • Le filtre de Kalman combine la mesure et la prédiction sous la forme d’une moyenne pondérée
      • Poids (K_1) : Kalman Gain
      • Formule de mise à jour de l’état : (\hat{\boldsymbol{x}}{1,1} = \hat{\boldsymbol{x}}{1,0} + \boldsymbol{K}_1(\boldsymbol{z}1 - \boldsymbol{H}\hat{\boldsymbol{x}}{1,0}))
      • Matrice d’observation (\boldsymbol{H} = \boldsymbol{I})
    • Calcul du gain de Kalman : (\boldsymbol{K}1 = \boldsymbol{P}{1,0}\boldsymbol{H}^T(\boldsymbol{H}\boldsymbol{P}_{1,0}\boldsymbol{H}^T + \boldsymbol{R}_1)^{-1}) Résultat : (\boldsymbol{K}_1 = \begin{bmatrix}0.4048 & 0.6377 \ 0.0399 & 0.3144\end{bmatrix})
    • Innovation : (\boldsymbol{z}1 - \hat{\boldsymbol{x}}{1,0} = [20, 2]^T)
    • Terme de correction : (\boldsymbol{K}_1[20, 2]^T = [9.37, 1.43]^T)
    • État mis à jour : (\hat{\boldsymbol{x}}_{1,1} = [11{,}009.37, 201.43]^T)
  • Mise à jour de la covariance

    • Utilisation d’une forme simplifiée : (\boldsymbol{P}_{1,1} = (\boldsymbol{I} - \boldsymbol{K}1)\boldsymbol{P}{1,0})
    • Résultat : (\boldsymbol{P}_{1,1} = \begin{bmatrix}14.57 & 1.43 \ 1.43 & 0.71\end{bmatrix})
    • Après la mise à jour, l’incertitude est plus faible que l’incertitude de la prédiction et que celle de la mesure → combiner mesure et prédiction réduit toujours l’incertitude
  • Étape de prédiction

    • Prédiction à l’instant suivant (t_2)
      • Prédiction de l’état : (\hat{\boldsymbol{x}}{2,1} = \boldsymbol{F}\hat{\boldsymbol{x}}{1,1} = [12{,}016.5, 201.43]^T)
      • Prédiction de la covariance : (\boldsymbol{P}{2,1} = \boldsymbol{F}\boldsymbol{P}{1,1}\boldsymbol{F}^T + \boldsymbol{Q} = \begin{bmatrix}52.86 & 7.47 \ 7.47 & 1.71\end{bmatrix})
    • En l’absence de nouvelle mesure, l’incertitude recommence à augmenter avec le temps
  • Résumé de l’itération 1

    • Étape de mise à jour : combinaison de la prédiction et de la mesure via le gain de Kalman
    • Étape de prédiction : propagation de l’état mis à jour vers l’instant suivant
    • Principales formules
      • Mise à jour de l’état : (\hat{\boldsymbol{x}}{n,n} = \hat{\boldsymbol{x}}{n,n-1} + \boldsymbol{K}_n(\boldsymbol{z}n - \boldsymbol{H}\hat{\boldsymbol{x}}{n,n-1}))
      • Mise à jour de la covariance (Joseph form) : (\boldsymbol{P}_{n,n} = (\boldsymbol{I} - \boldsymbol{K}n\boldsymbol{H})\boldsymbol{P}{n,n-1}(\boldsymbol{I} - \boldsymbol{K}_n\boldsymbol{H})^T + \boldsymbol{K}_n\boldsymbol{R}_n\boldsymbol{K}_n^T)
      • Gain de Kalman : (\boldsymbol{K}n = \boldsymbol{P}{n,n-1}\boldsymbol{H}^T(\boldsymbol{H}\boldsymbol{P}_{n,n-1}\boldsymbol{H}^T + \boldsymbol{R}_n)^{-1})

Résumé de l’exemple

  • Les trois étapes du filtre de Kalman : initialisation → prédiction → mise à jour
  • Ensuite, on répète la boucle prédiction-mise à jour
  • À chaque nouvelle mesure, l’incertitude diminue et l’estimation de l’état du système devient progressivement plus précise
  • Ressources complémentaires
    • Tutoriel en ligne gratuit : tutorial proposant des exemples numériques étape par étape
    • Livre Kalman Filter from the Ground Up : filtres linéaires et non linéaires, guide d’implémentation, code Python/MATLAB inclus

1 commentaires

 
GN⁺ 22 일 전
Avis sur Hacker News
  • C’est l’auteur. J’ai récemment mis à jour la page d’accueil de mon tutoriel sur le Kalman Filter. J’y ai ajouté un exemple simple de suivi radar, conçu pour être compréhensible même par quelqu’un qui ne connaît que les bases des statistiques et de l’algèbre linéaire
    J’ai essayé de limiter au maximum les dérivations mathématiques, tout en montrant de façon intuitive le bruit des mesures, le modèle de prédiction et le processus de combinaison du filtre. J’aimerais beaucoup avoir des retours sur le niveau mathématique et la clarté des explications

    • J’ai parcouru ça rapidement, et j’ai eu l’impression que la matrice de bruit de processus Q apparaissait un peu de nulle part. J’imagine qu’il y a une explication dans le livre, mais ce serait bien d’avoir au moins une justification rapide de la raison pour laquelle elle prend ces valeurs
    • Dans l’ensemble, c’était clair. En revanche, au début, la distinction entre le modèle du système et le filtre de Kalman lui-même était un peu floue. Jusqu’à la construction de la matrice d’état, j’ai cru qu’on était encore dans l’explication du modèle, puis ça enchaînait directement sur les équations du filtre, ce qui m’a un peu perdu
    • J’ai vraiment aimé le menu d’accessibilité. C’était très facile d’ajuster la lisibilité de la page
    • J’avais essayé d’implémenter moi-même un filtre de Kalman il y a environ 6 mois, mais la structure varie pas mal selon le domaine d’application, donc j’ai abandonné en cours de route. J’espère que ce document m’aidera beaucoup à aller jusqu’au bout cette fois
    • Au début du tutoriel, l’expression « algorithme optimal » m’a semblé un peu abstraite. Ce serait bien de l’expliciter brièvement avant d’entrer dans les maths
  • Voici ce que je considère comme un guide intuitif

    1. Comprendre la méthode des moindres carrés pondérés, et apprendre à mettre à jour une estimation existante à partir d’une nouvelle mesure et de son incertitude
    2. Si l’on suppose que la moyenne réelle ne change pas, cette approche fonctionne bien
    3. Mais si la moyenne change, le filtre de Kalman utilise un modèle qui prédit cette évolution
    4. Après la prédiction, on revient à nouveau à un problème du type (1)
      Au fond, l’essentiel repose sur la méthode des moindres carrés, et sous certaines hypothèses, on peut démontrer qu’elle est optimale
  • L’article « How a Kalman Filter Works in Pictures » était vraiment excellent

    • Moi aussi, j’aime beaucoup son approche visuelle. Mais mon tutoriel visait plutôt à traiter à la fois l’intuition et les pièges à travers un exemple radar détaillé étape par étape
    • Cela dit, même ces « explications simples » peuvent en pratique sembler trop complexes. Un filtre de Kalman est fondamentalement un type d’estimateur (estimator).
      Par exemple, un filtre passe-bas est aussi une forme d’estimateur, mais le filtre de Kalman y ajoute un modèle de processus et un calcul de covariance pour s’ajuster dynamiquement.
      Il prend en compte les relations entre variables corrélées, comme la position et la vitesse, si bien qu’une seule mesure peut aussi influencer l’estimation d’autres variables.
      En revanche, comme il repose sur l’algèbre linéaire, il faut supposer un bruit gaussien, et pour les problèmes non linéaires il faut des variantes comme l’EKF ou l’UKF
  • Pour comprendre le filtre de Kalman, il faut connaître les quatre points suivants

    1. Le modèle du système
    2. L’état interne
    3. La définition de l’estimation optimale
    4. La notion de covariance
      Le filtre est une solution mathématique permettant d’estimer de façon optimale l’état interne et la covariance d’un système à partir de mesures.
      Je pense que le livre d’Alex Becker est une excellente introduction au sujet. Il est riche en exemples et aide bien à construire l’intuition
    • Merci pour le retour. J’envisage un tome 2 qui traiterait de sujets plus avancés. En revanche, je tiens à préciser clairement que l’EKF et l’UKF sont des approximations, et pas des solutions totalement optimales
  • Quand on apprend le filtre de Kalman, c’est beaucoup plus intuitif lorsqu’il y a au moins deux entrées avec des caractéristiques de bruit différentes. Pourtant, la plupart des tutoriels ne traitent qu’une seule entrée

    • Mon livre contient un chapitre qui introduit le concept de sensor fusion. Si vous voulez aller plus loin, je recommande les livres de Bar-Shalom ou de Blackman
    • En réalité, l’essence du filtre de Kalman, c’est l’estimation d’état (state estimation). La fusion de capteurs n’en est qu’une application parmi d’autres, et assimiler les deux peut prêter à confusion
  • Le filtre de Kalman est aussi largement utilisé en pratique. Par exemple, Sendspin s’en sert pour la synchronisation des haut-parleurs
    On peut consulter une démo en direct et la documentation d’implémentation

  • Je me demande si le concept du filtre de Kalman pourrait aussi s’appliquer à des témoignages humains

    • Idée intéressante. On peut considérer l’observation humaine comme un capteur bruité. En revanche, le filtre de Kalman standard suppose un bruit gaussien sans biais, donc on peut douter que cette hypothèse tienne dans le cas humain
  • On peut aussi trouver une explication simple sur thekalmanfilter.com

  • Cet article m’a donné l’impression d’être une pub pour un livre cher. Il existe déjà beaucoup de ressources gratuites, par exemple Kalman and Bayesian Filters in Python et d’autres. Je me demande quel est l’intérêt spécifique de ce livre

    • Bonne question. Le contenu essentiel sur le filtre de Kalman est disponible gratuitement. Le livre traite davantage du réglage, des considérations de conception et d’exemples supplémentaires
    • Le livre de Roger Labbe et ses notebooks Jupyter sont vraiment excellents. Ils aident énormément non seulement à comprendre le filtre de Kalman, mais aussi à aborder les problèmes d’estimation de manière plus générale
    • J’ai vu beaucoup d’autres ressources, mais ce livre mérite d’être recommandé parce que le niveau de détail des explications est remarquable. On peut aussi consulter le tutoriel gratuit ici
    • La ressource mise en lien est un grand classique
    • Il n’y a pas tant de bonnes ressources que ça. Parmi celles que j’ai vues, celles qui sont vraiment bien faites se comptent sur les doigts d’une main. On sent ici un véritable effort pour proposer une nouvelle manière de comprendre le filtre de Kalman