PythonによるOpen Dynamics Engine講座 その26
PythonによるRTコンポーネント講座(その7)
OpenHRP3のようにコンポーネントに分散したロボットシミュレータをPyODE、PyOpenGLを使って簡単に作ります。僕は4日ぐらいかかりましたけど、のろのろしていたせいなので多分1時間ぐらいいでできます。サンプルはここ。
プログラムの実行には以下のソフトウェアをインストールする必要があります。
インストールのやり方はPyODEとRTC講座のインストール編に書いてます。
マニュアルは暇があれば追加しまが、今は一身上の都合により追加できません(単にめんどくさいだけ)。
サンプルですが、GLRTMというのは画像表示のコンポーネントでインポートを3つ持っています。
の3つです。
PySimuというのは物理計算のコンポーネントでインポートを3つ、アウトポートを4つ持っています。
のインポート3つと、
のアウトポートの3つです。
インポートにトルクがありますが今回は簡易のために速度制御になっているので注意してください
最後にModelLorderですが、アウトポートを1つ持っています。
モデルの読み込みですが、ModelLorderと同じフォルダにTest.txtという名前のファイルを作成して物体の場合は以下のように記述してください。空行は絶対に空けないでください。
直方体の場合
Body、Box、x軸方向への長さ、y軸方向への長さ、z軸方向への長さ、x座標、y座標、z座標、密度
球の場合
Body、Sphere、半径、x座標、y座標、z座標、密度
円柱の場合
Body、Cylinder、高さ、半径、x座標、y座標、z座標、密度
カプセルの場合
Body、Capsule、高さ、半径、x座標、y座標、z座標、密度
です。ポリゴンはまだ実装してません。ジョイントもTest.txtに記述します。ただし、物体をすべて記述した後に記述するようにしてください。駆動関節かは、1で駆動関節、0で自由関節にできます。物体1、2には物体を記述した順に番号を書いてください。
ヒンジジョイントの場合
Joint、Hinge、物体1、物体2、中心点x座標、y座標、z座標、関節軸x、y、z、駆動関節か?
スライダージョイントの場合
Joint、Slinder、物体1、物体2、関節軸x、y、z
固定ジョイントの場合
Joint、Fix、物体1、物体2
その他のジョイントは未実装です。バネ関節、粘性摩擦などもこれから実装予定です。
今回はP制御を行うサンプルコントローラSampleControllerODEを用意しました。インポートは、
で、アウトポートは
です。
コンポーネントの接続は、
これで動作できます。コントローラはOpenHRP3用のコントローラも使うことができます。これがRTミドルウェアの便利なところですね。
PythonによるOpen Dynamics Engine講座に戻る