Je suis coincé à modéliser un modèle de système, c'est-à-dire à obtenir mon vecteur d'état et mon vecteur d'entrée. Je suppose que la position et la vitesse sont des vecteurs d'état et que l'accélération est un vecteur d'entrée. Ma deuxième supposition est que les trois quantités sont dans le vecteur d'état et aucune dans le vecteur d'entrée.
Alors ... qu'est-ce qu'un vecteur d'état et quel est le vecteur d'entrée dans mon cas?
-
Information additionnelle:
J'obtiens des mesures du capteur de position et du capteur d'accélération. Tout se passe en 1D, par exemple en ligne droite. Je veux fusionner ces lectures (et supprimer le bruit) pour obtenir une estimation de la vitesse pour chaque pas de temps.
Ces équations décrivent le système; Je ne sais pas si elles sont bien modélisées. Si je comprends bien, il est prudent de prédire que l'accélération est constante (même si en réalité elle change) - parce que la matrice de covariance du processus corrige cette hypothèse (non?).
J'ai également quelques exemples de données avec lesquelles travailler (les valeurs d'entrée ne sont pas bruyantes ici pour plus de simplicité):
time pos acc what I should get as output (velocity)
[0.0s] 0.000, -0.000 | 18.850
[0.1s] 1.885, -0.113 | 18.850
[0.2s] 3.768, -0.227 | 18.839
[0.3s] 5.650, -0.340 | 18.816
[0.4s] 7.528, -0.452 | 18.782
[0.5s] 9.401, -0.565 | 18.737
ADDITION 2:
Pour une meilleure communication, je crée une nouvelle réponse mais doit être traitée comme un commentaire à la première réponse. Jason, vous m'avez déjà énormément aidé et je vous suis vraiment reconnaissant de votre temps. J'ai toujours des problèmes avec cela - les résultats de Kalman Filter ne sont pas comme prévu. Puissiez-vous trouver le temps, veuillez lire ce qui suit, merci. Je vous dois déjà une bière ou deux (ou des cafés si vous voulez) - si vous avez paypal contactez moi sur primoz [at] codehunter.eu :)
J'ai implémenté le modèle que Jason avait proposé en première réponse. J'ai ajouté la secousse comme quatrième variable d'état. Après des heures de révision, j'ai décidé de revenir ici pour de l'aide. Les valeurs que je retire de KF ne sont pas celles attendues. Le tableau ci-dessous représente les données des 10 premières itérations de l'algorithme. Remarquez comment la secousse augmente à chaque pas de temps, ce qui rend les autres estimations erronées. Après une seconde, la différence entre l'accélération réelle et estimée est supérieure à 1 m / s² (voir tableau, dernière ligne)!
real measured estimated real
time pos acc pos acc pos acc jerk vel[!] velocity
0.0 0.000 -0.000 -0.040 0.030 | -0.300 -0.060 0.000 18.850 <--> 18.850
0.1 1.885 -0.113 1.965 -0.153 | 1.585 -0.061 -0.006 18.844 <--> 18.844
0.2 3.768 -0.227 3.778 -0.247 | 3.469 -0.066 -0.035 18.835 <--> 18.827
0.3 5.650 -0.340 5.750 -0.370 | 5.351 -0.090 -0.122 18.815 <--> 18.799
0.4 7.528 -0.452 7.358 -0.452 | 7.228 -0.152 -0.291 18.769 <--> 18.759
0.5 9.401 -0.565 9.251 -0.555 | 9.094 -0.282 -0.574 18.673 <--> 18.708
0.6 11.269 -0.677 11.309 -0.717 | 10.938 -0.518 -1.006 18.494 <--> 18.646
0.7 13.130 -0.788 13.260 -0.758 | 12.752 -0.840 -1.490 18.233 <--> 18.573
0.8 14.983 -0.899 15.043 -0.949 | 14.520 -1.286 -2.096 17.854 <--> 18.488
0.9 16.827 -1.009 16.977 -1.089 | 16.235 -1.838 -2.770 17.362 <--> 18.393
1.0 18.661 -1.118 18.831 -1.168 | 17.890 -2.477 -3.476 16.762 <--> 18.287
Mes matrices sont ici:
Qu'est-ce qui cause cet ajout à chaque pas de temps pour jerk ? L'une de mes matrices est-elle incorrecte?
Il en va de même avec la première solution (modèle à seulement 3 états) - l'accélération ne change pas comme il se doit.
DERNIÈRE ÉDITION:
J'ai finalement réussi à le faire fonctionner. Je ne sais pas s'il y a eu une erreur de mise en œuvre ou de mauvaises matrices P&Q.