Estoy en el proceso de construir una IMU simple para un piloto automático. Estoy usando Sparkfun, 9 Degrees of Freedom - Razor IMU. Es sorprendentemente fácil de usar.
Pude obtener los datos del acelerómetro, el girocompás y el magnetómetro de manera inmediata. Después de la calibración de los sensores y un filtro complementario simple, tengo valores confiables de balanceo y inclinación.
Ahora tengo un problema con la guiñada ...
Encontré aquí enlace la ecuación para evitar el desvío del valor del magnetómetro :
$$ X_h = X_m \ cdot cos (Pitch) + Z_m \ cdot sin (Pitch) $$ $$ Y_h = X_m \ cdot sin (Roll) \ cdot sin (Pitch) + Y_m \ cdot cos (Roll) - Z_m \ cdot sin (Roll) \ cdot cos (Pitch) $$ con Xm, Ym y Zm son mediciones de sensores magnéticos
$$ Yaw = Título = arctan (\ frac {Y_h} {X_h}) $$
Suena simple, pero no puedo hacerlo. Espero que alguien que ya haya trabajado en IMU pueda ayudarme a resolver este problema.
Aquí ( enlace ) es un archivo excel con datos y ecuaciones de IMU.
El gráfico (en el archivo de Excel) muestra resultados (primero rodé 90 grados, luego giré 90 grados y luego desvié 90 grados).
El balanceo y el tono se calculan mediante la IMU (programada con Arduino IDE), son buenas.
La guiñada se calcula en Excel usando un giro (bueno pero a la deriva con el tiempo) y también calculé la guiñada usando la ecuación de arriba (línea verde) y es totalmente errónea (debería seguir la línea / púrpura del giroscopio).
Cualquier ayuda será apreciada.