Algoritmo AHRS bajo aceleraciones lineales continuas

9

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:

  1. 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.

  2. 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)

  3. 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.

Timtianyang
fuente
¿Cómo te estás integrando para Kalman?
C. Towne Springer
Usando la integración de Euler, pero las rotaciones son estrictamente un eje para evitar DCM. @ C.TowneSpringer
Timtianyang
¿Se supone que eso funciona bien? La última vez que hice esto (ALCM) Euler no era adecuado. Euler es un método de primer orden con error local proporcional al cuadrado del tamaño del paso y error bruto proporcional al tamaño del paso. Usamos Runge-Kutta de cuarto orden con un filtro Kalman. Creo que Newton-Feynman o Euler tienen una conjetura inicial para comenzar Runge-Kutta. ¿Tiene el procesamiento para manejar eso a una buena tasa de actualización?
C. Towne Springer
Gracias por la sugerencia. Se pasó por alto el error local del método de integración euler. Planeamos hacer el filtrado en la publicación, por lo que no tenemos restricciones importantes en la complejidad del cálculo. @ C.TowneSpringer
Timtianyang

Respuestas:

3

En primer lugar, asegúrese de comprender dos puntos clave aquí:

  1. 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.

  2. 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.

  1. Mejore la precisión de su integración giroscópica.
  2. Modele la naturaleza de las aceleraciones lineales de alguna manera.

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:

  1. Obtenga la mejor estimación posible del sesgo giroscópico . Tome lecturas de giroscopio estático durante varios segundos inmediatamente antes de usar, y promedie estos para obtener sus valores de desplazamiento. No confíe en una calibración previa única.
  2. Trate de minimizar la deriva debido a la temperatura. Deje que la IMU se caliente a una temperatura de funcionamiento estable antes de la calibración / uso. Intente mantenerlo a una temperatura constante durante la operación.
  3. Mejora tu modelo de calibración. Considere incluir efectos de eje cruzado y no linealidad, así como solo escala y desplazamiento.
  4. Utiliza un mejor método de integración. Ya hay algunas ideas en los comentarios sobre su pregunta.
  5. Vea si puede rastrear la deriva del giroscopio. Si el algoritmo de orientación tiene que corregir constantemente la deriva en una dirección particular, esto puede detectarse y usarse para ajustar suavemente los valores de sesgo.

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.

Martin L
fuente
¿Algún sensor de consumo recomendado?
Timtianyang