Filtre de Kalman

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Kalman.

Le filtre de Kalman est un filtre à réponse impulsionnelle infinie qui estime les états d'un système dynamique à partir d'une série de mesures incomplètes ou bruitées.

Exemples d'applications[modifier | modifier le code]

Le filtre de Kalman est utilisé dans une large gamme de domaines technologiques (radar, vision électronique, communication ...). C'est un thème majeur de l'automatique et du traitement du signal. Un exemple d'utilisation peut être la mise à disposition, en continu, d'informations telles que la position ou la vitesse d'un objet à partir d'une série d'observations relative à sa position, incluant éventuellement des erreurs de mesures.

Par exemple, pour le cas des radars où l'on désire suivre une cible, des données sur sa position, sa vitesse et son accélération sont mesurées à chaque instant mais avec énormément de perturbations dues au bruit ou aux erreurs de mesure. Le filtre de Kalman fait appel à la dynamique de la cible qui définit son évolution dans le temps pour obtenir de meilleures données, éliminant ainsi l'effet du bruit. Ces données peuvent être calculées pour l'instant présent (filtrage), dans le passé (lissage), ou sur un horizon futur (prédiction).

Le filtrage de Kalman est aussi de plus en plus utilisé en dehors du domaine du traitement du signal, par exemple en météorologie et en océanographie, pour l'assimilation de données dans un modèle numérique, en finance ou en navigation et il est même utilisé dans l'estimation[1] des états de trafic routier dans le cas de commande par rampe d'accès où le nombre de boucles magnétiques sur la route est insuffisant.

Paternité[modifier | modifier le code]

Le filtre de Kalman doit son nom à Rudolf Kalman bien que Thorvald Nicolai Thiele[2] et Peter Swerling aient développé un algorithme similaire avant lui. La paternité du filtre fait l'objet d'une petite controverse dans la communauté scientifique. Le filtre a été décrit dans diverses publications par Swerling (1958), Kalman (1960)[3] et Kalman-Bucy (1961)[4].

Stanley Schmidt est reconnu comme ayant réalisé la première implémentation du filtre. C'était lors d'une visite de Rudolf Kalman au NASA Ames Research Center qu'il vit le potentiel de son filtre pour l'estimation de la trajectoire pour le programme Apollo. Ceci conduisit à l'utilisation du filtre dans l'ordinateur de navigation.

Une grande variété de filtres de Kalman ont été, depuis, développés à partir de la formulation originale dite filtre de Kalman simple. Schmidt développa le filtre de Kalman étendu, Bierman, Thornton et bien d'autres développèrent toute une gamme de filtres racine carrée. Le filtre le plus utilisé est vraisemblablement la phase-locked loop, largement répandue dans les radios, ordinateurs, équipement de communication, etc.

Le filtre de Kalman[modifier | modifier le code]

Le filtre de Kalman est un estimateur récursif. Cela signifie que pour estimer l'état courant, seules l'estimation de l'état précédent et les mesures actuelles sont nécessaires. L'historique des observations et des estimations n'est ainsi pas requis.

L'état du filtre est représenté par 2 variables :

  • \hat{\textbf{x}}_{k|k}, l'estimation de l'état à l'instant k;
  • \textbf{P}_{k|k}, La matrice de covariance de l'erreur (une mesure de la précision de l'état estimé).

Le filtre de Kalman a deux phases distinctes : Prédiction et Mise à jour. La phase de prédiction utilise l'état estimé de l'instant précédent pour produire une estimation de l'état courant. Dans l'étape de mise à jour, les observations de l'instant courant sont utilisées pour corriger l'état prédit dans le but d'obtenir une estimation plus précise.

Prédiction[modifier | modifier le code]

\hat{\textbf{x}}_{k|k-1} = \textbf{F}_{k}\hat{\textbf{x}}_{k-1|k-1} + \textbf{B}_{k} \textbf{u}_{k-1} (état prédit)
\textbf{P}_{k|k-1} =  \textbf{F}_{k} \textbf{P}_{k-1|k-1} \textbf{F}_{k}^{T} + \textbf{Q}_{k} (estimation prédite de la covariance)

avec

  • \textbf{F}_{k} : matrice qui relie l'état précédent k-1 à l'état actuel k
  • \textbf{u}_{k} : entrée de commande
  • \textbf{B}_{k} : matrice qui relie l'entrée de commande u à l'état x
  • \textbf{P}_{k|k-1} : matrice d'estimation a priori de la covariance de l'erreur
  • \textbf{Q}_{k} : matrice de covariance du bruit de process

Mise à jour[modifier | modifier le code]

\tilde{\textbf{y}}_{k} = \textbf{z}_{k} - \textbf{H}_{k}\hat{\textbf{x}}_{k|k-1} (innovation)
\textbf{S}_{k} = \textbf{H}_{k}\textbf{P}_{k|k-1} \textbf{H}_{k}^{T}+\textbf{R}_{k} (covariance de l'innovation)
\textbf{K}_{k} = \textbf{P}_{k|k-1}\textbf{H}_{k}^{T}\textbf{S}_{k}^{-1} (gain de Kalman optimal)
\hat{\textbf{x}}_{k|k} = \hat{\textbf{x}}_{k|k-1} + \textbf{K}_{k}\tilde{\textbf{y}}_{k} (état mis à jour)
\textbf{P}_{k|k} = (I - \textbf{K}_{k} \textbf{H}_{k}) \textbf{P}_{k|k-1} (covariance mise à jour)

avec

  • \textbf{z}_{k} : observation ou mesure du process à l'instant k
  • \textbf{H}_{k} : matrice qui relie l'état \textbf{x}_{k} à la mesure \textbf{z}_{k}
  • \textbf{P}_{k|k} : matrice d'estimation a posteriori de la covariance de l'erreur
  • \textbf{R}_{k} : matrice de covariance du bruit de mesure
  • {I} : matrice identité aux dimensions adéquates


La formule de la mise à jour de la covariance est valide uniquement pour un gain de Kalman optimal. L'utilisation d'autres valeurs de gains nécessite des formules plus complexes.

Le filtre d'Information[modifier | modifier le code]

Dans le filtre de l'information, la covariance et l'état estimés sont respectivement remplacés par la matrice d'information et le vecteur d'information. Ils sont définis par :

\textbf{Y}_{k|k} \equiv  \textbf{P}_{k|k}^{-1}
\hat{\textbf{y}}_{k|k} \equiv  \textbf{P}_{k|k}^{-1}\hat{\textbf{x}}_{k|k}

De même, la covariance et l'état prédits ont les formes d'information équivalentes, définies par :

\textbf{Y}_{k|k-1} =  \textbf{P}_{k|k-1}^{-1}
\hat{\textbf{y}}_{k|k-1} =  \textbf{P}_{k|k-1}^{-1}\hat{\textbf{x}}_{k|k-1}

La covariance et le vecteur de mesure sont définis par :

\textbf{I}_{k} = \textbf{H}_{k}^{T} \textbf{R}_{k}^{-1} \textbf{H}_{k}
\textbf{i}_{k} = \textbf{H}_{k}^{T} \textbf{R}_{k}^{-1} \textbf{z}_{k}

La mise à jour de l'information devient maintenant une somme triviale :

\textbf{Y}_{k|k} = \textbf{Y}_{k|k-1} + \textbf{I}_{k}
\hat{\textbf{y}}_{k|k} = \hat{\textbf{y}}_{k|k-1} + \textbf{i}_{k}

L'avantage principal du filtre de l'information est que N mesures peuvent être filtrées à chaque instant simplement en additionnant leurs matrices et vecteurs de l'information.

\textbf{Y}_{k|k} = \textbf{Y}_{k|k-1} + \sum_{j=1}^N \textbf{I}_{k,j}
\hat{\textbf{y}}_{k|k} = \hat{\textbf{y}}_{k|k-1} + \sum_{j=1}^N \textbf{i}_{k,j}

Pour prédire le filtre d'information, la matrice et le vecteur d'information peuvent être convertis de nouveau à leurs équivalents de l'espace d'état ou, alternativement, la prédiction de l'espace d'information peut être utilisée.

\textbf{M}_{k} = [\textbf{F}_{k}^{-1}]^{T} \textbf{Y}_{k|k} \textbf{F}_{k}^{-1}
\textbf{C}_{k} = \textbf{M}_{k} [\textbf{M}_{k}+\textbf{Q}_{k}^{-1}]^{-1}
\textbf{L}_{k} = I - \textbf{C}_{k}
\textbf{Y}_{k|k-1} = \textbf{L}_{k} \textbf{M}_{k} \textbf{L}_{k}^{T} + 
                                  \textbf{C}_{k} \textbf{Q}_{k}^{-1} \textbf{C}_{k}^{T}
\hat{\textbf{y}}_{k|k-1} = \textbf{L}_{k} [\textbf{F}_{k}^{-1}]^{T}\hat{\textbf{y}}_{k|k}

Noter également que F et Q doivent être inversibles.

Les filtres non-linéaires[modifier | modifier le code]

Le filtre de Kalman est limité aux systèmes linéaires. Cependant, la plupart des systèmes physiques sont non linéaires. Le filtre n'est donc optimal que sur une petite plage linéaire osculatrice des phénomènes réels. La non-linéarité peut être associée au modèle du processus, au modèle d'observation ou bien aux deux.

Filtre de Kalman étendu[modifier | modifier le code]

Dans le filtre de Kalman étendu (FKE), les modèles d'évolution et d'observation n'ont pas besoin d'être des fonctions linéaires de l'état mais peuvent à la place être des fonctions (différentiables).

\textbf{x}_{k} = f(\textbf{x}_{k-1}, \textbf{u}_{k}, \textbf{w}_{k})
\textbf{z}_{k} = h(\textbf{x}_{k}, \textbf{v}_{k})

La fonction f peut être utilisée pour calculer l'état prédit à partir de l'état estimé précédent et, semblablement, la fonction h peut être employée pour calculer l'observation prédite de l'état prédit. Cependant, f et h ne peuvent pas être appliqués directement au calcul de la covariance : une matrice des dérivées partielles, la Jacobienne, est calculée.

À chaque instant, la Jacobienne est évaluée avec les états estimés courants. Ces matrices peuvent être employées dans les équations du filtre de Kalman. Ce processus linéarise essentiellement la fonction non linéaire autour de l'estimation courante.

Ceci donne les équations du filtre de Kalman étendu suivantes :

Prédiction

\hat{\textbf{x}}_{k|k-1} = f(\hat{\textbf{x}}_{k-1|k-1}, \textbf{u}_{k}, 0)
 \textbf{P}_{k|k-1} =  \textbf{F}_{k} \textbf{P}_{k-1|k-1} \textbf{F}_{k}^{T} + \textbf{Q}_{k}

Mise à jour

\tilde{\textbf{y}}_{k} = \textbf{z}_{k} - h(\hat{\textbf{x}}_{k|k-1}, 0)
\textbf{S}_{k} = \textbf{H}_{k}\textbf{P}_{k|k-1}\textbf{H}_{k}^{T} + \textbf{R}_{k}
\textbf{K}_{k} = \textbf{P}_{k|k-1}\textbf{H}_{k}^{T}\textbf{S}_{k}^{-1}
\hat{\textbf{x}}_{k|k} = \hat{\textbf{x}}_{k|k-1} + \textbf{K}_{k}\tilde{\textbf{y}}_{k}
 \textbf{P}_{k|k} = (I - \textbf{K}_{k} \textbf{H}_{k}) \textbf{P}_{k|k-1}

Où les matrices de transition et d'observation sont définies comme étant les Jacobiennes suivantes :

 \textbf{F}_{k} = \left . \frac{\partial f}{\partial \textbf{x} } \right \vert _{\hat{\textbf{x}}_{k-1|k-1},\textbf{u}_{k}}
 \textbf{H}_{k} = \left . \frac{\partial h}{\partial \textbf{x} } \right \vert _{\hat{\textbf{x}}_{k|k-1}}

Remarque : la convergence de ce filtre n'est aucunement assurée car il s'agit d'une convergence locale. En fait, il existe de nombreux exemples pour lesquels la convergence du filtre dépend de l'initialisation de l'état à l'instant initial.

Applications[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

Général[modifier | modifier le code]

  • Gelb A., editor. Applied optimal estimation. MIT Press, 1974.
  • Harvey, A.C. Forecasting, Structural Time Series Models and the Kalman Filter. Cambridge University Press, Cambridge, 1989.
  • [JU97] Julier, Simon J. and Jeffery K. Uhlmann. "A New Extension of the Kalman Filter to nonlinear Systems." In The Proceedings of AeroSense: The 11th International Symposium on Aerospace/Defense Sensing,Simulation and Controls, Multi Sensor Fusion, Tracking and Resource Management II, SPIE, 1997.
  • Roweis, S, and Z Ghahramani. "A Unifying Review of Linear Gaussian Models." Neural Computation Vol 11 No 2 (1999).

Notes[modifier | modifier le code]

  1. www.springerlink.com/index/M87W5148L57H0L46.pdf
  2. Steffen L. Lauritzen, Thiele: Pioneer in Statistics, Oxford University Press, 2002. ISBN 0-19-850972-3.
  3. Kalman, R. E. "A New Approach to Linear Filtering and Prediction Problems," Transactions of the ASME - Journal of Basic Engineering Vol. 82: p. 35-45 (1960)
  4. Kalman, R. E., Bucy R. S., "New Results in Linear Filtering and Prediction Theory", Transactions of the ASME - Journal of Basic Engineering Vol. 83: p. 95-107 (1961).