操作ハンドルを実装3DCGソフトでポリゴンの頂点の編集に使う矢印みたいなものを実装しました。名称がわからないので、操作ハンドルと呼んでいます。名称がよくわからないものを調べるのは一苦労。調べた結果、マウスピッキング処理で実現するものらしい。実装にあたっては、こちらのサイトを参考にさせていただきました。操作ハンドルの実装は長年の夢。シミュレーション表示用のプログラム開発は、だいぶ満足したので、いったん中止。ヒト型ロボット開発を再開することにします。(0)Qt4に移植中OpenGLで書いたシミュレーション表示用のプログラムをせっせとQt4に移植中です。Qt4には、OpenGLを扱うためのモジュールが用意されているので、glutの代わりにそれを使用します。gluの関数はそのまま使用できますが、glutの関数を使っていたところはすべて書き直しです。Qt4に慣れないこともあり、けっこうてこずっています。(0)Qt4GUIを扱えるようになりたいので、Qt4(キュート)の勉強を始めました。Createrに大量のすばらしいサンプルプログラムとチュートリアルが付いていました。単純なボタンから、OpenGL、XML、ネットワーク関連といったものまで、様々なサンプルがありました。これだけあれば学習には困らないかと。OpenGLと組み合わせてロボットのシミュレータを作る予定です。(0)諦める衝突、無理。(0)接触のシミュレーションができない自由落下する剛体運動のシミュレーションはできるようになったのですが、床との接触のシミュレーションが上手くできないです。本の通りにしても物体が地面に沈み込んでしまいます。接触力の係数を変えてみたら、今度は物体が吹っ飛んでいってしまいました。(0)動力学シミュレータを作り始めました動力学シミュレータを作り始めました。「ヒューマノイドロボット」(オーム社)の"6章:動力学シミュレーション"を実装してみたいと思います。環境整備と言うことで、シミュレーション表示用のプログラムを作りました。以前の3次元プロット用に使っていたものを機能強化。画面上で文字列の描写ができるようになりました。シェーディングもできるようになりました。陰影付けはまだですが、一応使えるものができたので完成です。これで動力学シミュレーション本体に取り掛かれます。小休止あれからいろいろとやってみましたが、良い結果は得られず。ZMPの計算結果が収束せずにガッタガタになる件は、ZMPの近似計算に使う質点の速度と加速度の値がおかしいのが原因。モデルが冗長関節のロボットだからです。逆運動学はヤコビアンの擬似逆行列を利用した数値解法で求めていますが、そこに問題ありかと。繰り返しの収束計算なので、関節速度が連続になっていないのだと思います。そのため、前の状態(位置、速度)からの差分を元に算出する質点の速度と加速度がおかしくなるのかなと。それに、計算時間がかなり掛かります。0.01の時間刻みで10秒分の軌道を5回ほど繰り返し計算するのに、1分ほど要します。逆運動学で腰の2関節と左右の脚の2x6関節をいっぺんに評価しているのが原因。ヤコビアンの大きさは12x14。これの擬似逆行列を計算して数回の収束計算ってなると、そりゃ計算に時間が掛かるはずです・・・プログラムもなんだかメチャクチャになってきました。・・・面倒くさい、疲れた。いう訳で、ヒト型ロボット開発はしばらくお休みすることに。プログラミング関係の勉強でもしてみようかなと思います。