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でサーバに接続してシミュレーションを開始します。するとヒューマノイドロボットがバランスを取りながら立っているのが見えます。 次にロボットにメッセージを送信して関節の目標角度を設定します。 左肩の関節角度を-90°に設定しました。 実行ボタンを押すと左肩の関節の目標角度が設定されて、左肩の関節が動きます。 Up:Tutorial? Previous:ロボット・ダイナミクス(単純モデル) Next: 車輪移動ロボット
Counter: 2646,
today: 2,
yesterday: 0
|