Rosanswers logo


This passage from book MASTER ROS FOR ROBOTICS PROGRAMMING, which explains how motion planner works in moveit raises my question:

MoveIt! can talk to the motion planners through the plugin interface. We can use any motion planner by simply changing the plugin. This method is highly extensible so we can try our own custom motion planners using this interface. The move_group node talks to the motion planner plugin via the ROS action/services. The default planner for the move_group node is OMPL (http://ompl.kavrakilab.org/)

To start motion planning, we should send a motion planning request to the motion planner which specified our planning requirements. The planning requirement may be setting a new goal pose of the end-effector, for example, for a pick and place operation.

We can set additional kinematic constraints for the motion planners. Given next are some inbuilt constraints in MoveIt!:


Using these constraints, we can send a motion planning request and the planner will generate a suitable trajectory according to the request. The move_group node will generate the suitable trajectory from the motion planner which obeys all the constraints. This can be sent to robot joint trajectory controllers


I wonder which node is motion planner in moveit?

Could u explain the above passage using the image below?


As the figure shown below, while there are nodes of action_topics in the namespace of place and pickup respectively, there is also a node of action_topics in the namespace of move_group, which seems redundant to me, there must be something I misunderstand.


What's more, they form a loop in combination with move_group and rviz, I do not quite understand how things work

Here is the rqt_graph for moveit_config demo.launch

image description


Quoted from official moveit concept introduction

move_group is structured to be easily extensible - individual capabilities like pick and place, kinematics, motion planning are actually implemented as separate plugins with a common base class. The plugins are configurable using ROS through a set of ROS yaml parameters and through the use of the ROS pluginlib library. Most users will not have to configure move_group plugins since they come automatically configured in the launch files generated by the MoveIt! Setup Assistant.


From above, I realize that the plugins are configured by pluginlib and yaml parameters, instead of nodes, so obviously there is no node in rqt_graph for motion planner, right?


What's more, motion planner is part of the move_group node?


So-called motion planning request, mentioned in many tutorials, is offered by rviz gui or user's code, right?

Originally posted by shawnysh on ROS Answers with karma: 339 on 2017-01-16

Post score: 0


1 Answer 1


Rosanswers logo

Question 1: Obsolete

Question 2: These are not redundant. Pickup and Place are actions that need a ROS action interface (i.e. "action_topics"), move_group is a ROS node, but the name is also used for an action that accepts PlanningRequests. There is a Ticket to change the name of one of them here.

Question 3: That's not a question. ROS nodes are not restricted to loop-less communication graphs.

Question 4: Yes

Question 5: Well, it's a couple of C++ classes that are provided in the move_group node, but you could also use the classes in your own code (although you should probably to start with using the move_group node if you're new to MoveIt.

Question 6: Yes. The MoveGroupInterface C++ class can be used to construct them more easily and send them via the move and plan methods.

Originally posted by v4hn with karma: 2950 on 2017-01-16

This answer was ACCEPTED on the original site

Post score: 2

Original comments

Comment by shawnysh on 2017-01-16:
Thanks a lot for your reply. It really helps!!!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.