Jerk-limited trajectory smoothing in MoveIt2!

After many months, a jerk-limited trajectory smoothing algorithm is available in MoveIt2 (main branch). Even better, just a one-line change in a config file is required.

Why do you need it?

  • Smoother motions for your robot
  • Increased hardware longevity
  • During normal circumstances, operation is completely transparent

The smoother is based on the excellent Ruckig library and it works in joint space. We plan to be extending it to Cartesian space soon. To begin smoothing, just add the Ruckig smoothing algorithm to the top of the list of OMPL planning adapters. This is usually kept in ompl_planning.yaml or a launch file. For example:

  default_planner_request_adapters/AddRuckigTrajectorySmoothing
  default_planner_request_adapters/AddTimeOptimalParameterization
  default_planner_request_adapters/ResolveConstraintFrames
  .
  .

If your robot has no joint jerk limits specified in joint_limits.yaml, the jerk limit defaults to 1000 rad/s^3. This should be a safe value to prevent damage to most robots. The run time of the smoothing plugin is fast (on the order of 0.5ms for ten waypoints).

Happy trajectory planning and execution!

12 Likes

Hey! We’re playing with Ruckig in Nav2 as well! Great minds :wink:

7 Likes

@smac was ruckig ever explored for nav2 or do you have any insights for that?