Ask Your Question

moveitcpp vs movegroup

asked 2021-04-06 10:50:15 -0500

Steven55555 gravatar image

updated 2021-04-09 06:20:40 -0500

This is out of curiosity. When is important to use moveitcpp instead of movegroup(advantages and inconvenience). If the goal was a commercial application, would moveitcpp be better and why.

I have already gotten some response but curios to hear more from other people that have used both.

@AndyZe One advantage is decreased latency.

Some disadvantages are:

Can only be used with C++ Less tutorial documentation. I'd be interested to hear more pros/cons, too!

Well, you have reminded me of another advantage of moveit_cpp:

You can do things like combine trajectories more easily, or run your own post-processign with moveit_cpp. That's not really an option with MGI.

@ v4hn If you want detailed control over the C++ datastructures that do the actual planning, you need MoveItCpp instead or have to do the whole class setup that MoveItCpp does for you by yourself. That's pretty much the whole story.

Edit: Thanks for your answers so far

edit retag flag offensive close merge delete



There was quite some discussion already on ros-planning/moveit#2581.

To avoid duplicating all of that, please summarise it in your question.

gvdhoorn gravatar image gvdhoorn  ( 2021-04-06 11:14:08 -0500 )edit

1 Answer

Sort by » oldest newest most voted

answered 2021-04-06 16:51:35 -0500

MAKR gravatar image

updated 2021-04-07 07:09:27 -0500

MoveGroupInterface is generally easier if you know ROS already, and there is more documentation as it's been around longer.

moveitcpp might require more experience in C++ but gives you more control over moveit processes. I'd recommend it if you need to do 'realtime' applications (catching a ball, contact tasks) or want more control over memory (limited hardware). (Edit: Incorrect, my bad. Thanks to @v4hn and Cunningham's Law :)

The company that maintains MoveIt is actively improving moveitcpp, so more documentation will emerge over time :)

edit flag offensive delete link more


Thanks for your comment

Steven55555 gravatar image Steven55555  ( 2021-04-06 23:36:03 -0500 )edit

I'd recommend it if you need to do 'realtime' applications (catching a ball, contact tasks)

I definitely would not! Except for the pilz planners (which are no real planners), all other planners are definitely not meant for real-time servoing / real-time feedback. moveit_servo is meant for such tasks, but does not provide sophisticated global planning. Hybrid planners for mixed applications are being developed, but I'm not aware of solutions you can just throw at your problems.

or want more control over memory (limited hardware).

A more critical aspect is actually thread-control. If you use the MoveGroupInterface, the planner will actually run in a thread in the move_group ROS node. This is good because it means there is only one true PlanningScene - the scene in that node. But it's bad if you want to control the thread directly or run multiple planners in different threads.

v4hn gravatar image v4hn  ( 2021-04-07 02:49:03 -0500 )edit

Thank you for the corrections!

MAKR gravatar image MAKR  ( 2021-04-07 07:09:52 -0500 )edit

An advantage of MGI: you can inspect all of the commands easily with the usual ROS tools. rostopic echo and rosbag record. If you go the moveit_cpp route, you'll be writing a lot of print statements and recompiling to debug. ;)

AndyZe gravatar image AndyZe  ( 2021-04-08 13:58:33 -0500 )edit

If you go the moveit_cpp route, you'll be writing a lot of print statements and recompiling to debug. ;)

unless you add debug publishers at strategic points :)

gvdhoorn gravatar image gvdhoorn  ( 2021-04-09 07:56:40 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2021-04-06 10:50:15 -0500

Seen: 38 times

Last updated: Apr 09