カルマンフィルターにクォータニオンを統合するためにルンゲクッタを使用する理由


7

現在、カルマンフィルタリングについて読んでいます。特に、IMUセンサーのフュージョンとキャリブレーションに「拡張」と「無香」のバリアントを使用することに興味があります。

無香と拡張カルマンは、四元運動を推定するためのフィルタリングの比較、四元数は、3D回転を表すために使用されます。

単位クォータニオンを使用して3D回転を表すことができることを理解しています。これらは、絶対姿勢(ユニバーサルリファレンスからの回転)、相対回転、または角速度(1秒あたりの速度を表す回転、またはその他の固定時間)を表すのに適しています。

ただし、このペーパーでは、Runge-Kutta統合、特にRK4の使用について説明します。RK4をクォータニオンと共に使用しますが、これが何を必要とするか、なぜ必要なのかについての詳細を提供していないようです。これはそれについて言及している紙の部分です…

ステップk − 1の状態ベクトルが与えられると、方程式1 [f = dq / dt =qω/ 2]を時間をかけて∆t(つまり1.0現在のサンプリングレートで割った値)。4次のルンゲクッタスキームを使用します。

キネマティクスで位置を統合するためにRunge Kuttaに出会ったことがあります。ここでそれがどのように、またはなぜ必要になるのか、私にはよくわかりません。

私の素朴なアプローチは、既存の姿勢qに角速度ωを単純に乗算して、期待される新しいqを取得することです。ここで数値積分が必要な理由がわかりません。おそらく、単位時間ωを∆tで発生する変化に「スケーリング」することですが、ωを直接操作する(分数電力∆tに上げる)だけで、非常に簡単に実行できます。

誰か知ってる?


1
この論文は、KF / EKFの観点からは不十分に書かれています。また、式(1)を参照するとき、それはそれを暗示けれどもそれは、信号モデルが何であるかを指定しない方程式1自体が私には明らかではない:通常4 -ベクトル、通常、3-ベクトル...したがって、という用語は次元的には不健全です。qωqω
Peter K.

@PeterKさん、こんにちは。それはωについて言及している「角速度を表す純粋なベクトル四元数である」–これはそれが実数部を持たない、または実数部が0であることを意味すると思いますか?
Benjohn

はい、あなたは正しいかもしれません...私はそれがゼロであるコンポーネントだと思います...四元数に関しては「本物」は... 理解するのが難しいです。:-)w
Peter K.

:-)角速度のクォータニオンが3軸のレートジャイロからどのように導出されるかはまだわかっていません。これに何らかの統合ステップが必要になるかどうか疑問に思っています。でも、わらわらを掴んで!
Benjohn

回答:


7

混乱は著者が物事を明確にパラメータ化していないからだと思います。さらに、四元数ではなく幾何代​​数に切り替えることで、いくつかの追加の混乱を解消できます。

法線ベクトル代数と幾何代数の主な違いは、ベクトルを乗算できることです。したがって、、、およびは(正規直交)基底ベクトルであり、ベクトルではなく、方向付けされた平面要素とことができるバイベクトルであるもあります。(「純粋なベクトルクォータニオン」とはバイベクトルを意味します。これは部分を意味し、「実際の」部分があると言うのが妥当です。)重要な特性は、基底ベクトルが互いに反通勤することです。 、つまりです。これはます。一般に、任意の単位バイベクトル平方からexeyezexey0 w0exey=eyex(exey)2=11これは、オイラーの公式を適用できることを意味しますここで、は単位バイベクトルであり、をローターと呼びます。ユニットクォータニオンは3Dローターです。(複素数は、2D幾何代数の偶数部分代数にすぎません。ここでは、3D GAの偶数部分代数である四元数を調べています。)

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

単位バイベクトル平面でによる回転が必要な場合、ローターます。(を介してベクトルを回転させるため、半分が入ります。上記のリンクを参照してください。)もちろん、平面と角度の両方を変化させて、(非ユニット)バイベクトルを定義しますしたがって、場合、ここで、。これは、です。彼らのは私たちのと彼らのθBR=eθ2BvRvR~Θ(t)=θ(t)B(t)

R(t)=e12Θ(t)
R˙(t)=12Ω(t)R(t)
Ω=Θ˙f=qω/2qRω当社で。我々が持っている場合今すぐし、私たちが望む、我々は統合する必要がありますからに。ΩR(t0)R(t0+Δt)R˙t0t0+Δt

あなたが記述スキームは、基本的に自分の想定して前進オイラー積分、やっとほぼ類似したし、当社のとにわたって一定である。RK4は、より優れた統合方法です。他の統合方法とは対照的に、彼らがRK4を使用することを選択した特別な理由があるとは思えません。これは通常、デフォルトの選択です。qωRΩΔt


!:-)「クォータニオンではなく幾何代数に切り替えることで、さらに混乱が解消される可能性がある」と個人的に言われる日を待っていました。ありがとうございました!私は数年前からGAに興味を持っていたので、誰かが私がそれらを使用して解決したい問題を提示することは素晴らしいです!…そうです、オイラーの統合を改善するというあなたの主張は、理にかなっていますが、以前の位置と速度だけでなく、追加の情報が必要ではありませんか?おそらく、古い速度と新しい速度の両方ですか?または暗黙の加速?
Benjohn

1
私の推測では、統合を行う間、一定に保ちます。角速度の測定値を取得するようには聞こえないため、角速度はカルマンフィルターによって「修正」された場合にのみ変化します。つまり、角速度はカルマンフィルターが再構築しようとしている観測されていない状態です。ω
Derek Elkinsが2016年

0

四元数を統合するために、私が知っている最良の方法は、コンピューターグラフィックスで使用されるSLERPアルゴリズムとその子孫です。私はこれを高テストのインパクトアクセラレーションテストデータで使用し、精度が1桁向上しました。この方法を使用すると、通常のルンゲクッタ法に関連する正規化エラーの蓄積を回避できます。四元数はDAEのシステム、つまり微分代数方程式であることを思い出してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.