Aller au contenu


Photo
- - - - -

Kalman sur centrale inertielle


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

#21 bird12358

bird12358

    Nouveau membre

  • Membres
  • 29 messages

Posté 02 janvier 2013 - 01:09

Et dans le dernier cas ou, on a la même observation à partir de n capteurs différents. Genre l'altitude donné par un altimètre et un télémètre ou un sonar?
Comment fai-t-on pour traiter la même données issues de différents capteurs? On fait une pseudo moyenne et on en extrait une matrice de covariance ou un écart-type de ces données?

#22 Black Templar

Black Templar

    Membre

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

Posté 02 janvier 2013 - 01:14

Et dans le dernier cas ou, on a la même observation à partir de n capteurs différents. Genre l'altitude donné par un altimètre et un télémètre ou un sonar?
Comment fai-t-on pour traiter la même données issues de différents capteurs? On fait une pseudo moyenne et on en extrait une matrice de covariance ou un écart-type de ces données?


Non, tu peux tout intégrer à Kalman tel quel

Ton vecteur de mesure sera [z1 ; z2 ; z3], ton vecteur d'état sera [z] ta matrice d'observation sera [1 ; 1 ; 1]
Ensuite, ta matrice de transition ne dépend pas des mesures, mais uniquement des états.
Si tu n'as pas d'information sur l'évolution de l'altitude, alors z(k+1) = z et ta matrice de transition A vaut [1], mais dans ce cas là, Kalman n'est pas vraiment utile...

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


#23 bird12358

bird12358

    Nouveau membre

  • Membres
  • 29 messages

Posté 02 janvier 2013 - 01:52

Qu'appelles-tu matrice de transition?

Ce que je ne comprends pas c'est qu'à partir des n capteurs qui donnent la même informations, on doit en tirer une seul valeur de correction, c'est ca ?

Si je mets sous forme matricielle ce que tu as expliqué, on aurait l'innovation inn:
       |Z1|   |1|
inn =  |Z2| - |1| * Xpred 
       |Z3|   |1|


Mais ce qu'il faudrait c'est avoir une seul valeur Z à partir des n valeur Zn pour corriger la prédiction.
On ne peut pas faire une moyenne pondéré des Zn observations et faire un truc du genre : sigmaZ = sigmaZ1*sigmaZ2 /(sigmaZ1 + sigmaZ2) pour avoir l'écart type des données pondérées.
Je crois avoir vu une formule comme ca quelque part ,...

#24 Black Templar

Black Templar

    Membre

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

Posté 02 janvier 2013 - 02:00

Qu'appelles-tu matrice de transition?

C'est la matrice qui sert à passer du vecteur d'état à t=k vers t=k+1
C'est cette matrice qui te permet de faire la prédiction (matrice F sur wiki)

Ce que je ne comprends pas c'est qu'à partir des n capteurs qui donnent la même informations, on doit en tirer une seul valeur de correction, c'est ca ?

Une valeur de correction par composante du vecteur d'état oui.

Si je mets sous forme matricielle ce que tu as expliqué, on aurait l'innovation inn:

   	|Z1|   |1|
inn =  |Z2| - |1| * Xpred 
   	|Z3|   |1|


Mais ce qu'il faudrait c'est avoir une seul valeur Z à partir des n valeur Zn pour corriger la prédiction.

Non.
L'innovation est calculée pour chacune des mesures (je pense que tu confonds toujours mesure et état).
Ensuite, c'est grâce au gain de Kalman qu'on aura un correction pour le vecteur d'état (et donc dans notre cas, le vecteur d'état ne contient d'un scalaire)



On ne peut pas faire une moyenne pondéré des Zn observations et faire un truc du genre : sigmaZ = sigmaZ1*sigmaZ2 /(sigmaZ1 + sigmaZ2) pour avoir l'écart type des données pondérées.
Je crois avoir vu une formule comme ca quelque part ,...

Si tu as plusieurs capteurs te donnant une même grandeur que tu cherche à estimer et si tu ne sais pas modéliser l'évolution de cette grandeur dans le temps, alors, appliquer Kalman dans ces conditions revient à faire plus ou moins une moyenne pondéré, ou un simple moindre carré.
C'est pour ça que j'ai dit que dans ce cas là, Kalman n'est pas très utile...

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


#25 bird12358

bird12358

    Nouveau membre

  • Membres
  • 29 messages

Posté 02 janvier 2013 - 02:28

Si j'ai bien compris les étapes seraient:
- on fait une prediction du système Xpred
- et pour chacune des n observations des zn capteurs, on fait une correction de la valeur estimé, l'algo serait:
//Pour le 1er capteurs
Xestim = Xestim + L1(Z1 - H1*Xpred)
pour chaque capteur n:2:end
Xestim = Xestim + Ln(Zn - Hn*Xestim)
finpour

Avec pour chaque Ln, une matrice de bruit Rn du capteur associé et éventuellement une matrice Hn différentes.

#26 Black Templar

Black Templar

    Membre

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

Posté 02 janvier 2013 - 02:34

Si j'ai bien compris les étapes seraient:
- on fait une prediction du système Xpred
- et pour chacune des n observations des zn capteurs, on fait une correction de la valeur estimé, l'algo serait:

//Pour le 1er capteurs
Xestim = Xestim + L1(Z1 - H1*Xpred)
pour chaque capteur n:2:end
Xestim = Xestim + Ln(Zn - Hn*Xpred)
finpour

Avec pour chaque Ln, une matrice de bruit Rn du capteur associé et éventuellement une matrice Hn différentes.


Image IPB non
Tu ne peux pas dissocier les différents capteurs !
Vu que tu fais le produit matricielle de l'innovation par le gain de Kalman, tu ne peux pas tout séparer : (un produit matricielle, c'est des combinaisons linéaires de toutes tes valeurs du vecteur d'innovation !)
Tu peux calculer l'innovation pour chaque capteur séparément, mais c'est tout. Ensuite, tu es obligé de prendre le vecteur innovation dans son intégralité.

L'algo, il n'y en a qu'un, c'est celui de Kalman

Fichier joint  kalman.png   7,96 Ko   29 téléchargement(s)


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


#27 bird12358

bird12358

    Nouveau membre

  • Membres
  • 29 messages

Posté 02 janvier 2013 - 02:53

Je séche un peu là lol.
On est à l'étape ou on a calculer la prédiction Xpred, et on a calculé l'innovation pour chacun des capteurs.
Comment fait-on pour prendre en compte les différentes innovations?
On a donc Xpred, est innov(n) avec n appartient à {1,N}, après je vois pas trop quoi en faire?

Surtout que ce cas est la version simplifié, on estime la position à partir de plusieurs donnees de vitesse provenant de n capteurs, le vecteur X ne contient donc que les positions x,y.
Dans le cas ou X contient plus que les positions (x,y) genre les vitesses vx,vy les accélérations ax,ay. Comment dois-t-on faire dans ce cas là?

#28 Black Templar

Black Templar

    Membre

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

Posté 02 janvier 2013 - 03:04

Je ne comprend vraiment pas pourquoi tu sèches ^^

On est à l'étape ou on a calculer la prédiction Xpred, et on a calculé l'innovation pour chacun des capteurs.
Comment fait-on pour prendre en compte les différentes innovations?
On a donc Xpred, est innov(n) avec n appartient à {1,N}, après je vois pas trop quoi en faire?

C'est simple. L'innovation forme un vecteur.
Tu multiplies le gain de Kalman par ce vecteur afin d'obtenir la correction à appliquer au vecteur d'état.
Tu ajoutes cette correction au vecteur d'état prédit pour ainsi obtenir le vecteur d'état mis à jour.

Qu'est-ce que je viens de faire là : je t'ai lu tout simplement les équations de Kalman.


Surtout que ce cas est la version simplifié, on estime la position à partir de plusieurs donnees de vitesse provenant de n capteurs, le vecteur X ne contient donc que les positions x,y.
Dans le cas ou X contient plus que les positions (x,y) genre les vitesses vx,vy les accélérations ax,ay. Comment dois-t-on faire dans ce cas là?

Tu fait ça exactement de la même façon.
Tu calcules ton innovation pour chaque capteur, tu multiplies le gain de kalman par ton vecteur innovation afin d'avoir la correction du vecteur d'état et tu l'ajoutes au vecteur d'état prédit pour avoir le vecteur d'état mis à jour.


En gros, quand tu fais un Kalman, la seule et unique chose à faire pour toi, c'est de modéliser ton système (Z = HX+B et X(k+1) = A.X(k))
Une fois modéliser, tu n'as plus qu'a appliquer les équations sans chercher à comprendre :)
Après, si ce que tu cherches, c'est comprendre les équations, c'est autre chose...

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


#29 bird12358

bird12358

    Nouveau membre

  • Membres
  • 29 messages

Posté 02 janvier 2013 - 03:33

Dans le cas ou pour chacune des données de X, on a une seul donnée observé, je comprends bien. Mais quand on a n observations pour la même donnée de X je comprends plus :(/>.

Dans un exemple symple en 2D. On veut modèliser l'évolution de la position au cours du temps. On a donc X = [x v] la position en x.
On a donc Xp = AX +BU ou Xp est Xdévrivé A =[1 Te; 0 0] on dit pour l'exemple que la vitesse est constante.

On considère que l'on a 3 capteurs (on ne sait pas lesquelles) qui nous donnent 3 informations de position en x et 3 informations de vitesse en x.
On se cré 3 innovation : inn(n) = (z(n) - H*Xpred) avec H est la matrice identité. avec z(n) un couple position/vitesse observé. (z(n) = [xobs(n);v(osb(n)]

Apres il faut faire Xest = Xpred + K*innov ou innov est un vecteur contenant : innov = [inn(1);inn(2);inn(3)] ??

J'ai toujours rien compris? :(

Edit: je tiens à préciser que z pour moi est l'observation, c'est pour respecter la convention wiki

#30 Black Templar

Black Templar

    Membre

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

Posté 02 janvier 2013 - 04:07

Perdu Image IPB

On considère que l'on a 3 capteurs (on ne sait pas lesquelles) qui nous donnent 3 informations de position en x et 3 informations de vitesse en x.
On se cré 3 innovation : inn(n) = (z(n) - H*Xpred) avec H est la matrice identité. avec z(n) un couple position/vitesse observé. (z(n) = [xobs(n);v(osb(n)]


Là ça ne marche pas car H.X n'est pas un scalaire mais un vecteur !!
Donc tu peux calculer directement le vecteur innovation d'un coup (sans chercher à calculer chaque composante séparément) INN = Z - H.X

D'ailleurs, H n'est pas la matrice identité !

X = [x v]
Z = [xobs1;xobs2;xobs3;vosb1;vosb2;vosb3]
H relie Z à X, c'est donc une matrice 6x2. Ce ne peut donc pas être la matrice identité.


Une petite question, tu essayes de comprendre comment marche Kalman, mais est-ce que tu sais déjà l'utiliser ?
Car la première étape, c'est déjà de savoir modéliser un système et d'utiliser Kalman.
Ensuite seulement, tu peux essayer de comprendre les équations.

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


#31 bird12358

bird12358

    Nouveau membre

  • Membres
  • 29 messages

Posté 02 janvier 2013 - 04:35

H relie Z à X, c'est donc une matrice 6x2. Ce ne peut donc pas être la matrice identité.


H ne relie pas plutot l'état X à l'observation Z?


Une petite question, tu essayes de comprendre comment marche Kalman, mais est-ce que tu sais déjà l'utiliser ?
Car la première étape, c'est déjà de savoir modéliser un système et d'utiliser Kalman.
Ensuite seulement, tu peux essayer de comprendre les équations.


J'essaye d'utiliser kalman dans la cas ou on a plusieurs données observées pour un même valeur de l'état X.
Je me suis modèlisé un état X pour déterminer la position x.
Dans ce cas H vaudra juste
H = [1 0;
     1 0;
     1 0;
     0 1;
     0 1;
     0 1;]

Donc en fait l'innovation sera une matrice 6*2 et le gain de kalman multiplier par l'innovation, sera une matrice de 2*1 pour respecter les dimensions?( toujours dans l'exemple que j'ai cité au dessus)

Je suis en train de programmer l'algorithme pour estimer la position en 1D ou 2D avec n capteurs aillant des matrices de bruits différents et voir leur impact sur pc.
C'est pour ca que j'ai tant de question parce qu'en pratique c'est pas aussi simple qu'en théorie. J'ai déja fait des exemples simples sur pc de l'algorithme de Kalman.
Mais comme j'ai trouvé des exemples plus parlant et plus complexe (notamment l'exemple de la fusion entre gps,accéléromètre,vision,...), je voulais étauffer mes exemples de base.

#32 Black Templar

Black Templar

    Membre

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

Posté 02 janvier 2013 - 05:24

Donc en fait l'innovation sera une matrice 6*2 et le gain de kalman multiplier par l'innovation, sera une matrice de 2*1 pour respecter les dimensions?( toujours dans l'exemple que j'ai cité au dessus)

H est correcte.
Mais l'innovation ne sera pas une matrice 6*2, mais un vecteur de dimension 6 !


Je suis en train de programmer l'algorithme pour estimer la position en 1D ou 2D avec n capteurs aillant des matrices de bruits différents et voir leur impact sur pc.
C'est pour ca que j'ai tant de question parce qu'en pratique c'est pas aussi simple qu'en théorie. J'ai déja fait des exemples simples sur pc de l'algorithme de Kalman.
Mais comme j'ai trouvé des exemples plus parlant et plus complexe (notamment l'exemple de la fusion entre gps,accéléromètre,vision,...), je voulais étauffer mes exemples de base.


Ok, donc ce que tu cherches, c'est bien à utiliser Kalman dans un premier temps !
Donc oublions toutes ces histoires d'innovation & co. et reprenons du début.

Etape 1
Trouver les paramètres à estimer pour déterminer le vecteur d'état X
Trouver les mesures disponibles afin d'écrire le vecteur de mesures Z

Etape 2
Relier le vecteur de mesure et le vecteur d'état grâce à la matrice d'observation H
Z = HX+B
Dans un premier temps, il faut poser les équations pour chaque composantes de Z.
Ensuite déterminer si c'est linéaire.
Enfin, si c'est linéaire, trouver la forme matricielle.
B on s'en fout, c'est un vecteur de bruit. C'est juste pour dire que l'on a conscience que les mesures sont bruités.

Etape 3
Modéliser l'évolution du vecteur d'état dans le temps.
C'est à dire, pour chaque composante k du vecteur X, trouver les équations Xk(t+dt) = quelquechose en fonction de Xk(t)
Une fois que tu as toutes tes équations, tu vérifies que c'est linéaire et tu poses sous la forme matricielle
X(t+dt) = F.X(t)

Etape 4
On prend maintenant en compte le bruit. Tu as deux types de bruits

Le bruit de mesure, représenté par la matrice de covariance du bruit, noté R
C'est une matrice carrée diagonale de taille égale au nombre de composante du vecteur de mesure Z (si tu as 3 capteurs avec 3 mesures, ta matrice R sera une matrice 3x3).
Les termes sur la diagonale correspondent à la variance (carré de l'écart-type) du bruit du capteur (le bruit doit être Gaussien).
Pour déterminer l'écart-type d'un capteur : regarde dans la datasheet, ou fait toi même une centaine de mesures afin d'obtenir une courbe comme celle-là : http://fr.wikipedia....iki/Loi_normale où sigma est l'écart-type.

Le second bruit est le bruit de commande, représenté par la matrice de covariance du bruit de commande noté Q.
Cette matrice, représente l'erreur que tu t'accordes sur ta modélisation.
C'est aussi une matrice carrée diagonale, mais cette fois-ci de taille égale au nombre de composante du vecteur d'état !
Les composantes de la diagonale représentes l'erreur que tu autorises sur la modélisation de la matrice de transition F.
Cette matrice Q est à déterminée de façon ah-hoc.

Exemple, tu as un vecteur d'état [acc ; vit]. Tu ne connais pas l'évolution de l'accélération.
Tes équations de transitions donc donc acc(t+dt) = acc(t) et vit(t+dt) = vit(t) + acc(t).dt
La première composante de la diagonale de Q représente le taux d'erreur que tu t'accordes sur la modélisation de l'évolution de l'accélération. Ici tu as supposé qu'elle été constante, mais tu sais qu'en réalité, elle ne bougera pas de plus de dacc en dt seconde. Tu as donc trouver la première composante de Q.
La seconde correspond à l'erreur autorisé sur l'évolution de la vitesse dans le temps. Ici, l'erreur autorisé est nulle car tu es sur que la vitesse à t1 est toujours égale à la vitesse à t0 + l'accélération à t0 fois (t1-t0) (c'est physique et toujours vrai).


Interlude
Tu remarques que jusque maintenant, je n'ai pas encore parlé de Kalman !
Ces quatre étapes sont les plus difficiles. Tu dois les faire AVANT de penser à Kalman.
De la qualité de cette modélisation dépendra les performances de Kalman.


Etape 5
Tu as donc maintenant tes matrices/vecteurs X, Z, H, F, R et Q.
Tu peux donc appliquer les équations de Kalman et tu verras qu'il ne te manque rien du tout.

Comment appliquer les équations de Kalman :
  • Tu as une bibliothèque pour manipuler les matrices, dans ce cas, tu recopies les formules bêtement et tu as directement le résultat
  • Tu n'as pas de bibliothèque pour manipuler les matrices ou tu es limité en puissance de calcule. Alors dans ce cas, bon courage ! Il faut développer le calcul matriciel à la main afin d'avoir des équations que tu entreras telle quel dans ton programme.

Conclusion
Comme tu peux le voir appliquer un Kalman est à la porté d'un enfant. Par contre, le plus dur, c'est la modélisation de ton problème, mais ça, c'est l'étape avant de faire du Kalman.

L'innovation, le gain de kalman & co, tu n'as pas à comprendre comment ça marche. ça fait parti du calcul du filtre de Kalman, les équations te sont données et marchent, tu n'as qu'à les recopier.

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


#33 bird12358

bird12358

    Nouveau membre

  • Membres
  • 29 messages

Posté 02 janvier 2013 - 06:08

Oui effectivement kalman n'est pas compliqué à partir du moment ou tout est modèlisé.
Mais justement c'est la partie modèlisation qui me pose soucis. Ce qui me pose surtout des problèmes, ce sont la taille des différentes matrice.

Donc si on reprend l'application de l'exo précédent, X =[x;vx] u = [accx]
X(k+1) = AX(k)+B*U avec A = [1 Te; 0 1] B = [0;Te]

Si on a toujours 3 mesures pour l'état x et 3 états pour la vitesse vx R sera de taille 6x6:
R = diag(signa_p1,signa_p2,signa_p3,signa_v1,signa_v2,signa_v3) avec sigma_px pour les positions et sigma_vx pour les vitesses.

Et Q la matrice lié à la commande Q = diag(sigma_acc,sigma_acc) avec sigma_acc pour l'accélération.

J'arrive pas à trouver de document sur la dimension des matrices, pour savoir si je ne me suis pas trompé dans la modèlisation.

#34 Black Templar

Black Templar

    Membre

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

Posté 02 janvier 2013 - 06:22

Mais justement c'est la partie modèlisation qui me pose soucis.

Ok, dans ces cas là, pas la peine de parler d'innovation & co, ça n'intervient pas encore à ce stade.

Donc si on reprend l'application de l'exo précédent, X =[x;vx] u = [accx]
X(k+1) = AX(k)+B*U avec A = [1 Te; 0 1] B = [0;Te]

Ok, elle vient d'où déjà cette accx ? (du vecteur u ?)


Si on a toujours 3 mesures pour l'état x et 3 états pour la vitesse vx R sera de taille 6x6:
R = diag(signa_p1,signa_p2,signa_p3,signa_v1,signa_v2,signa_v3) avec sigma_px pour les positions et sigma_vx pour les vitesses.

vui (mis à part que c'est sigma^2)

Et Q la matrice lié à la commande Q = diag(sigma_acc,sigma_acc) avec sigma_acc pour l'accélération.

Non, de taille 2x2, mais avec sur la diagonale sigma_x²et sigma_vx²

Ce qui me pose surtout des problèmes, ce sont la taille des différentes matrice.

J'arrive pas à trouver de document sur la dimension des matrices, pour savoir si je ne me suis pas trompé dans la modèlisation.

X ; vecteur de taille n
Z ; vecteur de taille m
H ; matrice de taille mxn
A (ou F sur wiki) ; matrice de taille nxn
R ; matrice diagonale de taille mxm
Q ; matrice diagonale de taille nxn



EDIT : après, la taille des matrices du filtre de Kalman, on s'en fou, mais pour info (en reprenant les notations wiki) :
P ; matrice de taille nxn (symétrique si mes souvenirs sont bon, mais seul les termes sur la diagonale on un sens trivial)
y~ (l'innovation) : vecteur de taille m
S (covariance de l'innovation) : matrice de taille mxm
K (gain de Kalman) : matrice de taille nxm

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


#35 bird12358

bird12358

    Nouveau membre

  • Membres
  • 29 messages

Posté 02 janvier 2013 - 06:35

En fait j'essaye de mettre sous forme matricielle, l'equation x = 0.5*accx*Te² + vx*Te + x0
J'ai mon vecteur d'état X =[x;vx] et une entrée qui est l'accélération selon x, accx.
Donc je me suis gourré, on aurait plutot:
A ou F =[1 Te;0 1] B = [0.5*Te² ; Te]

Et on aurait Q la matrice de bruits liés à la commande Q = B*sigma_accx² ??

X ; vecteur de taille n
Z ; vecteur de taille m
H ; matrice de taille mxn
A (ou F sur wiki) ; matrice de taille nxn
R ; matrice diagonale de taille mxm
Q ; matrice diagonale de taille nxn


EDIT : après, la taille des matrices du filtre de Kalman, on s'en fou, mais pour info (en reprenant les notations wiki) :
P ; matrice de taille nxn (symétrique si mes souvenirs sont bon, mais seul les termes sur la diagonale on un sens trivial)
y~ (l'innovation) : vecteur de taille m
S (covariance de l'innovation) : matrice de taille mxm
K (gain de Kalman) : matrice de taille nxm


Impeccable!!

#36 Black Templar

Black Templar

    Membre

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

Posté 03 janvier 2013 - 09:49

En fait j'essaye de mettre sous forme matricielle, l'equation x = 0.5*accx*Te² + vx*Te + x0
J'ai mon vecteur d'état X =[x;vx] et une entrée qui est l'accélération selon x, accx.
Donc je me suis gourré, on aurait plutot:
A ou F =[1 Te;0 1] B = [0.5*Te² ; Te]


Perso, je n'ai jamais utiliser la partie commande de l'équation... je vis essayer de comprendre à quoi ça correspond...

Ce que j'aurais fait intuitivement, c'est d'intégrer l'accélération dans le vecteur d'état

Et on aurait Q la matrice de bruits liés à la commande Q = B*sigma_accx² ??

Non Q doit être de dimensions 2 !
Sur la diagonale : sigma_x^2 et sigma_vx^2

C'est quoi B ??

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


#37 bird12358

bird12358

    Nouveau membre

  • Membres
  • 29 messages

Posté 03 janvier 2013 - 12:37

Perso, je n'ai jamais utiliser la partie commande de l'équation... je vis essayer de comprendre à quoi ça correspond...

Ce que j'aurais fait intuitivement, c'est d'intégrer l'accélération dans le vecteur d'état
Non Q doit être de dimensions 2 !
Sur la diagonale : sigma_x^2 et sigma_vx^2

C'est quoi B ??


Mon but en fait s'était juste de prendre en compte la position et de vitesse dans le vecteur.
Mon equation est de la forme X(k+1) = AX(k) +BU. Donc U est l'accélération selon x que j'intégre dans l'équation.

Ca pose un problème d'intégrer l'accélération en vecteur d'entré plutot que dans le vecteur d'état?
Je me suis dit que dans ce cas au moins ca montre que l'accélération est une donnée externe (directement de l'accéléromètre). La matrice A n'est que de la modèlisation.
Si j'avais voulu insérer l'accélération dans la matrice d'état, l'accélération dans le vecteur d'état n'aurait pas pu être une donnée de l'accéléromètre?

Non Q doit être de dimensions 2 !
Sur la diagonale : sigma_x^2 et sigma_vx^2


En fait je voulais mettre :
Q = diag(Te²/2, Te )*sigma_acc², ou sigma_acc est l'écart type de l'accéléromètre.
On considère ici que le bruit du process ne vient que du bruit de l'accéléromètre, pas de bruit de modèlisation pour la partie A*X

#38 Black Templar

Black Templar

    Membre

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

Posté 03 janvier 2013 - 01:11

Ca pose un problème d'intégrer l'accélération en vecteur d'entré plutot que dans le vecteur d'état?

Non, pas de problème, c'est juste que je suis moins familier avec cette façon de faire.


Si j'avais voulu insérer l'accélération dans la matrice d'état, l'accélération dans le vecteur d'état n'aurait pas pu être une donnée de l'accéléromètre?

Non, l'accélération du capteur et l'accélération du vecteur d'état sont deux choses bien différentes !
L'accélération du capteur possède un bruit et des erreurs alors que l'accélération du vecteur d'état est une estimation de la vrai accélération (on essaye de minimiser le bruit !)



En fait je voulais mettre :
Q = diag(Te²/2, Te )*sigma_acc², ou sigma_acc est l'écart type de l'accéléromètre.
On considère ici que le bruit du process ne vient que du bruit de l'accéléromètre, pas de bruit de modèlisation pour la partie A*X

Non, le capteur n'entre absolument pas en jeu dans la définition de Q !
Q représente le bruit sur ta modélisation ! (et non sur les mesures).
Ici, la première valeur de la diagonale est nul car une position, c'est bien la position précédente plus dt.vitesse
Ici, l'hypothèse se trouve sur la vitesse ! tu as considéré ta vitesse comme constante dans ta modélisation, ce qui n'est pas le cas en réalité.
Tu auras donc une matrice Q qui vaut [ 0 0 ; 0 sigma_vitesse²]

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


#39 bird12358

bird12358

    Nouveau membre

  • Membres
  • 29 messages

Posté 03 janvier 2013 - 01:59

Non, l'accélération du capteur et l'accélération du vecteur d'état sont deux choses bien différentes !
L'accélération du capteur possède un bruit et des erreurs alors que l'accélération du vecteur d'état est une estimation de la vrai accélération (on essaye de minimiser le bruit !)


Dans le cas ou je ne suis plus sur l'hypothese que la vitesse est constante, donc la je ne peux plus mettre l'accéléromètre dans le vecteur d'état, sinon je suis obligé de dire que l'accélération est une constante (comme je l'ai fait dans l'exemple précédent pour la vitesse) ? (j'essaye de me rapprocher d'un modèle réel au maximum)
--> Donc la je mets l'accéléromètre en entrée pour prendre en compte ces variations et j'ajoute l'entrée U = accx


Non, le capteur n'entre absolument pas en jeu dans la définition de Q !
Q représente le bruit sur ta modélisation ! (et non sur les mesures).
Ici, la première valeur de la diagonale est nul car une position, c'est bien la position précédente plus dt.vitesse
Ici, l'hypothèse se trouve sur la vitesse ! tu as considéré ta vitesse comme constante dans ta modélisation, ce qui n'est pas le cas en réalité.
Tu auras donc une matrice Q qui vaut [ 0 0 ; 0 sigma_vitesse²]


Dans le cas ou l'on prends en compte l'acc en entrée (plus d'hypothese de vitesse constante), la valeur de Q va forcement changé Q aura sa premiere composante non nul?
Q = [sigma_position² 0; 0 sigma_vitesse²] Comment peut-on estimer ses valeurs de Q?

Dans le document que j'ai mis en pièce jointe, il rajoute une matrice M qui est définie comme une matrice de bruit de l'état X. Et il l'incorpore dans les équations cette matrice M en plus de la matrice Q qui est nommée matrice de bruit de mesure (pour les accéléromètres qui sont en entrée).
Cette matrice M n'apparait pas sur wiki, c'est pour séparer le bruit issu de la modèlisation du vecteur X et celle de l'entrée U?

Fichier(s) joint(s)



#40 Black Templar

Black Templar

    Membre

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

Posté 03 janvier 2013 - 03:54

Dans le cas ou je ne suis plus sur l'hypothese que la vitesse est constante, donc la je ne peux plus mettre l'accéléromètre dans le vecteur d'état, sinon je suis obligé de dire que l'accélération est une constante (comme je l'ai fait dans l'exemple précédent pour la vitesse) ? (j'essaye de me rapprocher d'un modèle réel au maximum)
--> Donc la je mets l'accéléromètre en entrée pour prendre en compte ces variations et j'ajoute l'entrée U = accx

Ok, si dans ton problème la vitesse doit être constante, alors oui tu peux utiliser seulement la vitesse et la position dans ton vecteur d'état.
Dans le cas contraire, le fait de rajouter l'accélération et de faire l'hypothèse que c'est l'accélération qui est constante te permettra d'être plus réactif sur les variations de vitesses.


Dans le cas ou l'on prends en compte l'acc en entrée (plus d'hypothese de vitesse constante), la valeur de Q va forcement changé Q aura sa premiere composante non nul?
Q = [sigma_position² 0; 0 sigma_vitesse²] Comment peut-on estimer ses valeurs de Q?

Non, si l'accélération n'est pas dans le vecteur d'état, Q sera comme je te l'ai dit dans le message du dessus.
D'ailleurs Q est une matrice constante.

Dans le document que j'ai mis en pièce jointe, il rajoute une matrice M qui est définie comme une matrice de bruit de l'état X. Et il l'incorpore dans les équations cette matrice M en plus de la matrice Q qui est nommée matrice de bruit de mesure (pour les accéléromètres qui sont en entrée).
Cette matrice M n'apparait pas sur wiki, c'est pour séparer le bruit issu de la modèlisation du vecteur X et celle de l'entrée U?

Il y a des fautes dans le rapport (attention, c'est un rapport étudiant)
Q c'est le bruit de process et pas le bruit de mesure (le bruit de mesure, c'est la matrice R)

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





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

0 members, 0 guests, 0 anonymous users