Aller au contenu


Photo
- - - - -

Mettre a jour matrice de covariance (kalman)


  • Veuillez vous connecter pour répondre
5 réponses à ce sujet

#1 bird12358

bird12358

    Membre

  • Membres
  • 29 messages

Posté 25 janvier 2015 - 12:24

Bonjour,

 

J'ai un modèle sous forme de représentation d'etat contenant la position, la vitesse et l'accélération d'un solide. Je voudrais faire un modèle théorique sous Matlab.

 

J'ai donc ma matrice A qui fait 9x9 et donc ma matrice de covariance et mon gain de kalman global font également 9x9.

 

Dans la réalité,  les capteurs ne donnent pas leur information au même moment.

 

Imaginons on arrive a l'instant tk et j'obtiens les informations d'un capteurs qui me donne l'accélération.

 

Comment puis-je faire à l'instant tk pour intégrer les valeurs du capteur et mettre à jour la matrice de covariance et le gain de kalman global?

 

 

D'avance merci.



#2 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 29 janvier 2015 - 12:43

Salut !

C'est une très bonne question à laquelle je n'avais encore jamais songée !

 

Imaginons deux cas :

 

- Cas1: Toutes tes mesures ont une fréquence d'échantillonage identique, mais l'échantillonage de chaque capteur est décalé dans le temps.

Dans ce cas, il suffit de garder en mémoire chaque échantillon. Une fois que tu as tes mesures pour tous les capteurs, du lance la moulinette de Kalman.

Rien ne change du Kalman standard.

 

- Cas2: Les mesures ont une fréquence d'échantillonage non identique.

Ici, intuitivement, ce que je ferai, c'est que j'utiliserai les valeurs du vecteur d'état prédit comme mesures pour les capteurs dont on n'a pas d'information.

Il faut voir mathématiquement si c'est viable, mais j'ai bon espoir :)

En gros, comme tu n'as pas l'information de certain capteurs, tu considères leur valeur théorique prédite


Mon site internet : http://ferdinandpiette.com/


#3 bird12358

bird12358

    Membre

  • Membres
  • 29 messages

Posté 29 janvier 2015 - 09:26

Merci pour cette réponse.

 

D'autres questions concernant le gain de kalman:

 

- Imaginons, on a les mesures d'accélérometres et de vitesse On a une matrice vecteur d'etat de 6x1 [position3_1 vitesse3_1 ]. La seul solution pour intégrer les accéléromètres c'est dans la prédiction?  Pour intégrer la vitesse dans la mise a jour, seul les vitesses dans le vecteur d'état vont bénéficier de la mise à jour?

 

- Pour de l'embarqué et comme les matrices de covariance et de variance sont équivalent a une matrice identité multiplié par un coef, peut-on réduire ce vecteur d'état à 2x1 et en répétant les coefs sur les 3axes?

 

Je m'explique :

X = [p v] ;  Xk_1 = A*Xk + B*U

A = [1 T ; 0 1] B = [Te²/2 ;Te]

 

Ma matrice de covariance liée à ma mesure sigmax = [Te²/2 Te³/2; Te²/2 Te]  et celle lié à ma mesure sigmaz = var²*[1 0 ; 0 1]

 

J'aurai ma matrice de passage du vecteur d'etat vers ma mesure  H = [ 0 1] .

 

En fait j'ai fait les calculs sous matlab et je me suis rendu compte que de toutes facons les axes sont indépendents, c'est a dire sur l'axe x seulement px et vx sont en corrélation  , de même sur y et z.

Pour le gain de kalman du vecteur d'état 6x1 on a :

K = [ x1 0 0 x2 0 0

        0 x1 0 0 x2 0

        0 0 x1 0 0 x2

        x3 0 0 x4 0 0

        0 x3 0 0 x4 0

        0  0 x3 0 0 x4]

Et pour le gain de kalman du vecteur d'état 2x1 on a :

K = [x1 x2

        x3 x4]

 

Je me dis donc si je ne me suis pas gourré dans mes calculs, je calcul le gain de kalman sur le "sous-système" et j'applique les coefficients trouvés sur les 3axes.

 

Quant pensez-vous?



#4 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 30 janvier 2015 - 09:10

- Imaginons, on a les mesures d'accélérometres et de vitesse On a une matrice vecteur d'etat de 6x1 [position3_1 vitesse3_1 ]. La seul solution pour intégrer les accéléromètres c'est dans la prédiction?  Pour intégrer la vitesse dans la mise a jour, seul les vitesses dans le vecteur d'état vont bénéficier de la mise à jour?

Je ne comprend pas bien la question.

Tu as un vecteur de mesure [vitesse acceleration] et un vecteur d'état [position vitesse]

Lors de la prédiction, tu vas modéliser l'évolution de ta vitesse et tu vas lier ta position à ta vitesse.

Lors de la mise à jour, tu vas utiliser tes mesures de vitesse et d'accélération pour mettre à jour la vitesse estimé et la position estimé.

Si jamais tu connais le modèle d'évolution de ton accélération, deux choix s'offre à toi : intégrer l'accélération au vecteur d'état, ou alors calculer le modèle d'évolution de la vitesse à partir de l'accélération.

 

 

- Pour de l'embarqué et comme les matrices de covariance et de variance sont équivalent a une matrice identité multiplié par un coef, peut-on réduire ce vecteur d'état à 2x1 et en répétant les coefs sur les 3axes?

 

Je m'explique :

X = [p v] ;  Xk_1 = A*Xk + B*U

A = [1 T ; 0 1] B = [Te²/2 ;Te]

 

Ma matrice de covariance liée à ma mesure sigmax = [Te²/2 Te³/2; Te²/2 Te]  et celle lié à ma mesure sigmaz = var²*[1 0 ; 0 1]

 

J'aurai ma matrice de passage du vecteur d'etat vers ma mesure  H = [ 0 1] .

 

En fait j'ai fait les calculs sous matlab et je me suis rendu compte que de toutes facons les axes sont indépendents, c'est a dire sur l'axe x seulement px et vx sont en corrélation  , de même sur y et z.

Pour le gain de kalman du vecteur d'état 6x1 on a :

K = [ x1 0 0 x2 0 0

        0 x1 0 0 x2 0

        0 0 x1 0 0 x2

        x3 0 0 x4 0 0

        0 x3 0 0 x4 0

        0  0 x3 0 0 x4]

Et pour le gain de kalman du vecteur d'état 2x1 on a :

K = [x1 x2

        x3 x4]

 

Je me dis donc si je ne me suis pas gourré dans mes calculs, je calcul le gain de kalman sur le "sous-système" et j'applique les coefficients trouvés sur les 3axes.

 

Quant pensez-vous?

Tu veux dire décomposer un Kalman à 6 estimations à 3 Kalman de 2 estimations ?

Si tu es sur que tes sous-vecteurs d'état sont totalement décorrélés, alors oui, ça doit être faisable.

Mais il faut en être sûr. Si tu dois estimer l'angle de rotation en fonction d'un gyro et d'un accéléromètre par exemple, tu ne peux pas décomposer le problème en trois Kalman car dans ce cas tes axes sont corrélés.


Mon site internet : http://ferdinandpiette.com/


#5 bird12358

bird12358

    Membre

  • Membres
  • 29 messages

Posté 30 janvier 2015 - 08:38

Je ne comprend pas bien la question.

Tu as un vecteur de mesure [vitesse acceleration] et un vecteur d'état [position vitesse]

Lors de la prédiction, tu vas modéliser l'évolution de ta vitesse et tu vas lier ta position à ta vitesse.

Lors de la mise à jour, tu vas utiliser tes mesures de vitesse et d'accélération pour mettre à jour la vitesse estimé et la position estimé.

Si jamais tu connais le modèle d'évolution de ton accélération, deux choix s'offre à toi : intégrer l'accélération au vecteur d'état, ou alors calculer le modèle d'évolution de la vitesse à partir de l'accélération.

 

 

La c'est moi qui ne comprends pas . Normalement dans la prédiction , on doit utiliser une matrice H qui permet de passé du domaine du vecteur d'état au domaine capteur. 

Donc si on a un vecteur d'etat X = [p v] il faut que  z = H*X ou z est la mesure? Dans ce cas comment on fait pour avoir une accélération à partir du modèle d'état dans lequel il n'y a que des positions et des vitesses?

 

Dans les exemples que j'ai vu ou les vecteurs d'état etait de X = [p v], les accéléromètres était utilisé dans la prédiction :

Xk+1 = A*Xk +B*U ou U était les accéléromètres.



#6 bird12358

bird12358

    Membre

  • Membres
  • 29 messages

Posté 26 février 2015 - 06:12

Alors j'ai mis en place sur un exemple concret le filtrage de kalman en 2D (position et vitesse).

 

Quand j'applique l'estimation à partir de mes mesures de position, j'ai mon vecteur entier qui est modifié.

 

Est-ce normal qu'avec une donnée de position mon filtrage de kalman me modifie ma vitesse?






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users