ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Currently, the limitations are as you describe. You can have multiple planning groups with overlapping joints (e.g. both_arms, left_arm and right_arm), but with the MoveGroupInterface you can only execute one trajectory at a time. You cannot plan two separate trajectories for the left and right arm and execute them independently.

The most common workaround is to take the planned trajectories for left and right arm (they are in plan.trajectory_) and send them as a goal to the action server of your robot arm (usually follow_joint_trajectory, check the ros_controllers.yaml in your moveit_config package). However, there is no collision checking between the two trajectories (!), since the plans were generated without any knowledge of the other robot's movement. You yourself have to make sure that the robot trajectories do not collide. The easiest way to do it might be to limit the working volume of each arm, or simply add a big box to the PlanningScene to divide the workspace.

The most complete way to do it and thus enable simultaneous trajectory execution is an active topic of discussion on the MoveIt issue tracker and on the roadmap for MoveIt development, so this should hopefully change soon. In fact, you can work on it yourself if you want to implement this correctly, and also apply for Google Summer of Code funding for it. The deadline is in 2 weeks or so from this answer.