2006-05-17

Nao_u20060517

物理シミュレーションで遊んでみる 物理シミュレーションで遊んでみる - Nao_uの日記 を含むブックマーク はてなブックマーク - 物理シミュレーションで遊んでみる - Nao_uの日記 物理シミュレーションで遊んでみる - Nao_uの日記 のブックマークコメント

休みももう終わりが近づいてきているので残りの期間はAjaxで何か作ろうかと思っていたのだけど、E3で公開された「Spore」や、メタルギア4の生足の2足歩行戦車の動画を見ているうちになんとなくPhsyXのSDKで遊びたくなってきたので、昨日は一日、家でプログラムを書いていた。

とりあえず、手始めに少し前に話題になっていた「4本足で動く気持ち悪いロボット」のようなものを作ってみた。4本足でなんとなく歩くくらいなら結構簡単にできるだろうと甘く見ていたけれど、これだけのものでも作ってみると予想外に難しい。パネキットで2足歩行を目指して挫折した頃を思い出す。

今回の4つ足も、足を長くしたり重くしたり、早く動かしたりすると簡単に振動が起こる。4本足のステップをリズム良く動かそうとするだけでも、変なところで揺れが起こってすぐに安定しなくなる。本気でやるならステップの周期も固定ではなく、本体に加速度センサーをつけて、倒れそうになった時点でそれを予期してそちらに足を踏み出すような制御が必要になるのだろうけど、そもそも踏み出すといっても股間接や膝関節をどの角度にすればいいのかを考えるだけでも大変だ。

また、なるべく速い速度で走れるように脚の動きをいろいろと微調整してみるときにも、これでいけると思って入れたパラメータが全く上手く機能せず、むしろ数値の指定を間違えたときのほうがはるかにいい動きをしたりなど、思い通りにならない感覚はパネキットに似ている。というかそれだけパネキットが良くできていたということなのかもしれない。

試行錯誤の末になんとか前進はできるようにはなったものの、よたよたと頼りなさげに歩くだけで回転すらままならず、自由に動かせる状態には程遠い。最終的にはアクションゲームのようにコントローラーで自由に操作できて気持ちいいようなレベルにまでもっていきたいのだけど、そこまでの道のりははるかに遠そうだ。

プログラム上で作るだけでもこれだけ難しいのだから、こんなのをリアルで作るのは本当に大変なことのように思う。高校生の頃にロボット相撲の制御プログラムを書いたことがあったけれど、センサーはノイズを拾いまくるしモーターは同一の出力にしたつもりでもさまざまな要因で同じ動きをしてくれないしで、とても大変だった。ソフトウェアは確実にプログラマの書いたとおりにしか動かないけれど、リアルな物理世界と結びついている生のハードウェアはそんなに都合良くはいかないので、本当に大変。


とりあえず、少し前のバージョンではあるけれど、今動いているものを動画にしてGoogle Videoにアップロードしてみた。


昨日の夜はこれを作りながら気がついたら寝落ちしていて、朝起きてからディスプレイを見てみると4つ足の生物の集団がガラクタの山の中で、ひっくり返って身動きの取れない状態で延々ともがき続けている地獄絵図のような光景になっていた。哀れ。


今のところP4/3GHz程度のマシンで、この生物を約60体出すと30fps程度の処理負荷になっている。6月に発売されるという物理演算プロセッサ搭載の専用ボードを使ったら、どのくらいの数が出せるようになるんだろうか。値段が高いのでパスしようと思っていたのだけど、ちょっとだけ興味が出てきた。

もしPPUを使ってもっとたくさんのモデルが出せるようになるのなら、動作のパラメータ設定や、モデルの設計そのものを遺伝的アルゴリズムで行ってみるのも面白いかもしれない。

モデルをパネキットの設計図のような組み方で遺伝子風の文字列指定で行えるようにして、間接の稼働範囲や動かすタイミングなどもそこに書き込んでおく。あとは、世界の中に定期的に再配置される食物にたどり着けたものが生き延びて遺伝子を交叉・変異させながら子孫を残し、そうでないものは淘汰されるような世界を作って放置しておく。きっといろんな形をした、へんな生物たちがたくさん生まれてくるに違いない。

・・・休暇が今日で終わってしまった。残念。明日からは仕事。