0
$\begingroup$

Rosanswers logo

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


Originally posted by Steven55555 on ROS Answers with karma: 3 on 2021-04-06

Post score: 0


Original comments

Comment by gvdhoorn on 2021-04-06:
There was quite some discussion already on ros-planning/moveit#2581.

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

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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 :)


Originally posted by makr with karma: 179 on 2021-04-06

This answer was ACCEPTED on the original site

Post score: 2


Original comments

Comment by Steven55555 on 2021-04-06:
Thanks for your comment

Comment by v4hn on 2021-04-07:\

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.

Comment by makr on 2021-04-07:
Thank you for the corrections!

Comment by AndyZe on 2021-04-08:
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. ;)

Comment by gvdhoorn on 2021-04-09:\

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 :)

$\endgroup$

Your Answer

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