9

次の問題があります: モーション キャプチャ デバイスからのクォータニオン (q1) は、2 番目の追跡対象オブジェクトによって導出された別の方向クォータニオン (q2) からのヨー角度 (およびヨーのみ!) によって修正される必要があるため、ピッチとロールがq1 の偏角は前と同じですが、q1 は q2 のヨーを持ちます。

実用的な解決策は、クォートをマトリックスに変換することです。次に、計算を行って回転角度を抽出し、次にヘディング補正を行います。ただし、これにより、特定の軸の方向に直接移動すると「反転」が発生します (たとえば、0° - 359° の後)。便利ではない他の変換も試しました。

行列またはオイラー角に変換せずに四元数で直接計算を行う可能性はありますか (つまり、修正された四元数を追跡対象の四元数として設定できます)?

前述のように、補正にはアップ軸 (ヨー) 周りの回転のみを含める必要があります。数学クラスに関するプログラミングの可能性はあまりありません (Virtools の VSL スクリプトは、残念ながらこの方向ではかなり制限されています)。誰かアドバイスはありますか?

4

4 に答える 4

2

このタスクでは、オイラー角を使用するのが最適です。その利点 (唯一の利点) は、直交軸の周りの個々の回転への分離にあるからです。したがって、両方の四元数をニーズに合ったオイラー角の規則に変換し、q1 のヨー角を q2 で置き換えるだけです。

もちろん、他の回転がヨー角度に依存しない一致するオイラー角度規則を使用する必要があります (したがって、ポイントを変換するときにヨー回転が最初に適用されますか?)。これにより、影響を与えずに角度を変更できます。他の軸。結果のオイラー角トリプルをクォータニオンに変換すると、再び一意の表現が得られるはずですが、何か不足していますか?

于 2011-06-14T21:22:42.397 に答える
0

短い答え: はい、可能です。(任意の軸を中心とした) 回転を公式化し、クォータニオン操作で実行できます。

長い答え:クォータニオンと回転に関するウィキペディアの記事を参照してください。あなたが説明した問題はジンバルロックだと思います。

于 2011-05-30T14:07:11.947 に答える
0

クォータニオンQ1Q2があり、「上」方向がyの場合、 Q1のyコンポーネントを取り出して再正規化すると、ヨー コンポーネントのないクォータニオンが得られます。同様に、 Q2のx成分とz成分を取り出すと、ヨー成分のみの四元数が得られます。(クォータニオン乗算を使用して) 2 番目を 1 番目に乗算すると、そこにいます。

Q1[2] = 0;
normalize4d(Q1);
Q2[1] = 0;
Q2[3] = 0;
normalize4d(Q2);
Q3 = quatMult(Q2,Q1);

もちろん、ベクトルを非常に小さい大きさで正規化しようとすると数値的に不安定になる可能性があるため、正確に (またはそれに近い) 180 度回転した特殊なケースを確認することをお勧めします。

于 2011-06-17T04:29:58.050 に答える