Rosanswers logo

Hi, all, I'm using MoveIt to plan a trajectory to reach certain. The trajectory is sent via FollowJointTrajectory action. I intend to receive the goal in FollowJointTrajectory and interpolate between the traj points in follow_joint_trajectory/goal using quintic spline, then send these points to motor.

But I found the acceleration of the last trajectory point is not zero, while the velocity is zero, the joint position is desired position. I don't know why the last acc is not zero. This would cause oscillation after this point.

Thanks for any help!

Originally posted by xibeisiber on ROS Answers with karma: 137 on 2021-06-23

Post score: 0

Original comments

Comment by gvdhoorn on 2021-06-23:
I'd suggest to check whether MoveIt master version (or anything newer than Kinetic) has this problem.

Comment by xibeisiber on 2021-06-23:
checked using the demo.launch in panda_moveit_config on ros noetic. The problem still exists.

Comment by fvd on 2021-06-24:
This depends on the retiming algorithm you use (IPTP, TOTG, TOPPRA...). Did you try different ones? IIRC the ones that are open-source aren't jerk-limited.

Comment by gvdhoorn on 2021-06-24:\


do we already have a MoveIt integration for that?

Comment by xibeisiber on 2021-06-24:
I tried to use AddIterativeSplineParameterization instead of the default AddTimeParameterization just now. seems it works. the acc of last point is 0.

I don't have TOPPRA currently.

Thanks very much@gvdhoorn@fvd

Comment by fvd on 2021-06-24:
There's no MoveIt integration for TOPPRA yet. I'll post an answer.

Comment by xibeisiber on 2021-06-26:
BTW: Is there any retiming algorithm that can consider the max jerk? The trajectory given by "AddIterativeSplineParameterization" has a large jerk.

Comment by fvd on 2021-06-26:
I don't know about open-source ones, but there are at least some commercial options.

Comment by gvdhoorn on 2021-06-26:
AIS-Bonn/TopiCo can do this. There isn't a ready-to-use MoveIt plugin for it though afaik.

pantor/ruckig is a jerk-limited, time-optimal implementation of a position/velocity controller. It does not do paths (yet), but it can be used on the execution side.


1 Answer 1


Rosanswers logo

This a function of the time parameterization algorithm that you use. This tutorial describes how to apply different time parameterization methods to your plans manually. The default time parametrization is added by the AddTimeParameterization planning adapter (add_time_parametrization.cpp), which you can replace with the AddTimeOptimalParameterization or AddIterativeSplineParameterization in your moveit_config's launch files.

Pull requests to add new methods such as TOPPRA are very welcome. A recent discussion on Github is here.

Originally posted by fvd with karma: 2180 on 2021-06-24

This answer was ACCEPTED on the original site

Post score: 0


Your Answer

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