ODE本 Step1 扉図のカラー画像
ODE本「簡単!実践!ロボットシミュレーション – Open Dynamics Engineによるロボットプログラミング」のStep1では,ODE初体験ということで,リンゴの落下,ボールの跳ね返り,1本脚ロボットのシミュレータを作りながらODEの使い方をマスターします.
以下にStep1のシミュレータの動画を掲載します.ソースコードはこのページの注意事項を読み,ダウンロード,ビルドやコンパイルし実行してください.
- プログラム1.1: りんごの落下 (P7)
- 説明:ニュートンさんの逸話でおなじみのリンゴの落下です.でも,衝突検出が組み込まれていないので….以下のソースコードを見ればわかりますが,このようなプログラムならたった50行です.上の動画は解像度を落としているので美しくありませんが,実際はたなびく雲が美しいですよ.
- プログラム1.2: ボールの跳ね返り (P15)
- 説明:衝突検出を組み込み地面を突き抜けなくなりましたが,跳ね返ることはできません.反発係数を設定して跳ね返るようにしましょう.
- プログラム1.3: 1本脚ロボット (P24)
- 説明:球と円柱を関節で結合し,1本脚ロボットを作ります.Step1を学ぶことで関節のあるロボットを作ることができます.Step2では関節の動かし方を学びます.
エクササイズの補足説明
- EX1.8 (P21)
- 直方体を作るためには、その各辺の長さを格納する要素数3個の配列を準備すると便利です。P15の12行目と13行目の間に以下を挿入しましょう。
static dReal side[3] = {0.2, 0.2, 0.2};
なお、dsDrawBox()に引数として配列を渡すわけですが、C言語では配列そのものを渡すことができないので、そのアドレスを渡します。配列名(この例ではside)は配列が格納されている先頭のアドレスでしたね。 - 後は、P94のプログラム3.5に直方体を使った例があるので、参考にすると出来るでしょう。
- 直方体を作るためには、その各辺の長さを格納する要素数3個の配列を準備すると便利です。P15の12行目と13行目の間に以下を挿入しましょう。
- EX1.11 (P27)
- 可動域を変更して、そのまま実行しても変化を確かめることができません。
重量加速度を次のように変えてください。
dWorldSetGravity(world, 0.0, 0.2, -9.8);
- 可動域を変更して、そのまま実行しても変化を確かめることができません。
(最終更新日 2008-7-27)