¿Por qué veo una desviación cuando utilizo el algoritmo Madgwick para corregir la orientación con 9 DOF IMU?

4

Estoy tratando de rastrear correctamente la orientación de un sensor con acelerómetro, giroscopio y magnómetro, usando algoritmo de código abierto de Madgwick. El algoritmo devuelve cuaternarios que representan la rotación entre los marcos internos y externos. Sin embargo, cuando se usa este código, los cuaterniones devueltos parecen estar sufriendo una deriva e incluso después de cavar varias veces no puedo encontrar cuál puede ser la causa. En la parte superior está lo que se devuelve, y en la parte inferior están los valores aproximadamente correctos (de un experimento con una frecuencia de muestreo diferente): . ¿Podría ser causado por una frecuencia de muestreo demasiado baja? El informe interno de Madgwick muestra un límite inferior de 10 hz, y esta muestra se tomó a 5 hz. Sin embargo, no tengo claro cómo ese problema produciría estos resultados, pero esa es actualmente mi mejor estimación. Creo que el problema también podría ser la aceleración lineal de la gravedad, pero mi entendimiento es que la influencia de la gravedad puede eliminarse una vez que se hayan calculado los cuaterniones, así que si ese es el problema, ¿cómo puedo eliminar la aceleración lineal para calcularlos en primer lugar? ?

Editar: El acelerómetro y los valores de giro no sufren deriva, y este efecto solo emerge con los cuaterniones calculados.

    
pregunta user2605159

2 respuestas

2

El problema es la física básica de cómo funcionan los acelerómetros y giroscopios, y el hecho de que estas señales deben integrarse para obtener la posición.

Ningún acelerómetro o giro electrónico emite exactamente 0 sin aceleración o movimiento circular. Estos sensores pueden tener poca desviación (a veces), pero tienen desplazamiento. La deriva viene de la integración del desplazamiento.

Los datos de giro solo requieren un nivel de integración, y se pueden corregir parcialmente detectando el vector de gravedad y el vector magnético. Sin embargo, esto no cubre todos los grados de libertad.

Los datos del acelerómetro requieren una doble integración para obtener la posición, y no hay ninguna referencia para corregir los errores acumulados en contra.

Básicamente, los acelerómetros y giroscopios MEMS baratos no son muy buenos pasados unos segundos desde una posición y orientación conocidas, y no hay nada que puedas hacer al respecto solo con los datos de acc y gyro.

    
respondido por el Olin Lathrop
1

La respuesta de @Llin Lathrop es incorrecta. Desafortunadamente, no tengo la reputación ni de votar ni de comentar sobre su respuesta. Es curioso que haya elegido afirmar que lo que se está logrando en el documento que vincula no es físicamente posible ...

Como el artículo de madgwick demuestra que es posible mantener estimaciones de orientación estables durante largos períodos de tiempo utilizando Sólo un 9 DOF MEMS MARG. Su algoritmo también fue referenciado en un montón de hardware diferente de Kris Winer. Él, en particular, demuestra un rastreo virtualmente libre de desviaciones durante un período de media hora con ambos periodos de tiempo quietos y movidos. El error relativo de la orientación absoluta es menor que un grado durante este período de tiempo. De manera impresionante, esto se logra sin recurrir a un filtro completo de Kalman y solo requiere operaciones escalares en lugar de necesitar la inversión computacionalmente costosa de la matriz requerida por un filtro de Kalman.

Mirándolo a través de la lente de la observabilidad, el problema de la estimación de la orientación es un problema con seis estados acoplados. 3 estados para la orientación en sí y 3 estados para las derivadas de la orientación (es decir, las tasas angulares)

Obviamente, los giroscopios permiten la medición directa de los últimos tres estados. Esto deja el tema de los tres estados de orientación. Suponiendo que hay un campo gravitatorio estático y un campo magnético que no están alineados, podemos corregir dos de las tres direcciones. La estructura del sistema de coordenadas impone restricciones en la relación entre las tres direcciones permitiendo que la tercera sea fijada simplemente por construcción. Como tal, el sistema es observable, es decir, no, a diferencia de la afirmación de @Olin Lathrop, la "física" explícitamente le permite determinar la orientación completa incluso sin depender de ninguna integración. Como tal, su objeción con respecto al error de integración es completamente infundada.

Dicho esto, la integración sigue siendo un proceso útil, ya que permite que se realice la fusión del sensor, lo que quiere decir que esencialmente está realizando un mejor ajuste entre las posiciones incrementales de la velocidad angular implícita y las orientaciones absolutas incrementales directamente medidas. Dado que es probable que no estén correlacionados, ya que miden tres fenómenos físicos completamente separados, le permiten mejorar significativamente la precisión y la solidez de su estimación de orientación.

Esto nos lleva al problema que usted planteó con respecto al origen del límite de frecuencia inferior en la precisión de seguimiento. Al no ser el autor del algoritmo y solo haberlo utilizado como un componente en una solución más grande donde su desempeño fue adecuado, no he investigado personalmente cada línea de cada ecuación en el documento, pero dicho esto es la naturaleza temporal del problema. de hecho apunta a algo relacionado con los pasos de tiempo.

La integración numérica en sí misma puede contribuir, pero es probable que no sea el principal impulsor, ya que su rendimiento debería ser razonablemente robusto frente a pasos de tiempo más grandes. Me gustaría ver el descenso de gradiente de un solo paso (segundo párrafo en la página 7 del documento vinculado) que se está utilizando como algoritmo de optimización para ajustar las observaciones del sensor a los campos supuestos. En frecuencias más altas, esta simplificación es probablemente suficiente, ya que no hay mucho tiempo para que los dos divergan y se puede llegar a una estimación razonable después de una sola iteración. A medida que reduce la velocidad del algoritmo, es probable que este no sea el caso y que deba repetir hasta obtener un término de error razonable.

En resumen, definitivamente puedes seguir la orientación usando un sensor 9DOF MEMS. No tengo claro por qué está intentando ejecutar este algoritmo tan lentamente como lo está haciendo, pero hay algunos puntos en el algoritmo para verificar si desea mejorar el límite inferior, pero tenga en cuenta que tendrán una sobrecarga significativa, lo que significa que si La razón por la que está teniendo este problema es porque es lo mejor que su hardware puede lograr (tal vez debido a otras tareas en segundo plano), por lo que recomendaría descargar tareas en segundo plano o actualizar el hardware para mejorar su tasa en lugar de intentar modificar el algoritmo. En términos generales, los sistemas AHRS e IMU deben ejecutarse a la tasa más alta posible en hardware dedicado, ya que su rendimiento tiende a tener implicaciones bastante importantes para el resto de su sistema.

    
respondido por el Stephan Botes

Lea otras preguntas en las etiquetas