スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ODEのテスト

年末は仕事が怒涛のごとく忙しい.こうなるとロボットをやる時間は1H/dayが限度だ.
動力学の実装をいろいろやってみたがうまくいかず,結局汎用のライブラリを使うことにした.
ODE(OpenDinamicsEngine)はロボットシミュをすでにやっている人もいて使えそうだったのでこれを使ってみる.
ODEでは動力学演算,衝突検出,3D描画がそれぞれ独立しているので,動力学と衝突のライブラリだけ使って描画はこれまでのOpenGL,Pov-Rayベースでやることにした.
ODEがどんなものか知るためにまずは定番,「ティーポット落とし」をやってみた.


上記のビデオでは初期角速度を与えた[ティーポット]を摩擦のある地面に落下させたもの.地面とぶつかった瞬間複雑な接触,離脱を繰り返しながら最終的には安定な姿勢で静定する様子が分かる.
ティーポットは本当は中身が空なのだが,初期慣性モーメントを求めるのがやっかいそうなので中身の詰まったものとして定義してある.お茶が入ったまま落としている感じである.(本当はふたが取れて吹っ飛ぶところが見たかったのだが,ポリゴン同士の衝突がうまく作動しなかったのでとりあえずひとかたまりでやってみた)
ODEはどちらかというとゲーム用であり,実機のシミュレータとしてはちょっと精度が(?)というところがあるが,自分で一から実装しているととても終わらないので,とりあえずこれをつかって進めて行こうと思う.
スポンサーサイト

Pov-RayによるCG作成

今週は物理シミュレーションの実装をやる予定だったが,なかなか難しい.
そこでちょっと寄り道してPov-Rayをいじることにした.OpenGLで動きを確認したのと同じ脚運行,胴体の位置姿勢などをPovのシーンファイルへ移植する.Povはテキストベースのレンダーで,レンダリングに使うパラメータはC言語で言う定数マクロみたいな記述が可能である.このためカメラの位置,光源の位置,オブジェクトの位置や物体の材質等などありとあらゆるパラメータがすべて外部からコントロール可能.アニメーションの場合はclockというPovの内部変数がフレームごとにインクリメントされるので,これをif文などで分岐させオブジェクトの位置姿勢(ロボットの場合は関節の位置,全体の姿勢など)を指定してやる.これによって時間軸方向にも自由に動きをプログラムできる.
シーンファイルができたらあとはPovが自動的にアニメーションフレームをレンダリングしてくれるので気長に待てばよいわけだ.


トロット歩容の動画(OpenGL)


上記のPovレンダリング(ラジオシティ)


今回はPov上で初めてロボットを動かすことができたが,なかなかリアルな仕上がりに満足している.ただしレンダリング時間は膨大で,上記の動画で40時間以上かかった(2CoreCPU2.0GHz相当マシンにて).
OpenGLは1フレーム40msecのリアルタイムなのでとんでもない差である.
大域照明を使ったより本格的なCGアニメをやろうとしたら,複数台のPCで昼夜レンダリングさせるとかしないとキツイかも知れない.


3D三昧

今週末もあまり時間が取れない.シミュレーションソフトの作成は遅れ気味.
今週はとりあえずOpenGLで実装していたameba-rideのモデルを自作関数でCADと関連付けるところまで.



上記の3DデータはCADで作る.それをSTLで出力してVC6.0で座標点列として読み込む.
座標変換などの処理をしてロボットを動かし,最後にOpenGLで面をレンダリングする.

3次元空間内でロボットを動かすのに,これまではOpenGLの座標変換ライブラリを使用していた.しかしそれだとオブジェクトの座標点列が取得できなかったため,今回は行列演算を自作プログラムで行い座標を直接操作することにした.点列としてデータを持っていると衝突判定など,このあとの処理もやりやすそうだからだ.
大量の点列操作を行うため,処理速度が気になるが上記のモデル6400ポリゴンで座標変換と表示あわせて40msecぐらいなのでそれほど悪くない.もともとリアルタイムである必要はないし,この方向で大丈夫だろう.

それにしてもまだまだ道のりは長い・・・

次の一手


今日は次の一手を考える.
年末が近づき,そろそろロボットも年内最後の一仕事といきたいところだ.Rideのほうはモータドライバができただけでメカは影も形もないのは寂しい限りだ.もっと強力に推進しなければ!
現状を整理しよう.

Rideでやらないといけないこと:
①機構設計(大まかな構成と部品の重量計算,値段の見積もり程度)
②シミュレータ(手付かず)
③Pov-Ray(できる見通しはついた)
④U/I系(必要な要素がはっきりしない)
⑤電源管理(手付かず)
⑥姿勢検出(ジャイロのサンプル動作確認の段階)

順当に①を進めるべきか・・・⑥も興味があるが時間がかかりそうな予感がする.⑥ができてもすぐにロボットの動歩行ができるわけではないし・・・それよりもまず先に②を完成させ,それをもとに設計を進めるべきか・・・④,⑤はまぁ後付でもいいだろう.③も興味があるがこれも優先度的には低い.
年末は②をやることにする.動力学シミュレータの作成だ.3rdで少しやっていたので取っ掛かりは悪くないはず.設計に生かせる様なものを作りたい.


あめーばRideのイメージ↓

ちょうどこれに脚がついたような感じにしたい.遊園地で100円を入れて遊ぶ乗り物である.
パンダがいいかどうかは分からないが,なにか動物を模したようなのにしたい.

大域制御実験_2

今日はまたグローバルカメラによるロボットの誘導を試す.
前回の実験では旋回の時の慣性で機体が振られすぎ制御が発散することがあった.

そこで発散しないように速度がいったんゼロになるまで待つ処理を入れてやってみる.ロボットの移動速度はカメラから得られる2フレーム間のX,Y移動および回転量の差として検出する.このようにして求めた速度がゼロになるまで制御量を0にする処理を入れると,ひとつの動作が次の動作に影響を与えなくなり,撮像,画像処理系の時間遅れも影響しなくなる.
結果,動きはきわめて緩慢になってしまったが,100%発散しなくなった.


上の動画のように,マウスでポチポチと目標地点を与えればロボットはゆるいゴムひもでつながれたようにちゃんとゴール付近まで移動する.急な旋回を与えるとその場でタイヤが空転することもあるが,やがて体勢を立て直してゴールへ向かう.この方法の利点は左右の制御量が多少狂っても,マーカがカメラに映ってさえいればいつかは目標に収束することである.また,ロボットの内部パラメータを一切使わないので移動プラットフォームを換えることもできる.ロボットの前後左右さえリモコン制御できれば歩行型や車輪型を選ばない.

今の難点は赤外線画像では周囲の景色がまったく分からないことで,このままでは周りに何があるのかカメラ画像から確認できない.やはりIRフィルタのON-OFFを切り替えて目標を与えるときには通常のカラー画像上で指示したいところだ.

動きがカクカクで遅いのはいったん置いておくとして,達成したい大域制御システムの骨組みは完成した.

プロフィール

もやね

Author:もやね
長野県在住の会社員(メカニカル・エンジニア).
ロボットは完全な趣味としてやってます.
E-mail:
mo_ya_ne[a]yahoo.co.jp
[a]⇒@

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
FC2カウンター
ブログ内検索
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。