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


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

※このサンプルはv2.2.0以降で正常に動作します。

ここでは物理シミュレーションモードでヒューマノイドロボットの関節を制御するサンプルを紹介します。

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

コントローラ作成

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

$ cd ~/MyWorld
$ emacs RobotController.cpp

RobotController.cpp

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

コンパイル

コンパイルします。

$ ./sigmake.sh RobotController.cpp

世界ファイルの作成

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

$ emacs RobotWorld.xml

RobotWorld.xml

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

実行

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

$ sigserver.sh -w ./RobotWorld.xml

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

RobotDynamics.PNG

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

RobotDynamics2.PNG

左肩の関節角度を-90°に設定しました。 実行ボタンを押すと左肩の関節の目標角度が設定されて、左肩の関節が動きます。

RobotDynamics3.PNG

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

Counter: 2476, today: 1, yesterday: 2

Attach file: fileRobotDynamics3.PNG 1044 download [Information] fileRobotDynamics2.PNG 984 download [Information] fileRobotDynamics.PNG 1049 download [Information]

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2014-11-07 (Fri) 16:47:46 (3450d)