ELECINF344/381

Partie interactive du site pédagogique ELECINF344/ELECINF381 de Télécom ParisTech (occurrence 2011).

Catégories

[RoseWheel] Implémentation du filtre de Kalman

Après de nombreuses hésitations quant à l’implémentation exacte du filtre qui nous permettra de traiter les données issues des capteurs de position (drift du gyroscope notamment) nous nous dirigeons de plus en plus vers l’association entre un filtre complémentaire (présenté dans un post un peu plus bas) et un filtre de Kalman permettant d’estimer le drift du gyroscope à chaque instant.

L’implémentation du filtre de Kalman est en fait assez simple. Voilà les données du problèmes :

On mesure à chaque instant la vitesse angulaire (theta_dot)  et l’angle d’inclinaison du manche de RoseWheel par rapport à la verticale (theta).

On considère que la mesure theta_m de  l’angle d’inclinaison est entachée d’un bruit blanc gaussien centré v(t).

On considère de plus que la mesure de la vitesse angulaire theta_dot_m est biaisée par un signal b(t) susceptible d’évoluer dans le temps (le drift).

A partir de ces 2 mesures theta_m et theta_dot_m on construit un filtre de Kalman permettant d’estimer le biais b(t). On pourra alors facilement corriger les valeurs en fonctions de l’estimation de ce biais.

Comme il n’est pas possible de modéliser la façon dont évolue le drift b(t) car celle-ci dépend de beaucoup de paramètres différents. On va considérer pour l’implémentation du Kalman que ce biais b(t) est constant. Mais ce qui nous donne en régime permanent un gain de Kalman nul car l’équation n’est pas bruitée. Ainsi, une fois le biais constant estimé, le filtre ne sera plus capable de détecter la dérive de ce biais. Ce qui est problématique.

Cependant on va ajouter à l’équation d’état un bruit fictif w(t) plus ou moins important qui va permettre de signaler au filtre de Kalman qu’il faut qu’il accorde à chaque itération plus de confiance dans les mesures et moins de confiance dans la modélisation, celle-ci étant incorrecte dans la mesure ou on a considéré un drift constant.

On obtient ainsi une estimation du biais b(t) du gyroscope qu’il est ensuite facile de soustraire au signal theta_dot_m mesuré par celui-ci.

C’est en particulier le filtre qui a été utilisé par Rich Chi Ooi dans sa thèse : Balancing of a Two-Wheeled Autonomous Robot

Des simulations Matlab/Octave sont à venir.

Sur un autre front, Clément à quant à lui commencé à regarder la théorie des algorithmes LQR mais nous attendons la présentation de vendredi pour nous y pencher de plus près.

Sur le même sujet :

  1. RoseWheel : banc de tests et filtre de Kalman
  2. Kalman, encore du Kalman…
  3. Kalman & Copterix
  4. RoseWheel prend la route !
  5. RoseWheel : réorganisations

5 comments to [RoseWheel] Implémentation du filtre de Kalman

  • Alexis Polti

    Vu que vous connaissez la commande appliquée aux roues du « robot », pourquoi ne pas l’inclure dans le filtre de Kalman de façon à pouvoir estimer directement la biais, l’angle et les différentes vitesses ? Ça éviterait d’avoir à passer par un filtre complémentaire.

    • florian

      Oui,le modèle du filtre présenté ici n’est valable que pour maintenir le robot en équilibre en position statique.

      Nous ne connaissons pas encore très bien l’algorithme LQR, qu’entendez-vous par « la commande appliquée aux moteurs ».

      En tout cas, inclure dans mon vecteur d’état, x x_dot et theta en plus de theta_dot et b est une solution à laquelle j’avais pensé. Elle permettrait en outre de ne pas utiliser de filtre complémentaire dans la mesure ou dans ce cas là le filtre de Kalman aurait une bonne connaissance déterministe de l’évolution de l’état du système.

      Cependant inclure 3 variables dans le vecteur d’état implique maintenant d’inverser des matrices qui peuvent être de taille 5*5 ce qui peut monopoliser un certain temps de calcul ?

  • Alexis Polti

    Précision : si tu cites la thèse de Rich Chi Ooi, ça serait sympa de mettre un lien dessus :)

  • Dans cette thèse on peut aussi voir une bonne application du filtre LQR, je vous encourage donc à y jetter un oeil après notre présentation de vendredi pour un autre exemple !