Open Dynamics Engine 1

さて、前回取り上げたAria G25はどうやら無事発送されているらしく、
手元に着くのもそんな先ではないみたい。

結局9人で送料を割ることになりました。



去年やってたネタをちょっと書きますかね。

こう、最近、多関節のロボットに興味があって、やりたいな〜と常に思ってたわけですが、
何せ、モーターが高いので、実際に作るにはかなり厳しい現実がありました。


じゃーシミュレーション上でロボット動かして、もう、信号をロボットに送るだけの状態まで作ってしまおう
と考えたわけです。


で、オープンソースで、物理演算と、衝突検知の出来る Open Dynamics Engineにたどり着きました。
ODEはBulletやPhysXなどのゲーム用の衝突検知ソフトや物理演算ソフトに比べると、シミュレーションの精度が良いらしく、
ロボットのシミュレーションを作るならこっちかな。とおもって、弄ってみました。

ODEは、日本語で詳しく紹介されているページがあり、結構お勧めだったりします。
http://demura.net/ode


ODE公式:
http://www.ode.org/


ODEはただのライブラリ群なので、それを描画してくれるものが必要です。
と言うことで、描画はGlutという、OpenGLの拡張版を使いました。
ただ、Glutは開発がストップしているので、Glutのほぼ完全互換のFreeGlutのほうがいいかもしれませんね。
ODE+Glutの開発方法は調べると結構出てきます。

この方が非常に参考になりました
http://www10.atwiki.jp/bambooflow/


この描画ソフトが結構ネックで、Glutには、ボタンとかの配置が出来ません。
と言うことは、シミュレーションは、初期条件を与えた状態から制御が出来ないと言うことになります。
あとはコマンドラインから設定を少しずつ変えるとか。。。
ちょっと不便ですよね。

他にも、Irrlichtなど、ゲーム寄りの結構面白い描画エンジンがあったりします。
http://ja.wikipedia.org/wiki/Irrlicht_Engine
Irrlichtはインストールするだけでもサンプルが弄れて結構楽しかった。

でも、今回はGlutで。


今回の開発環境は、Visual Studio C++ 2010 のFormアプリケーションです。
これならボタンとかも配置できるし、結構良いかなと...

実際は、描画関連をもっと簡便にしたくて、FormアプリケーションのPictureBoxにシミュレーションを描画できないかなってちょっと頑張ったんですが、
Visual Studio 2010の情報が少なく、途中で投げ出しました。でも、出来ないことは無いと思うので、出来た人がいたら教えて欲しいです。


んで、これが成果物です。

ボタンが押されるたび、決まったオブジェクトを生成し、
オブジェクトをクリアするボタンと、カメラの視点を戻すボタンがあるだけの単純なものです。


結構頑張った気がします。

まーここまで来たらあとは多関節っぽい形状作って、拘束条件付け足して、後は角度を制御してみるだけですね。

ただ、プログラム弄り倒したので、かなり見辛いなど、かなり爆弾も抱えてます。


今回こういうものを作って感じたのは、開発コミュニティが停滞しているものはすごく大変ですね。
実際に動かそうと思っても、VisualStudio2003のコードだったり・・・

というわけで、なるべく情報開示をしてあげると、他の人も喜ぶと思います。(自分も含め)