STEP1: ODE初体験

Open Dynamics Engine

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に直方体を使った例があるので、参考にすると出来るでしょう。
  • EX1.11 (P27)
    • 可動域を変更して、そのまま実行しても変化を確かめることができません。
      重量加速度を次のように変えてください。
      dWorldSetGravity(world, 0.0, 0.2, -9.8);

(最終更新日 2008-7-27)