含まれる必要があるかどうかを適用するかどうかを知りたいです
この手順をステップごとに進んでみましょう。グローバル座標系G
が北方向に整列しています。どのように整列されているか、まったく整列しているかどうかは問題ではありません。
次に、それぞれの座標系がI1
とI2
のIMUにする必要があります。座標系は、グローバルシステムからローカルシステムへの回転として与えられます。以下では、そのために表記R[G->I1]
を使用します。これは、G
からI1
へのローテーションを表します。 G
のベクトルをこの回転で変換すると、座標系G
で表現されたI1
に同じベクトルが得られます。ベクトルv
の変換をT
でT ° v
で表すとしましょう。次の図は、このことを示しています。この図では
は、私が翻訳を追加した変換(四元はもちろん表すことができません)。これは、ポイントを明確にするためのものです。ベクトルv
です。同じベクトルは座標系G
またはI
のいずれかに置くことができます。そして、形質転換されたベクターR[G->I] ° v
はG
のv
のI
を表す。これが実際にあなたがIMUから受ける回転であることを確認してください。また、逆変換を得ることも可能です(これはシステム変換ビューですが、モデル変換ビューを使用します)。これは、以下の派生物ではほとんど変わりません。したがって、私はこの最初の仮定に固執するでしょう。逆数が必要な場合は、それに応じて数式を調整してください。
すでに知っているように、操作R ° v
は、純粋な四元数にv
を回しR * v * conjugate(R)
を計算し、そして再びベクトルにそれを回す(またはプロセスを通じて、純粋な四元数で動作)によって行うことができます。
ペンが出現しました。ペンには固有の座標系があり、これは任意に定義できます。あなたの説明から、ペンのローカルy軸が先端に向くように定義したいかのように思えます。したがって、回転ごとにR[I1->P1]
とR[I2->P2]
のペンごとに追加の座標系があります。我々はローカル座標系を整列さ(R[I1->P1]
がアイデンティティであることを知って、あなたはペンのローカル座標系を定義したように
R[G->P1] = R[G->I1] * R[I1->P1]
R[G->P2] = R[G->I2] * R[I2->P2]
:私たちは、グローバルな姿勢を(*
は、四元数の乗算である)を見つけるために回転を連結することができますIMUの場合)、R[I2->P2]
はz軸の周りに180°の回転です。 Z軸回転はIMUのローカル座標系(それが右側に乗算される)で行うことが
R[G->P1] = R[G->I1]
R[G->P2] = R[G->I2] * RotateZ(180°)
注:だから、これはに簡素化されます。私はあなたがなぜそれが90°であるべきだと思うのか分かりません。それは実際に180°の回転です。
ヒントの相対的な回転を見たい場合は、最初に回転を表現する座標系を定義する必要があります。 P1
という座標系で回転を表現したいとしましょう。
R[P1->P2] = conjugate(R[G->I1]) * R[G->I2] * RotateZ(180°)
:その後、何を検索することはあなたが上記の定義を接続した場合、あなたはなるだろう。これは
R[P1->P2] = conjugate(R[G->P1]) * R[G->P2]
に解決し、そのような
R[G->P1] * R[P1->P2] = R[G->P2]
ことを、回転R[P1->P2]
です以上です。
多少異なるものがほしいと思うかもしれません。それで私はそれを細かく説明したので、それに応じて計算を変更することができます。
うわー、それは一つの精巧な答えです - ありがとう!私の90°/ 180°回転に関する混乱について:四元数を使って特定の軸の周りでベクトルvを180度回転させたいと思うなら、四元数は角度として90°を使って構築する必要があります'q * v * inv(q)'は基本的にこの角度を2度適用する(180度の回転をもたらす)からです。技術的には、q1 * q_rotというプロダクトが暗黙のうちに再び回転するために使用されると思ったので、これは直接的な四元数の乗算と一貫していないのです。 y軸。 – Sty
角度「a」の回転を表す四元数は、実際には、その中に「cos(a/2)」と「sin(a/2)」という用語を持っています。それにもかかわらず、それはまだ 'a'(ちょうど異なってコード化されている)の回転です。このエンコーディングは、 '°'演算子がクォータニオンを2回使用する理由の一部です。最後に、(単位)四元数は、ある軸の周りのある角度の回転を表します。内部的には、別の方法でエンコードされます。しかし、これは、シンプルなライブラリがサポートしていないクォータニオンと関連する数学をやりたいのでなければ問題ではありません。 –
ああ、私の混乱は主に用語にありますか?つまり、RotateZ(180°)では、角度と軸(この例では180°とz軸)を指定することで得られる四元数を参照しますが、内部的にはquaternionの計算になります異なるコンポーネントの90°の角度の 'cos'と' sin'は正しいのですか? – Sty