¿Por qué Runge-Kutta para la integración de Quaternion en el filtro de Kalman?

7

Estoy leyendo sobre el filtrado de Kalman en este momento. En particular, estoy interesado en usar las variantes "extendida" y "sin perfume" para la fusión y calibración del sensor IMU.

En una comparación del filtrado de Kalman sin perfume y extendido para estimar el movimiento del cuaternión, los cuaterniones se usan para representar la rotación 3d.

Entiendo que los cuaterniones de unidades se pueden usar para representar una rotación 3D . Se adaptan para representar la actitud absoluta (una rotación desde una referencia universal), la rotación relativa o la velocidad angular (una rotación que representa la velocidad por segundo o algún otro período de tiempo fijo).

Sin embargo, estos documentos discuten el uso de la integración Runge-Kutta , específicamente RK4. Utiliza RK4 con los cuaterniones, pero no parece proporcionar detalles de lo que esto implica o por qué es necesario. Aquí está la parte del documento que lo menciona ...

Dado el vector de estado en el paso k - 1, primero realizamos el paso de predicción al encontrar la estimación de estado a priori xˆ − k integrando la ecuación 1 [f = dq / dt = qω / 2] a través del tiempo por ∆t (es decir, 1.0 dividido por la frecuencia de muestreo actual) usando un esquema Runge-Kutta de 4to orden.

Me he encontrado con Runge Kutta antes para integrar posiciones en cinemática. Realmente no entiendo cómo o por qué sería necesario aquí.

Mi enfoque ingenuo sería simplemente multiplicar la actitud existente q por la velocidad angular ω para obtener la nueva q esperada. No veo por qué es necesaria la integración numérica. ¿Quizás sea para "escalar" la unidad de tiempo ω al cambio que ocurre en ∆t, pero seguramente eso se puede hacer simplemente manipulando directamente ω (elevándolo a una potencia fraccional ∆t)?

¿Nadie sabe?

Benjohn
fuente
1
El documento está mal escrito desde el punto de vista de KF / EKF. No especifica cuál es el modelo de señal, aunque alude a él cuando se refiere a la ecuación 1. Además, la ecuación 1 en sí misma no me resulta clara:q es generalmente un vector 4 y ω es generalmente un vector 3 ... entonces el término qωes dimensionalmente poco sólido.
Peter K.
Hola @PeterK. Menciona ω "es un cuaternión de vector puro que representa la velocidad angular". ¿Supongo que esto significa que no tiene una parte real o que la parte real es 0?
Benjohn
Sí, puede que tengas razón ... aunque creo que es el wcomponente que es cero ... "real" cuando se trata de quaternions es ... difícil de comprender. :-)
Peter K.
:-) Todavía no he descubierto cómo se deriva un cuaternión de velocidad angular de los giroscopios de velocidad de tres ejes. Me pregunto si esto podría necesitar algún tipo de paso de integración. ¡Aferrarse a la paja, sin embargo!
Benjohn

Respuestas:

7

Creo que la confusión proviene de que los autores no parametrizan las cosas claramente. Además, al cambiar a álgebra geométrica en lugar de cuaterniones, se puede aclarar alguna confusión adicional.

La principal diferencia entre el álgebra vectorial normal y el álgebra geométrica es que podemos multiplicar vectores. Así deex, eyy ez son nuestros vectores base (ortonormales), también tenemos exeyque no es un vector sino un bivector que puede considerarse como un elemento plano orientado. (Por "puro vector cuaternión" se refieren a un bivector; tienes razón, eso significa0 w parte y es razonable decir que tiene una 0 parte "real".) Una propiedad clave es que los vectores base se conmutan entre sí, es decir exey=eyex. Esto lleva a(exey)2=1. En general, cualquier unidad de bivector se ajusta a1, lo que significa que podemos aplicar la fórmula de Euler:

R=eθB=cosθ+Bsinθ
dónde B es una unidad bivector y llamamos RUn rotor . Una unidad de cuaternión es solo un rotor 3D. (Los números complejos son solo el subálgebra par del álgebra geométrica 2D. Aquí estamos viendo los cuaterniones, el subálgebra par de 3D GA).

Si queremos una rotación por θ en el plano de una unidad bivector B usamos el rotor R=eθ2B. (La mitad entra porque giramos un vectorv vía RvR~; vea el enlace de arriba.) Por supuesto, queremos permitir que varíen tanto el plano como el ángulo, por lo que definimos el bivector (no unitario)Θ(t)=θ(t)B(t) Así que si

R(t)=e12Θ(t)
entonces
R˙(t)=12Ω(t)R(t)
dónde Ω=Θ˙. Este es suf=qω/2; suq es nuestro R y ellos ω es nuestro Ω. Ahora si tenemosR(t0) y queremos R(t0+Δt) necesitamos integrar R˙ desde t0 a t0+Δt.

El esquema que usted describe es más o menos análogo a la integración progresiva de Euler, que esencialmente asume su q y ω nuestra R y Ω es constante sobre Δt. RK4 es solo un mejor método de integración. Dudo que haya alguna razón especial por la que eligieron usar RK4 en lugar de otros métodos de integración. Es solo la opción predeterminada típicamente.

Derek Elkins dejó SE
fuente
! :-) He estado esperando el día en que alguien me diría personalmente, "al cambiar a álgebra geométrica en lugar de cuaterniones, se puede aclarar alguna confusión adicional". ¡Gracias! ¡He estado interesado en GA durante algunos años, por lo que es genial tener a alguien que presente un problema que quiero resolver al usarlo! ... derecho, su punto sobre la mejora en la integración de Euler hace mucho sentido, pero: no lo necesita alguna información adicional más allá de simplemente la posición de la anterior y de la velocidad? ¿Quizás las viejas y las nuevas velocidades? ¿O aceleración implícita?
Benjohn
1
Mi conjetura es que mantienen ωconstante mientras se hace la integración. Como no parece que obtengan ninguna medida de velocidad angular, la velocidad angular solo cambia cuando es "corregida" por el filtro de Kalman, es decir, la velocidad angular es un estado no observado que el filtro de Kalman está tratando de reconstruir.
Derek Elkins salió del SE
0

Para integrar Quaternions, el mejor método que conozco es el algoritmo SLERP y sus descendientes utilizados en gráficos por computadora. Utilicé esto en datos de prueba de aceleración de impacto de prueba alta y experimenté un aumento de orden de magnitud en la precisión. Usando este método, evita la acumulación de errores de normalización asociados con los métodos regulares de Runge-Kutta. Recuerde que los Cuaterniones son un sistema de DAE, es decir, ecuaciones diferenciales-algebraicas.

usuario14671
fuente