Rosanswers logo


I am currently in the process of implementing a custom planner for my robot arm through MoveIt!.

Looking at the documentation and at various forums, there seems to be two approaches.

  1. Install OMPL from source and add your custom planner to OMPL. Then change the corresponding MoveIt! OMPL package to recognize this new planner. [1] [2] [3] [4]
  2. Use the motion planning plugin to directly add a planner to MoveIt! [5] [6]

My questions about implementing these custom planners are:

  1. What are the pros and cons of each approach? Is there any advantage for using OMPL over directly implementing the planner into MoveIt! via a plugin?
  2. Is there any additional tutorial/documentation for the second approach, implementing a planner plugin? It seems to me that the few sources/tutorials about implementing custom planners refer to the OMPL approach. Am I missing other tutorials about creating MoveIt! planning plugins?
  3. Are there alternative approaches that I may have missed?

Thank you for taking the time to read and respond.


[1] https://web.archive.org/web/20141025194602/http://moveit.ros.org/wiki/OMPL/Add_New_Planner

[2] https://answers.ros.org/question/296238/custom-state-sampler-in-moveit/

[3] https://ompl.kavrakilab.org/newPlanner.html

[4] https://groups.google.com/forum/#!topic/moveit-users/Hm0Ah-ABeKI

[5] https://moveit.ros.org/documentation/concepts/

[6] http://wiki.ros.org/industrial_trajectory_filters/Tutorials/PlanningRequestAdapterTutorial

Originally posted by scchow on ROS Answers with karma: 55 on 2018-07-23

Post score: 1


1 Answer 1


Rosanswers logo

Hello, I'm in the same process as you I believe; I'm trying to add a custom planner to MoveIt. I decided to use the first approach. Here are the two reasons I believe it is better to do so:

  • OMPL already provide you with low-level building blocks. Things like data structures, operators to work on them and also all the already existing planners. For example, you can think about the representation of state-space and the tools (operators) that are associated with it. What I'm trying to say is that if you use OMPL, you won't have to worry about / program all of these things, and you can directly program your planner.
  • There already is a plugin between MoveIt and OMPL. This seems obvious, but it means you don't have to spend (a lot of) time actually writing a new plugin (see blow), just code the planner.

As for you point n°2, I don't think there is any tutorial. But you can study the source code of the OMPL/MoveIt interface (located in ../src/moveit/moveit_planners/ompl/ompl_interface) and from there, create your own plugin for your planning library. I actually attempted to do so for the KrisLibrary, but I'm not good enough to do it. I believe even for an experienced programmer, this would take quite a long time.

As for point n°3, I am not aware of any other methods.

Hope this helps you.

Best, Maxens.

Originally posted by mxch_18 with karma: 146 on 2018-07-26

This answer was ACCEPTED on the original site

Post score: 4


Your Answer

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