先挖个坑~

TOTG算法——Time-Optimal Trajectory Generation

论文及源码地址:http://www.golems.org/projects/traj.html


As a side note, the algorithm described in “Time-Optimal Trajectory Generation for Path
Following with Bounded Acceleration and Velocity” by Tobias Kunz and Mike Stilman is available as C++ code at https://github.com/tobiaskunz/trajectories. It has no dependencies except Eigen and is thus very easy to integrate. I used it as alternative to IPTP and was very content with computation time and resulting trajectories.

IPTP算法——Iterative Parabolic Time Parameterization

算法原理:TOPP(后有改进版本TOPP-RA),链接中有源码及论文地址。

IPTP算法另一种Improved IPTP by fitting a cubic spline

源码地址:https://github.com/ros-planning/moveit/tree/master/moveit_core/trajectory_processing/src
目前没有找到论文,有个算法描述:

This class sets the timestamps of a trajectory to enforce velocity, acceleration constraints.Initial/final velocities and accelerations may be specified in the trajectory.Velocity and acceleration limits are specified in the model.
This algorithm repeatedly fits a cubic spline, adjusts the timing intervals,and repeats until all constraints are satisfied.When finished, each trajectory waypoint will have the time set,as well as the velocities and accelerations for each joint.Since we fit to a cubic spline, the position, velocity, and acceleration will be continuous and within bounds.The jerk will be discontinuous.
To match the velocity and acceleration at the endpoints,the second and second-last point locations need to move.By default, two extra points are added to leave the original trajectory unaffected.If points are not added, the trajectory could potentially be faster,but the 2nd and 2nd-last points should be re-checked for collisions.
Migration notes: If migrating from Iterative Parabolic Time Parameterization,be aware that the velocity and acceleration limits are more strictly enforcedusing this technique.This means that time-parameterizing the same trajectory with the samevelocity and acceleration limits, will result in a longer trajectory.If this is a problem, try retuning (increasing) the limits.

此类设置轨迹的时间戳以强制执行速度,加速度约束。可以在轨迹中指定初始/最终速度和加速度。在模型中指定速度和加速度极限。

该算法反复拟合三次样条,调整时间间隔,并重复执行直到满足所有约束。完成后,每个轨迹航路点都会设置时间以及每个关节的速度和加速度。样条曲线,位置,速度和加速度将是连续的并且在范围之内。

为了使端点处的速度和加速度匹配,倒数第二个和第二个点的位置需要移动。默认情况下,会添加两个额外的点以使原始轨迹不受影响(这个地方就是三次样条插值的第四种情况:指定初始、最终速度和加速度)。如果不添加点,则轨迹可能会更快,但应该再次检查倒数第二和倒数第二点。

迁移注意事项:如果要从迭代抛物线时间参数化进行迁移,请注意,使用此技术会更严格地强制执行速度和加速度限制,这意味着对具有相同速度和加速度限制的同一轨迹进行时间参数化将导致更长的轨迹。这是一个问题,请尝试调整(增加)限制。

质量很高的相关博客:ROS进阶——运动规划分析
这个链接有三种算法实现效果的简单对比。