Por que Runge-Kutta para integração com Quaternion no filtro Kalman?


7

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?


11
O artigo está mal escrito do ponto de vista KF / EKF. Ele não especifica qual é o modelo de sinal, embora faça alusão a ele quando se refere à equação 1. Além disso, a equação 1 em si não está clara para mim: geralmente é um vetor de 4 e geralmente é um 3- vetor ... então o termo é dimensionalmente incorreto. qωqω
Peter K.

Olá @PeterK. Ele menciona ω "é um quaternário de vetor puro que representa a velocidade angular" - presumo que isso significa que ele não possui uma parte real ou que a parte real é 0?
precisa saber é

Sim, você pode estar correto ... embora eu ache que é o componente que é zero ... "real" quando se trata de quaterniões é ... difícil de entender. :-)w
Peter K.

:-) Ainda não descobri como um quaternion de velocidade angular é derivado dos giroscópios de taxa de três eixos - gostaria de saber se isso pode precisar de algum tipo de etapa de integração? Agarrar-em-canudos, no entanto!
precisa saber é

Respostas:


7

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 paraexeyezexey0 w0exey=eyex(exey)2=11, 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.)

R=eθB=cosθ+Bsinθ
BR

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θBR=eθ2BvRvR~Θ(t)=θ(t)B(t)

R(t)=e12Θ(t)
R˙(t)=12Ω(t)R(t)
Ω=Θ˙f=qω/2qRωé o nosso . Agora, se temos e queremos , precisamos integrar de a .ΩR(t0)R(t0+Δt)R˙t0t0+Δ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


! :-) Eu estava esperando o dia em que alguém me diria pessoalmente: "mudando para álgebra geométrica em vez de quaternions, alguma confusão adicional pode ser esclarecida". Obrigado! Estou interessado no GA há alguns anos, por isso é brilhante ter alguém que apresenta um problema que quero resolver usando-o! ... direito, seu ponto sobre como melhorar a integração Euler faz muito sentido, mas: não ele precisar de alguma informação adicional para além apenas de posição e velocidade do anterior? Talvez tanto velhas quanto novas velocidades? Ou aceleração implícita?
Benjohn

11
Meu palpite é que eles mantêm constante enquanto fazem a integração. Como não parece que eles recebam medições de velocidade angular, a velocidade angular muda apenas quando é "corrigida" pelo filtro Kalman, ou seja, a velocidade angular é um estado não observado que o filtro Kalman está tentando reconstruir. ω
Derek Elkins saiu de SE

0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.