Estou lendo a filtragem Kalman no momento. Em particular, estou interessado em usar as variantes "estendida" e "sem cheiro" para fusão e calibração do sensor IMU.
Em uma comparação da filtragem Kalman sem cheiro e estendida para estimar o movimento do quaternion, os quaternions são usados para representar a rotação 3D.
Entendo que quaternions de unidade podem ser usados para representar uma rotação 3D . Eles servem para representar atitudes absolutas (uma rotação de uma referência universal), rotação relativa ou velocidade angular (uma rotação que representa a taxa por segundo ou outro período de tempo fixo).
No entanto, este artigo discute o uso da integração Runge-Kutta , especificamente o RK4. Ele usa o RK4 com os quaternions, mas não parece fornecer detalhes do que isso envolve ou por que é necessário. Aqui está a parte do artigo que menciona…
Dado o vetor de estado na etapa k - 1, primeiro executamos a etapa de predição encontrando a estimativa do estado a priori xˆ - k integrando a equação 1 [f = dq / dt = qω / 2] ao longo do tempo por ∆t (ou seja, 1,0 dividido pela taxa de amostragem atual) usando um esquema de 4ª ordem Runge-Kutta.
Eu encontrei o Runge Kutta antes por integrar posições na cinemática. Eu realmente não entendo como ou por que seria necessário aqui.
Minha abordagem ingênua seria simplesmente multiplicar a atitude existente q pela velocidade angular ω para obter o novo q esperado - não vejo por que a integração numérica é necessária aqui? Talvez seja "escalar" o tempo unitário ω para a mudança que ocorre em ∆t, mas certamente isso pode ser feito de maneira muito simples manipulando diretamente ω (elevando-o à potência fracionária ∆t)?
Ninguem sabe?
fonte
Respostas:
Eu acho que a confusão vem dos autores, não parametrizando as coisas claramente. Além disso, mudando para álgebra geométrica em vez de quaterniões, pode ser esclarecida alguma confusão adicional.
A principal diferença entre álgebra vetorial normal e álgebra geométrica é que podemos multiplicar vetores. Portanto , , e são nossos vetores de base (ortonormais), também temos que não é um vetor, mas um bivetor que pode ser pensado como um elemento plano orientado. (Por "quaternion de vetor puro", eles significam um bivetor; você está certo de que isso significa parte e é razoável dizer que tem uma parte "real" ). Uma propriedade chave é que os vetores base se alternam entre si , ou seja, . Isso leva a . Em geral, qualquer bivetor de unidade quadrada paraex ey ez exey 0 w 0 exey=−eyex (exey)2=−1 −1 , O que significa que podemos aplicar a fórmula de Euler: , onde é um bivector unidade e chamamos um rotor . Um quaternion de unidade é apenas um rotor 3D. (Números complexos são apenas a sub-álgebra par da álgebra geométrica 2D. Aqui estamos olhando para quaternions, a sub-álgebra par do 3D GA.)
Se queremos uma rotação por no plano de um bivetor de unidade , usamos o rotor . (A metade chega porque um vetor via ; veja o link acima.) Obviamente, queremos permitir que o plano e o ângulo variem, para definirmos o bivetor (não unitário) portanto, se então que . Este é o seu ; deles é o nosso e seuθ B R=eθ2B v RvR˜ Θ(t)=θ(t)B(t)
O esquema que você descreve é aproximadamente análogo ao fazer integração Euler direta, que pressupõe essencialmente que e nosso e são constantes sobre . O RK4 é apenas um método de integração melhor. Duvido que haja algum motivo especial que eles escolheram usar o RK4 em oposição a outros métodos de integração. É apenas a escolha padrão normalmente.q ω R Ω Δt
fonte
Para integrar Quaternions, o melhor método que conheço é o algoritmo SLERP e seus descendentes usados em computação gráfica. Usei isso em dados de teste de aceleração de impacto de alto teste e experimentei um aumento de ordem de magnitude na precisão. Usando esse método, evita-se o acúmulo de erro de Normalização associado aos Métodos Runge-Kutta regulares. Lembre-se de que os Quaternions são um sistema de DAE, isto é, equações diferenciais-algébricas.
fonte