Estoy atascado en modelar un modelo de sistema, es decir, obtener mi vector de estado y el vector de entrada. Supongo que la posición y la velocidad son vectores de estado y la aceleración es el vector de entrada. Mi segunda suposición es que las tres cantidades están en el vector de estado y ninguna en el vector de entrada.
Entonces ... ¿qué es el vector de estado y qué es el vector de entrada en mi caso?
-
Información adicional:
Recibo mediciones del sensor de posición y el sensor de aceleración. Todo está sucediendo en 1D, por ejemplo, en línea recta. Quiero fusionar estas lecturas (y eliminar el ruido) para obtener una estimación de la velocidad para cada paso de tiempo.
Estas ecuaciones describen el sistema; Sin embargo, no estoy seguro de si están modelados correctamente. Si entiendo correctamente, es seguro predecir que la aceleración es constante (aunque en realidad cambie), porque la matriz de covarianza del proceso corrige esta suposición (¿verdad?).
También tengo algunos datos de muestra para trabajar (los valores de entrada no se mencionan aquí por simplicidad):
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
ADICION 2:
Para una mejor comunicación, estoy creando una nueva respuesta, pero debería tratarse como un comentario a la primera respuesta. Jason, ya me has ayudado enormemente y estoy realmente agradecido por tu tiempo. Sin embargo, todavía tengo problemas con esto: los resultados de Kalman Filter no son los esperados. Puede encontrar el tiempo por favor revise lo siguiente, gracias. Ya te debo una cerveza o dos (o cofres si quieres). Si tienes PayPal, contáctame en primoz [at] codehunter.eu :)
Implementé el modelo que Jason había propuesto en la primera respuesta. Agregué el tirón como cuarta variable de estado. Después de horas de revisión, decidí volver aquí por ayuda. Los valores que obtengo de KF no son los esperados. La siguiente tabla representa los datos de las primeras 10 iteraciones del algoritmo. Observe cómo el tirón aumenta cada vez que se equivocan otras estimaciones. ¡Después de un segundo, la diferencia entre la aceleración real y la estimada es de más de 1 m / s² (ver tabla, última fila)!
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
Mis matrices están aquí:
¿Qué está causando esta adición en cada paso de tiempo para imbécil ? ¿Alguna de mis matrices está mal?
Lo mismo ocurre con la primera solución (solo modelo de 3 estados): la aceleración no está cambiando como debería.
ÚLTIMA EDICIÓN:
Finalmente logré hacerlo funcionar. No estoy seguro de si hubo un error de implementación o matrices P&Q incorrectas.
fuente