Up:Tutorial?    Previous:ロボット・ダイナミクス(単純モデル)     Next: 車輪移動ロボット?  

ロボット・ダイナミクス(ヒューマノイド)

※このサンプルはv121029, v2.0.1以降には対応しておりません。

ここではヒューマノイドロボットの物理シミュレーションを行うサンプルを紹介します。(バージョン110418以降で正常に動作)

世界ファイルでヒューマノイドロボットや人間の"dynamics"の設定を"false"に設定した場合はエージェントの関節角度を直接指定することができます。しかし、 "dynamics"の設定を"true"にした場合、関節角度を直接指定することができなくなります。また、シミュレーション開始と同時に重力の影響で関節が曲がってしまい、エージェントが崩れ落ちてしまいます。ここではヒューマノイドロボットの関節に力を加え関節角度を制御するサンプルを紹介します。

コントローラ作成

コントローラを作成します。

$ cd ~/MyWorld
$ emacs RobotContoroller.cpp

RobotController.cpp

これは関節の角度が目標角度に達するようにonActionで各関節の角速度を設定するサンプルです。onInitでヒューマノイドロボット(nii_robot.x3d)が持つすべてのヒンジ関節の関節名と目標角度の初期値(0°)が設定されています。また、メッセージを送信することによりそれぞれの関節の目標角度を設定することができます。

コンパイル

コンパイルします。

$ ./sigmake.sh RobotController.cpp

世界ファイルの作成

次に世界ファイルを作成します。

$ emacs RobotWorld.xml

RobotWorld.xml

"dynamics"を"true"に設定しました。

実行

それでは実行してみましょう。

$ sigserver.sh -w ./RobotWorld.xml

SIGViewerでサーバに接続してシミュレーションを開始します。するとヒューマノイドロボットがバランスを取りながら立っているのが見えます。

#ref(): File not found: "dyna_1.jpg" at page "ロボット・ダイナミクス(ヒューマノイド)"

次にロボットにメッセージを送信して関節の目標角度を設定します。

#ref(): File not found: "dyna_2.jpg" at page "ロボット・ダイナミクス(ヒューマノイド)"

右腕の関節角度を-20°に設定しました。 実行ボタンを押すと右肩の関節の目標角度が設定されて、右肩の関節がゆっくりと動き始めます。

※関節が動き始めるまで時間がかかることがあります。

#ref(): File not found: "dyna_3.jpg" at page "ロボット・ダイナミクス(ヒューマノイド)"

目標角度を大きくしすぎるとバランスが取れなくなってロボットは転倒してしまいます。

#ref(): File not found: "dyna_4.jpg" at page "ロボット・ダイナミクス(ヒューマノイド)"

Up:Tutorial?    Previous:ロボット・ダイナミクス(単純モデル)     Next: 車輪移動ロボット?


Front page   New List of pages Search Recent changes   Help   RSS of recent changes