ODE(Open Dynamcs Engine)講座の第11回目です。今までの講座でODEの基本を簡単に説明しましたが、基本的なことで忘れていたことを今回説明します。それは、剛体の姿勢を設定する方法です。
剛体を3次元空間上に設定するためには、位置と姿勢を指定してあげる必要があります。姿勢は回転変換行列で決めることができ、ODEでも以下のAPIにより設定可能です。
dRFromAxisAndAngle (dMatrix3 R, dReal ax, dReal ay, dReal az, dReal angle); /* R:回転変換行列; ax,ay,az:回転軸ベクトル; angle:回転角(rad) */
dBodySetRotation (dBodyID, const dMatrix3 R); /* dBodyID:ボディのID番号 */
dRFromAxisAndAngleで回転軸ベクトルと回転角から3x3行列の回転変換行列Rを取得でき、その回転変換行列と設定したいボディ(剛体)にdBodySetRotationにより姿勢を設定できます。また、ODEではこのほかにクオータニオンに関するAPIもあります。
なお、ロボット等のリンクの初期姿勢はできるだけx、y、z軸のいずれかと平行にとった方がわかりやすいので、関節が中途半端に曲がった姿勢を基準とすることはお勧めできません。
コメント
回答の記事を書きましたので「ODE質問募集」をご覧ください。
はじめまして。ODEについて最近勉強を始めたものです。
このホームページをいつも大変参考にさせていただいております。
姿勢についてですが、ジョイントでつながれた物体の初期姿勢を変換するにはどのようにすればよいでしょうか。
また、ウインドウにメッセージ(テキスト)を表示させるにはどのようにすればよいのでしょうか。
教えていただけませんでしょうか。