Merci à tous ceux qui ont posté hier des commentaires / réponses à ma requête ( Implémentation d'un filtre de Kalman pour la position, la vitesse, l'accélération ). J'ai regardé ce qui était recommandé, et en particulier à la fois (a) l'exemple de Wikipédia sur la position et la vitesse à une dimension et également un autre site Web qui considère une chose similaire .
Mise à jour du 26 avril 2013 : la question d'origine contenait ici des erreurs, liées au fait que je n'avais pas bien compris l' exemple wikipedia sur la position et la vitesse unidimensionnelles . Avec ma meilleure compréhension de ce qui se passe, j'ai maintenant reformulé la question et je l'ai concentrée plus étroitement.
Les deux exemples auxquels je me réfère dans le paragraphe d'introduction ci-dessus supposent que seule la position est mesurée. Cependant, aucun des deux exemples n'a de calcul pour la vitesse. Par exemple, l'exemple Wikipedia spécifie la matrice comme , ce qui signifie que seule la position est entrée. En se concentrant sur l'exemple de Wikipedia, le vecteur d'état du filtre de Kalman contient la position et la vitesse , c'est-à-dire
Supposons que la mesure de la position à l' instant est - x k . Ensuite , si la position et la vitesse à l' instant k - 1 étaient x k - 1 et ˙ x k - 1 , et si une est une accélération constante qui applique dans l'intervalle de temps k - 1 à k , à partir de la mesure de x , il est possible déduire une valeur pour un en utilisant la formule
Cela implique que au moment , une mesure ˙ x k de la vitesse est donnée par
Toutes les quantités sur le côté droit de l'équation , x k - 1 et ˙ x k - 1 ) sont normalement distribués variables aléatoires avec des moyens connus et les écarts types, de sorte que le R de matrice pour le vecteur de mesure
peut être calculé. Est-ce une façon valable d'introduire des estimations de vitesse dans le processus?
la source
Réponses:
Si vous choisissez votre état de manière appropriée, les estimations de vitesse sont "gratuites". Voir la dérivation du modèle de signal ci-dessous (pour le cas 1-D simple que nous avons examiné).
Modèle de signal, prise 2
That gives differentG matrix from the previous version, but the F and H matrices should be the same.
If I implement this in
scilab
(sorry, no access to matlab), it looks like:Then, I can apply the Kalman filter equations to thisy (the noisy measurements).
So we have our noisy measurementsy , and we've applied the Kalman filter to them and used the same signal model to generate y as we do to apply the Kalman filter (a pretty big assumption, sometimes!).
Then following plots show the result.
Plot 1:y and xk versus time.
Plot 2: A zoomed view of the first few samples:
Plot 3: Something you never get in real life, the true position vs the state estimate of the position.
Plot 4: Something you also never get in real life, the true velocity vs the state estimate of the velocity.
Plot 5: The norm of the state covariance matrix (something you should always monitor in real life!). Note that it very quickly goes from its initial very large value to something very small, so I've only shown the first few samples.
Plot 6: Plots of the error between the true position and velocity and their estimates.
If you study the case where the position measurements are exact, then you find that the Kalman udpate equations produce exact results for BOTH position and speed. Mathematically it's straightforward to see why. Using the same notation as the wikipedia article, exact measurements mean thatzk+1=xk+1 . If you assume that the initial position and speed are known so that Pk=0 , then P−k+1=Q and the Kalman gain matrix Kk+1 is given by
This means that the Kalman update procedure produces
As you can see, the value for the speed is given by exactly the formula you were proposing to use for the speed estimate. So although you couldn't see any kind of calculation(xk−xk−1)/dt for speed, in fact it is hidden in there after all.
la source