Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add documentation for the Ruckig planning request adapter #764

Merged
merged 1 commit into from
May 19, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 13 additions & 0 deletions doc/time_parameterization/time_parameterization_tutorial.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,16 @@ The Iterative Parabolic Time Parameterization algorithm is used by default in th
The Iterative Spline Parameterization algorithm was merged with `PR 382 <https://github.com/ros-planning/moveit/pull/382>`_ as an approach to deal with these issues. While preliminary experiments are very promising, we are waiting for more feedback from the community before replacing the Iterative Parabolic Time Parameterization algorithm completely.

Time-optimal Trajectory Generation introduced in PRs `#809 <https://github.com/ros-planning/moveit/pull/809>`_ and `#1365 <https://github.com/ros-planning/moveit/pull/1365>`_ produces trajectories with very smooth and continuous velocity profiles. The method is based on fitting path segments to the original trajectory and then sampling new waypoints from the optimized path. This is different from strict time parameterization methods as resulting waypoints may divert from the original trajectory within a certain tolerance. As a consequence, additional collision checks might be required when using this method.

Jerk-Limited Trajectory Smoothing
---------------------------------
A time parameterization algorithm such as TOTG calculates velocities and accelerations for a trajectory, but none of the time parameterization algorithms support jerk limits. This is not ideal -- large jerks along a trajectory can cause jerky motion or damage hardware. As a further post-processing step, the Ruckig jerk-limited smoothing algorithm can be appliied to limit joint jerks over the trajectories.

To apply the Ruckig smoothing algorithm, a jerk limit parameter should be defined for every joint. It can go in a launch file and the parameter name is ``ruckig/YOUR_JOINT_NAME/jerk_limit``. If you do not specify a jerk limit for any joint, a reasonable default will be applied and a warning printed.

Finally, add the Ruckig smoothing algorithm to the list of planning request adapters (typically in ``ompl_planning_pipeline.launch.xml`` or ``ompl_planning.yaml``). The Ruckig smoothing algorithm should run last, so put it at the top of list:

<arg name="planning_adapters"
default="default_planner_request_adapters/AddRuckigTrajectorySmoothing
default_planner_request_adapters/AddTimeParameterization
default_planner_request_adapters/ResolveConstraintFrames