1

WiiM+ジャイロを使って回転を計算しています。

ヨー軸、ピッチ軸、ロール軸に沿って回転率を統合し、angleSum というベクトルに格納します。

したがって、各読み取り値について、 angleSum(reading) は初期方向からの y、p、および r 回転を表します。

次に、クォータニオン (まったくなじみがありません) を使用して、次のように表します。

q = Quaternion.createfromyawPitchRoll(angleSum.yaw, angleSum.pitch, angleSum.roll*(-1))

しかし、wiimote をある方向に 90 度回転させて、回転方向の qx、qy、qz を印刷すると、すべての読み取り値が回転の影響を受けます (それらはすべて 90 度回転して戻ってきますが、そのうちの 2 つは大きさが小さくなっています)。

私の質問は非常に基本的なものです。この四元数構造を使用して向きを正確に表すにはどうすればよいですか? ヨー、ピッチ、ロールに関して、絶対的な (または少なくとも相対的な) 向きが必要です。

ありがとう!

4

1 に答える 1

1

クォータニオンは、軸および定義された軸の周りの回転コンポーネント (通常は として表される) として大まかに定義された4 次元構造{x, y, z, w}です。あなたが参照した方法を見て、度ではなくラジアンでヨー、ピッチ、ロールを提供していると思います。これにより、最も一般的な実装の間違いがテーブルから削除されます。

あなたの実装が正しいと仮定すると(そしてそうであるように思われます)、q.xq.y、およびq.zすべてのローテーションで予想どおりに変化します。4 次元のオブジェクトを定義していることを思い出してください。四元数はオイラー角と同じではありません。

より人間に優しいオイラー表記法で読み取りたい場合はクォータニオンをヨー、ピッチ、ロールに変換することを検討してください。XNA でこれを行うためのディスカッションを次に示します。

于 2010-12-07T05:38:51.623 に答える