Estoy tratando de desarrollar la aplicación de detección de movimiento para Android. La aplicación debería poder seguir el movimiento del teléfono en el espacio y asignarlo a movimiento en la pantalla de la computadora. Estoy usando un acelerómetro de 3 ejes y dado que los datos son muy ruidosos, estoy usando el filtro Kalman.Filtro de Kalman y calidad de las variables de estado internas
El estado interno es de 6 vectores de componentes [velocidad-x, velocidad-y, velocidad-z, accel-x, accel-y, accel-z] y el estado medido es de 3 componentes vectoriales [accel-x, accel-y , accel-z].
El filtro funciona muy bien en los valores medidos, pero la velocidad sigue siendo muy ruidosa.
Ahora me pregunto si este es un comportamiento normal o estoy haciendo algo mal, ya que mi comprensión de filtro de Kalman es muy básico. Estoy utilizando biblioteca JKalman y siguiente matriz de transición de estados (dt es 1/15 que es aproximado frecuencia de actualización del sensor)
doble [] [] A = { {1, 0, 0, dt, 0, 0}, {0, 1, 0, 0, dt, 0}, {0, 0, 1, 0, 0, dt}, {0, 0, 0, 1, 0, 0}, { 0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 1} };
También he configurado mis propias matrices de covarianza con covarianzas calculadas a partir de datos de prueba. Esto mejoró un poco la señal de aceleración, pero no tuvo efecto en la velocidad.
Actualmente estoy capaz de lograr stdvar
[0,0632041857 0,0607274545 0,0886326602] para la velocidad [x, y, z]
[0,0041689678 0,004423822 0, 0074808552] para la aceleración [x, y, z].
Estoy bastante contento con la señal de aceleración y creo que no puedo mejorarla mucho más, pero me gustaría mejorar la calidad de la señal de velocidad.
Bueno, en realidad está funcionando bastante bien, el único problema son los movimientos realmente lentos y muy rápidos (como se esperaba). Solo necesito un movimiento relativo (entonces sé que fue hacia la izquierda, derecha, arriba, abajo) y posiblemente su magnitud. Para el problema de velocidad, estoy utilizando el vertido de velocidad (si se aplica una aceleración cero, la velocidad se multiplica por el factor <1.0 en cada paso de tiempo, por lo que se reduce a cero rápidamente). De todos modos, gracias por el material, voy a echar un vistazo lo antes posible, parece interesante. – Andraz
@Andraz Interesante. Entonces no necesitas velocidad precisa. Entonces, lo que describes puede funcionar. Bueno, ¡buena suerte de todos modos! – Ali