He intentado varios algoritmos para obtener cabeceo, balanceo y guiñada bajo continuas aceleraciones lineales y vibraciones (más pequeñas que 0.4 g, frecuencia inferior a 10 HZ). Ninguno de ellos da buenos resultados porque las lecturas derivan o se ven demasiado afectadas por las aceleraciones lineales. Lo que quiero lograr es que cuando la aceleración externa sea menor que + -0.4g, el error en pitch and roll debería ser menor que + -1deg.
He intentado estos algoritmos:
Algoritmo de Madgwick . Cuando la ganancia Beta se establece muy alta, la convergencia es rápida pero los ángulos son más susceptibles a las aceleraciones lineales. Lo ajusté y reduje el error bajo aceleraciones lineales a + -0.5 grados. Sin embargo, si la vibración es continua, las lecturas se desviarán y tardará una eternidad en converger a valores verdaderos. Tiene sentido porque bajo aceleraciones lineales, se confía más en el giroscopio y los ángulos calculados se desvían a medida que se desplaza la integración del giroscopio.
El algoritmo de Mahony . Por el contrario de Madgwick, no va a la deriva, independientemente de los valores que use para Ki y Kp. Sin embargo, siempre se ve afectado por aceleraciones lineales. (Errores mayores que + -6deg)
Filtro tradicional de Kalman . Se ha dedicado mucho tiempo a ajustar esos enormes vectores R y Q. Hasta ahora tiene el mismo rendimiento que Mahony's.
Estoy usando la afeitadora IMU . Sé que con sensores baratos es imposible lograr el mismo resultado que este .
Hay un par de opciones más como UKF, pero es difícil de entender o implementar.
Cualquier sugerencia es bienvenida.
fuente
Respuestas:
En primer lugar, asegúrese de comprender dos puntos clave aquí:
La determinación de la actitud solo a partir de los datos de la IMU es intrínsecamente ambigua en presencia de aceleración lineal . Sin un conocimiento adicional sobre la naturaleza de las aceleraciones, siempre habrá un límite superior para la precisión que puede lograr.
La precisión está limitada por la deriva en las mediciones integradas del giroscopio . Con una integración y datos de giroscopio perfectos, los datos del acelerómetro no serían necesarios en absoluto. Cuanto más se acerque a la perfección, más podrá ignorar las aceleraciones.
La selección del algoritmo de orientación es en gran medida irrelevante aquí. Todos ellos funcionan según el mismo principio: usar la dirección de la aceleración gravitacional para corregir los datos del giroscopio integrado, con cierta cantidad variable de ponderación entre los dos. Si ha intentado ajustar los parámetros y no ha logrado los resultados que desea, es poco probable que lo haga mejor con un algoritmo diferente.
Entonces, esencialmente hay dos cosas que puedes hacer.
La segunda opción es difícil de discutir porque depende de los detalles de la moción que está estudiando. Hay algunos trucos simples, como descartar o desacelerar las aceleraciones fuera de un rango determinado. Esencialmente, estos se reducen a modelar las aceleraciones lineales como solo breves ocurrencias. Si su sistema está en movimiento continuo, no son de mucha ayuda.
Sin embargo, hay varias cosas que puede hacer para mejorar su integración giroscópica:
Tiene razón en que los sensores que está utilizando no son del más alto grado disponible. Sin embargo, es posible obtener muy buenos resultados de los sensores de los consumidores si están suficientemente bien caracterizados y calibrados.
fuente