Up:Tutorial? Previous:車輪移動ロボット Next: 距離センサ 車両のダイナミクス †前節では,動力学計算をしない状態での車両の制御を説明しましたが,ここでは車両の物理シミュレーションを行うサンプルを紹介します。 ダンベルモデル †モデルの作成 †まずロボットの形状モデルなどが置かれたディレクトリに移動し、以下のファイルを作成します。 $ cd ~/sigverse-<version>/share/sigverse/data/shape/ $ emacs Dumbel.x3d このサンプルは2つのシリンダを関節で接続したモデルです。 同じ形状ファイルをクライアント側のSIGViewerのインストール先に置きます。 Jointの親子関係 †作成したモデルのJointの親子関係は以下のようになっています。 Humanoid sample(モデルのルート) + Joint JOINT0 (ルートジョイント、3軸における位置、回転の6つの自由度をもつ) + Joint JOINT_CENTER :Segment LINK_CENTER (固定ジョイント、自由度0) + Joint JOINT_LWHEEL :Segment LINK_LWHEEL(ヒンジジョイント、自由度1) + Joint JOINT_RWHEEL :Segment LINK_RWHEEL(ヒンジジョイント、自由度1) このモデルではLINK_LWHEELがJOINT_LWHEELによって接続され、JOINT_RWHEELがLINK_RWHEEL によって接続されています。 LINK_LWHEELとLINK_RWHEELはそれぞれシリンダ形状となっていて、2つのシリンダが回転することによって車輪運動が実現されます。 設定ファイル †エージェント設定ファイルと世界ファイルを作成します。 $ cd ../xml $ emacs DumbelTest.xml $ emacs DumbelWorld.xml ダイナミクスをtrueにしています。 コントローラ †次に車輪を回転させるコントローラを作成します。 $ emacs DumbelController.cpp setWheelProperty()で車両の特性を設定します。各引数の意味は下記の通りとなっています。 第1引数 : 左側の車輪のリンクオブジェクト名 第2引数 : 左側の車輪の消費電力[W](2011/4/12時点未対応) 第3引数 : 左車輪の最大角速度[rad/s] 第4引数 : 速度の精度[rad/s] 第5引数 : シミュレーションステップごとに加えられる一様分布に従うノイズ 第6引数 : 1rad回転するごとに加えられるノイズの回数 第7引数 : 左側車輪に掛けられる最大トルク[Nm] 第8引数 : 右側の車輪のリンクオブジェクト名 第9引数 : 右側の車輪の消費電力[W](2011/4/12時点未対応) 第10引数 : 右車輪の最大角速度[rad/s] 第11引数 : 速度の精度[rad/s] 第12引数 : シミュレーションステップごとに加えられる一様分布に従うノイズ 第13引数 : 1rad回転するごとに加えられるノイズの回数 第14引数 : 右側車輪に掛けられる最大トルク[Nm] コンパイルします。 $ ./sigmake.sh DumbelController.cpp 実行 †それでは実行してみましょう。 $ ./sigserver.sh -w DumbelWorld.xml viewerで見てみると、定期的にダンベルが前後に動くことが確認できます。 Up:Tutorial? Previous:車輪移動ロボット Next: 距離センサ
Counter: 2310,
today: 1,
yesterday: 0
|