2016-12-02 6 views
0

私は四元数を使って向きを出力するIMUセンサーを持っています。私はまず表面を平らにし、クォータニオン(q_rest)を取り出します。それから私はそれをランダムな方向に回転させ始める。私はそれがy軸の周りで90度に達するときを知りたい。だからq_target(cos(pi/4)0 sin(pi/4)0)に等しい。私のセンサの向きは、私がq_tq_targetとの相関関係を確認することができますどのようにq_tであれば一定の時間トン剛体の向きが目標向きに近づいているかどうかを確認する方法

つまり、センサーを回転させているユーザー、どれだけ回転させるか、どの方向に向けるのかをユーザーにどのように伝えますか?

私はすでに何をしましたか?

私は回転q_targetq_t WRT q_restのベクトルのベクトルを計算しました。次に、これらの2つのベクトルの間の角度を調べました。しかし、これは四元数の回転のベクトルに対する私の理解が間違っていると私が信じるところではうまくいかないようです。どうすればこの問題を解決できますか?

答えて

1

次のように問題を定式化することができます

をあなたの現在の向きに回転q_diffを適用したい、あなたがq_targetに着くように:

q_t * q_diff = q_target 

あなたはq_diffの中で表現したいかどうかに応じて、ローカルシステムまたはグローバルシステムでは、q_diff * q_tを使用することもできます。

次に、明らかに:

q_diff = q_t^(-1) * q_target 
q_diff

は、基本的には、次に目標回転までの距離です。角度コンポーネントを使用して、どれだけ遠くにあるかを判断し、軸コンポーネントを使用して回転する方向を決定します。

もちろん、q_diffを他の表現に変換することはできますが、最も使いやすいものです。

関連する問題