Noetic API breakage for MoveIt

The latest Noetic release of MoveIt brought some very useful new features:

  • Ruckig jerk-limited trajectory smoothing
  • Parallel planning with OMPL

We’re especially excited about the parallel planning feature. It allows you, for example, to plan a path with RRTConnectk in parallel with the Pilz Cartesian planner. The Pilz planner is very fast and it finds a straight-line path (if one exists). If Pilz succeeds, the solution is accepted. If Pilz does not succeed, then RRTConnectk is likely to find a meandering alternative (if one exists). This reduces the “arm flailing” that is a common RRTConnectk complaint.

This is just an example; you can use other planners besides RRTConnectk and Pilz. You can also use more than two planners. There is a tutorial for MoveIt2 here (MoveIt1 should be very similar): Running Multiple Planning Pipelines in Parallel with MoveItCpp — MoveIt Documentation: Rolling documentation

Unfortunately this change was API-breaking. Here’s a quick guide on how to update your source code:

PlanningComponent::PlanSolution replace with planning_interface::MotionPlanResponse

plan_solution.trajectory replace with plan_solution.trajectory_

Sorry for the breakage. :confused:

2 Likes

Really glad to see we’re making more and more functional improvements to MoveIt, even if it means API breakages!

Happy to see this functionality included. I’ve found a few use cases for this already, so a little bit of API breakage is worth the tradeoff.