# 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

## 1 Answer

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

### Original comments

Comment by kump on 2019-04-25:
Thank you, that was very well explained. I have a follow up question about the end effector group. Is that supposed to be part of the planning group containing both the arms, or should that be separate group? What exactly is the purpose of "End effectors" (defined in <end_effector> tags of the robot.srdf file)?

Comment by gvdhoorn on 2019-04-25:
Please don't post follow-up questions in already answered questions. ROS Answers works best with a 1-to-1 ratio of questions and answers. Post a new question.

Comment by kump on 2019-04-25:
@gvdhoorn This is more of getting to understand your answer than asking something different. I find the context of your answer very helpful for answering this detail that is still missing in my understanding of the planning groups in MoveIt!. It still belongs under the question "How is MoveIt! planning group supposed to be used?" If I haven't use the wording of "I have a follow up question" but instead "There is still something about the planning groups that I'm missing" would that make you more likely to answer?

Atleast the matter of whether, according to your explanation above, there should be a separate group for the last link of the robotic arm kinematic tree, as it is the point that I want to move at specific coordinates. I will ask about the end effector tags in another question.