¿Se puede compensar la inclinación de un magnetómetro de 3 ejes cuando se mueve / acelera?

4

Tengo un magnetómetro, un acelerómetro y un giroscopio que van todos a nadar (unidos a una persona). Los datos se registran y ahora tengo una muestra de esos datos.

Quiero calcular el rumbo magnético en el que viajaba el usuario. Sin embargo, todos los documentos que puedo encontrar en las brújulas con compensación de inclinación (en su mayoría son aplicables a teléfonos) no mencionan nada sobre la aceleración al mismo tiempo, lo que sucede en mi aplicacion Me parece que esto haría muy difícil la compensación de inclinación; Sólo sería posible cuando está estacionario.

¿Alguien sabe si es posible?

    
pregunta Thomas O

1 respuesta

1

De alguna manera, no me di cuenta de esta pregunta en el momento en que se me hizo esta pregunta o la hubiera respondido antes.

Sí, lo que quieres hacer es definitivamente posible, y existe un software para ayudarte a hacerlo, pero desafortunadamente, parte de él es bastante caro.

Básicamente, necesitas usar algo como un filtro de Kalman para combinar todos tus datos (aceleración sin formato, velocidad angular) y lecturas de campo magnético) en un modelo completo del sensor que incluye tanto su posición relativa como su actitud absoluta (orientación). (Si también agrega algo como un receptor GPS, también puede obtener una posición absoluta).

El filtro funciona de tal manera que usa el magnetómetro para corregir los errores a largo plazo (por ejemplo, cambios de compensación y de escala) en los acelerómetros y giroscopios, y luego puede usar esta estimación de la actitud del sensor para compensar por inclinación las lecturas del campo magnético para obtener un rumbo magnético. Como beneficio adicional, también obtiene el verdadero "rumbo sobre el suelo" del sensor a partir de la secuencia de estimaciones de posición, que podrían diferir del rumbo si el nadador está nadando en una corriente cruzada de algún tipo.

En cuanto al software para realizar este tipo de procesamiento posterior, un ejemplo que conozco se llama Inertial Explorer , pero es muy caro y probablemente sea demasiado para su aplicación. Si busca, debería poder encontrar proyectos de código abierto que satisfagan sus necesidades.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas