Seguimiento del desplazamiento del acelerómetro / giroscopio de suavizado para el movimiento del ratón

0

Estoy trabajando en un proyecto para combinar una lectura de aceleración lineal de un acelerómetro y un giroscopio, ajustado a la gravedad, en el desplazamiento / posición en un plano x-y, específicamente para convertir el movimiento del sensor en movimiento del mouse. Tengo una implementación básica funcionando, pero el movimiento se siente muy ruidoso y poco natural.

Esencialmente estoy siguiendo el método de "integración doble". He investigado y estoy familiarizado con algunos de los límites a global precisión de este enfoque, pero tengo la impresión de que la gente está hablando de esto en el contexto de la estimación de la navegación, por lo que esperaba que pudiéramos obtener una" suficiente buena " La solución para el movimiento del ratón se siente relativamente natural. Especialmente ya que en algún nivel, si se usa para registrar el movimiento del mouse, habrá un circuito de comentarios del usuario que controla el mouse.

Uno de los mayores problemas es que no he encontrado una forma satisfactoria de eliminar el ruido que no degrade demasiado la sensación general del movimiento. He probado los filtros de Kalman, pero solo lo he puesto en funcionamiento a través de bibliotecas externas como Kalman.js dada la complejidad de las matemáticas detrás eso. Así que, en parte, podría haberse reducido a no tener los parámetros correctos para el filtro. Sin embargo, también he leído que un filtro de Kalman puede ser una mala elección para suavizar los movimientos del mouse, ya que es difícil modelar el sistema subyacente de una persona que mueve un mouse para interactuar con una computadora.

¿Existe alguna técnica de filtrado diferente que podamos aplicar para suavizar las lecturas de movimiento? ¿O está produciendo una estimación razonable del desplazamiento de corta duración, incluso para esta aplicación de producir movimientos del mouse, en última instancia, demasiado difícil con solo un acelerómetro / giroscopio barato?

    
pregunta wik

2 respuestas

0

Como no obtenemos muchos detalles de su diseño (hardware, software, etc.), solo puedo ofrecer una respuesta genérica.

El primer paso es mirar la salida de su sensor. ¿Puede obtener un canal de telemetría de su sistema que pueda trazar y visualizar? A partir de esto, podrá determinar su ruido estático frente a la señal significativa que está tratando de detectar y responder. ¡Y cuando los acelerómetros están involucrados, el ruido abundará!

Una vez que tenga estos datos, estará bien equipado para diseñar un filtro que se adapte a sus necesidades. Especialmente con las IMU, no ayuda simplemente disparar con un filtro y decir que es bueno. Necesita leer su señal en tiempo real y diseñar un filtro que se ajuste a la necesidad. Si encuentras que necesitas a Kalman, entonces está bien, pero quizás no lo necesites. O quizás lo quieras pero no puedes hasta que hayas modelado tu ruido.

Los diferentes filtros tienen diferentes pros y contras, por lo que debe determinar qué filtro puede aplicar y cuánto le costará (generalmente se requiere tiempo de demora). Con las IMU, no se sorprenda si también tiene que colocar algunos filtros, y quizás el proceso de filtro > proceso > filtro > para un par de iteraciones hasta que pueda detectar claramente sus datos significativos.

    
respondido por el Smith
0

En resumen, tiene el filtro kalman y el filtro de partículas (mejor) para crear estimaciones de los estados. Los filtros de partículas funcionan mejor en el estado y son similares a los filtros de Kalman. Es difícil hacer que funcionen debido a la complejidad que tiene para puntear todas sus I y cruzar todas sus T, pero vale la pena porque estimarán la posición porque rastrean la media y la varianza de los estados.

Con un filtro de partículas o Kalman, solo debe preocuparse por el sistema físico que desea modelar y la precisión del sensor (no la entrada, en su caso, la persona es parte de la entrada). En este caso, el acelerómetro, que en realidad es un sistema de doble integrador. Usted integra la aceleración para obtener la velocidad y la velocidad para obtener la posición. Las matemáticas resultan ser las mismas si usas un integrador doble frente a un filtro de Kalman. Podrías usar el mismo conjunto de ecuaciones de estado para ambos. La diferencia es que el filtro de Kalman también rastrea la media y la varianza.

Lo primero que haces para los filtros de Kalman o para modelar cualquier sistema físico es crear un modelo, la mayoría de las personas eligen el espacio de estados como una representación de las ecuaciones porque es una matriz y es fácil de manipular. Si desea implementar esto en el código, también debe considerar que su sistema se está muestreando, por lo que debe convertir el sistema de ecuaciones en tiempo discreto. Luego su plug and chug en las ecuaciones de filtro de Kalman.

Luego tienes filtros de suavizado como filtros de paso bajo, filtros de mediana y Savitzky Golay para nombre unos pocos si solo desea filtrar la salida de cualquier estado que estime su uso.

Los filtros solo pueden hacer mucho, si no puede resolver el problema con el suavizado, entonces probablemente necesite cambiar su sistema y obtener un sensor con menos ruido y más resolución. Otra opción es usar dos acelerómetros y alimentar los estados de ambos al filtro kalman, que por lo que entiendo es lo que hacen algunos sensores de posición 3d, pero también tendría que resolver la ecuación de estado para dos sensores y probablemente tener en cuenta la distancia entre ellos.

    
respondido por el laptop2d

Lea otras preguntas en las etiquetas