8

Tengo un acelerómetro y un magnetómetro que producen lecturas crudas de X, Y y Z. De esto necesito determinar el rumbo magnético de un objeto.Cálculo del rumbo magnético utilizando acelerómetro sin procesar y datos del magnetómetro

No soy tan bueno en trigonometría, pero he creado una fórmula que responde bastante bien a la rotación del dispositivo, pero también responde al movimiento que uno no consideraría relevante, como inclinar la dispositivo de tal manera que no tenga impacto en la dirección en que apunta. Tal como ponerlo plano y "rodar" el dispositivo.

Creo que la fórmula que tengo para calcular el rumbo magnético está bien, pero creo que mis radios de cabeceo y balanceo para la entrada son incorrectos.

Supongo que el núcleo de mi pregunta (a menos que alguien realmente tenga una fórmula que lo haga), es cómo se calculan los ángulos, en radianes, usando un acelerómetro para cabeceo y balanceo.

En segundo lugar, cualquier información sobre la fórmula del título en sí sería genial.

+0

¿Qué encabezado está tratando de calcular y en relación con qué objeto? ¿Puedo asumir que estás hablando de un teléfono? – Seth

Respuesta

2

Dependiendo de la precisión de su aplicación requiere, puede que tenga que resolver varios problemas:

  1. son los ejes del acelerómetro calibrado? He visto acelerómetros MEM que tenían ejes que no eran mutuamente perpendiculares, y tenían características de respuesta significativamente diferentes para cada eje (típicamente X e Y coincidirían, y Z sería diferente). Deberá sintetizar los ejes XYZ ideales a partir de la lectura física que proporcione su dispositivo. (Google 'acelerómetro de calibración'.)

  2. ¿Los ejes del magnetómetro están calibrados? Problema similar al anterior, excepto que es mucho más difícil de verificar: es muy difícil generar campos magnéticos uniformes calibrados. Si usa el campo geomagnético ambiental, necesitará controlar cuidadosamente el magnetismo local de su entorno de trabajo y sus herramientas. (Google 'calibración del magnetómetro'.)

  3. Después de que el acelerómetro y el magnetómetro se hayan calibrado individualmente, sus ejes deben calibrarse uno con respecto al otro. Dado que estos dos dispositivos suelen soldarse a una PCB, casi se garantiza una desalineación significativa. En muchos casos, el diseño de la placa y los parámetros del dispositivo pueden incluso no permitir que los ejes XYZ se correspondan entre sí. Esta puede ser la parte más difícil de hacer desde la perspectiva del laboratorio, por lo que te recomendaría que hicieras una comparación directa utilizando otro hardware que tenga ambos tipos de sensores y ya esté calibrado (como un teléfono iPhone o Android, pero verifica el dispositivo antes utilizar). Normalmente, esto se logra ajustando las dos matrices de calibración anteriores hasta que generan vectores que están alineados correctamente entre sí.

  4. Solo después de generar vectores magnéticos y acelerómetros mutuamente calibrados, puede aplicar las soluciones sugeridas por los demás encuestados.

sólo he descrito la solución estática, donde tanto el magnetómetro y acelerómetro están inmóviles en relación con los campos gravitatorios y magnéticos locales. Si necesita generar respuestas en tiempo real mientras el sistema se mueve rápidamente, deberá tener en cuenta el comportamiento horario de cada sensor. Hay dos formas básicas de hacerlo: 1) Aplicar filtros de dominio de tiempo a cada sensor para que sus salidas compartan un dominio de tiempo común (generalmente agregando algo de retraso). 2) Use modelado predictivo para modificar las salidas del sensor en tiempo real (menos demora, pero más ruido).

He visto los filtros de Kalman utilizados para tales aplicaciones, pero aplicarlos en un dominio vectorial puede requerir el uso de cuaterniones en lugar de matrices de Euler. Los cuaterniones son más fáciles de usar computacionalmente (se necesitan menos operaciones en comparación con las matrices), pero descubrí que son mucho más difíciles de comprender y acertar.

O bien, puede elegir una ruta completamente diferente, y usar estadísticas y ajuste de datos para hacer todo el trabajo anterior en un paso gigante. Considere el problema de la siguiente manera: dados 6 valores de entrada (XYZ cada uno desde un magnetómetro y acelerómetro sin calibrar) y una referencia al dispositivo (suponiendo que sea de mano, y hay una flecha pintada en la caja), genere un ángulo único que representa el cojinete magnético hacia el cual apunta la flecha de la caja, y la elevación de la flecha relativa al vector de gravedad (inclinación de la caja).

Usando un dispositivo de referencia calibrado (como se mencionó anteriormente), vincúlelo con el dispositivo a calibrar y tome varios cientos de puntos de datos, con el dispositivo en diferentes orientaciones. Luego use un poderoso paquete matemático como Matlab, MathCAD, R o SciPy para configurar y resolver las ecuaciones no lineales para crear las matrices de transformación.

+0

PD: He utilizado una base de telescopio computarizada de bajo costo para hacer esta última parte: hacerlo manualmente no es realmente factible. – BobC

Cuestiones relacionadas