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のコードだったり・・・
というわけで、なるべく情報開示をしてあげると、他の人も喜ぶと思います。(自分も含め)