How is MoveIt! planning group supposed to be used?

I have a question about use of the MoveIt! planning groups. Say I have a robotic manipulator consisting of two arms (as on the picture below), that can rotate around its axis and around an axis perpendicular to its axis.

When I define two planning groups, one for the bottom arm and one for the upper arm, in the Rviz I have to move those groups separately. And as I was quickly looking through a Python interface tutorial for MoveIt!, it seems that you would need to set the pose of each planning group individually. Now that doesn't look like something you want to do. Ideally you want to move the whole robot at once, right? But if I define the whole robot as one planning group, what is the purpose of the planning groups in the first place?

Can somebody shed some light on this matter?

Thank you.

Originally posted by kump on ROS Answers with karma: 308 on 2019-04-25

Post score: 1

When I define two planning groups, one for the bottom arm and one for the upper arm, in the Rviz I have to move those groups separately. [..] Now that doesn't look like something you want to do. Ideally you want to move the whole robot at once, right?

yes, exactly. If you have a single robot you'd typically define a single planning group for the entire robot.

But if I define the whole robot as one planning group, what is the purpose of the planning groups in the first place?

Well, you only have a single robot. And if it's a relatively simple robot (which yours is), then it makes sense to define a planning group that contains all joints, as it makes it easy to plan for your single robot.

Planning groups start to make sense when:

• you have multiple robots in a single scene
• you have only one robot, but it's a composite robot (ie: actually consists of multiple robots that are considered to be one robot; a dual-arm setup would be one example)
• you have a single robot, but it has multiple end-effectors (in some cases you would configure N groups for N EEFs)
• your robot is complex (or large) enough to make it convenient to plan for subsets of joints (a humanoid with 32 dof would be an example, where you'd like to plan for each arm and each leg separately)

In each of these cases having multiple planning groups makes it easier to set goals for individual groups, so you don't have to deal with any of the other parts of the robot.

For simple setups like yours this may not be immediately applicable, but it can be very convenient.

Originally posted by gvdhoorn with karma: 86574 on 2019-04-25

This answer was ACCEPTED on the original site

Post score: 4