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?
fuente
Respuestas:
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í demiX , miy y miz son nuestros vectores base (ortonormales), también tenemos exey que 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 a−1 , lo que significa que podemos aplicar la fórmula de Euler:
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
El esquema que usted describe es más o menos análogo a la integración progresiva de Euler, que esencialmente asume suq 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.
fuente
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.
fuente