Skip to content

Motion planning for Real robot and Gazebo simulation robot [Japanese]

Ry0 edited this page Feb 16, 2016 · 7 revisions

Moveit!を使って実機やgazeboでモーションプランニングするためのまとめ

前提条件

プランニングで使用するためのurdfが何種類かあります。

  • sia5 だけ
  • sia5 + 台
  • sia5 + kinectv2
  • sia5 + 台 + ジャミンググリッパ
  • sia5 + 台 + ジャミンググリッパ + kinectv2

西田研究室では、一番最後の全部のせurdfをlaunchすることにしています。

img

現状ではモーションプランニングを行うためのモデルの切り替えが容易ではありません。 変更すべき記述は、

  • motoman_project/motoman_sia5_moveit_config/launch/sia5_moveit_sensor_manager.launch.xml
    Kinectに関する記述があるので使わない場合は内容をコメントアウト

  • motoman_project/motoman_sia5_moveit_config/launch/move_group.launch
    これの50行目

    <!-- MoveGroup capabilities to load -->
    <param name="capabilities" value="move_group/MoveGroupCartesianPathService
                  move_group/MoveGroupExecuteService
                  move_group/MoveGroupKinematicsService
                  move_group/MoveGroupMoveAction
                  move_group/MoveGroupPickPlaceAction
                  move_group/MoveGroupPlanService
                  move_group/MoveGroupQueryPlannersService
                  move_group/MoveGroupStateValidationService
                  <!-- move_group/MoveGroupGetPlanningSceneService Kinectを使わない場合ここがいらない -->
                  move_group/ClearOctomapService
                  " />
  • motoman_project/motoman_sia5_moveit_config/launch/planning_context.launch
    これの9行目
  <!-- Load universal robot description format (URDF) -->
  <param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find motoman_description)/robots/sia5/urdf/sia5_nishida_lab.urdf"/>
  • motoman_project/motoman_sia5_moveit_config/config/sia5.srdf
    これに関してはMoveIt! Setup Assistantで目的のモデルで作成しなおしたほうが簡単な気がします。
    ただし保存は上書きしないこと。 モデルの変更についてはもっと簡単に変えられるように改善を行います。

追記 2016.2.9

モデルはlaunchファイルを分けることによって、変えられるようになりました。 Moveitのmoveit_planning_executionについてモデル別に作成されています。

roslaunch motoman_moveit sia5_
sia5_moveit_planning_execution.launch
sia5_nishida_lab_moveit_planning_execution.launch
sia5_with_jamming_moveit_planning_execution.launch
sia5_with_kinectv2_moveit_planning_execution.launch
sia5_with_table_moveit_planning_execution.launch

これだけあります。motoman本体だけの基本的なモデルでモーションプランニングを行いたい場合は

roslaunch motoman_moveit sia5_moveit_planning_execution.launch

です。

追記 おわり

実機を動かす

大まかな仕組み

Issue #46にて詳しい議論があります。

launch

1。motomanを動かしているコントロールPCと通信を開始するためのlaunch

roslaunch motoman_control sia5_nishida_lab_streaming.launch

2。FollowJointTrajectoryのactionメッセージをJointTrajectoryのtopicメッセージにrepublishしてくれるlaunch

roslaunch motoman_control sia5_real_control.launch

3。Moveitの立ち上げ

roslaunch motoman_moveit sia5_nishida_lab_moveit_planning_execution.launch

使うモデルは、そのときに装着している装備によって変えること。
以上で実機を使ったプランニングで遊べるようになります。

img

その他コマンド

ロボットを初期位置に戻す

rosrun motoman_control move_to_joint_real.py init

各関節角度を指定する場合は

rosrun motoman_control move_to_joint_real.py [0.1,0.2,0.3,0.4,0.5,0.6,0.7]

gazeboで実行する場合は、下のコマンドに読み替えて実行してください。

rosrun motoman_control move_to_joint_sim.py init

Gazebo上でロボットを動かす

大まかな仕組み

Gazeboモデルでは、いくつかの重要なnodeをlaunchしている。

1。 gzserver + gzclient 所謂Gazebo

2。 ros_controller motomanでは、JointPositionControllerJointTrajectoryControllerを用意しているが、実機を動かすときにJointTrajectoryメッセージを使っているので、Gazeboモデルでも後者のコントローラを使用している。

launch

1。 Gazeboの立ち上げ

roslaunch motoman_gazebo sia5_sia5_empty_world.launch

他のモデルは...

roslaunch motoman_gazebo sia5_
sia5_empty_world.launch    sia5_with_kinectv2.launch
sia5_nishida_lab.launch    sia5_with_table.launch
sia5_with_jamming.launch   

2。 MoveItの立ち上げ

roslaunch motoman_moveit sia5_moveit_planning_execution.launch

実機と同様、MoveitのプラグインもlaunchするファイルをGazeboで出現させるモデルによって変えてください。