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

Tengo un magnetómetro, un acelerómetro y un giroscopio que nadan (conectados 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 sobre brújulas compensadas por 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 aplicación . Me parece que esto haría que la compensación de inclinación fuera muy difícil; solo sería posible cuando está parado.

¿Alguien sabe si es posible?

Debería poder calcular vectores inmediatos y luego promediar esos vectores durante 10 a 20 segundos más o menos para obtener resultados razonables... ? El filtrado de paso bajo debería ser aún mejor. No estoy dando una respuesta porque esto es algo especulativo.
Incluso si está parado, está acelerando al mismo tiempo. Tu acelerómetro medirá la aceleración debida a la gravedad. ¿Qué estás preguntando en realidad?
@Samuel Sí, sé que tendré la aceleración de 1 g en el eje Z. Pensé que esto es lo que busca la compensación de inclinación. Así que no sé qué tan bien funciona si hay una aceleración adicional además de la gravedad.
La aceleración de @ThomasO 1g en el eje Z es el caso trivial, el dispositivo no está inclinado, ya está. Cualquier compensación de inclinación que valga la pena se ocupará de todos los demás casos. Parece que lo que realmente quiere hacer es separar el vector de gravedad de las otras aceleraciones, o convertir el dispositivo en un AHRS. ¿Correcto? ¿Puedes usar la cinemática del punto de unión humano para ayudarte en tus cálculos?
@Samuel: ah, sí, ya veo lo que quieres decir. En mi caso, no puedo confiar en el acelerómetro para determinar la orientación, ¿puedo compensar la inclinación?
@ThomasO Tal vez. Me centraría en el panorama general. Es posible que aún pueda obtener el encabezado si conecta todos sus datos conocidos para el sistema. Como mencioné en el comentario anterior, incluir la información sobre cómo se sujeta el dispositivo al cuerpo te ayudará bastante, ya que limitará las posibles orientaciones con las que debes lidiar. No vas a poder estimar, pero podrías tener una idea de direccionalidad y duración.

Respuestas (1)

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

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

Básicamente, necesita usar algo como un filtro de Kalman para combinar todos sus datos (aceleración bruta, 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 la 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 escala y desplazamiento) en los acelerómetros y giroscopios, y luego puede usar esta estimación de la actitud del sensor para inclinar- compensar 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ía 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 Explorador inercial , pero es muy costoso y probablemente sea demasiado para su aplicación. Si busca, debería poder encontrar proyectos de código abierto que satisfagan sus necesidades.