
139、轨迹规划与插值:多项式与样条插值的轨迹生成调试机械臂的时候,最烦的不是控制算法本身,而是轨迹生成那一层。你辛辛苦苦写好了一个笛卡尔空间路径点,结果机械臂一跑,要么在中间点抖一下,要么速度曲线像锯齿一样,要么干脆在某个点停下来喘口气再走。这时候你大概率会怀疑是不是插值没做好。今天这篇笔记,就把轨迹规划里最常用的多项式插值和样条插值掰开揉碎讲清楚,顺便把我踩过的坑都标出来。先说一个真实场景。之前调一台六轴协作臂,要在两个点之间走一条直线,末端执行器从A点(0.3, 0.0, 0.2)走到B点(0.5, 0.2, 0.4),要求5秒内完成,起点和终点速度都为零。我第一版代码直接用了线性插值,就是位置随时间均匀变化。结果机械臂在起点和终点处速度突变,加速度理论上无穷大,实际表现出来就是电机啸叫、末端抖动。后来换成五次多项式插值,问题立刻消失。这就是插值方法选型的重要性。多项式插值的核心思想多项式插值的基本思路是,用一条多项式曲线来拟合位置随时间的变化关系。最常用的是三次多项式和五次多项式。三次多项式有四个系数,可以约束起点和终点的位置和速度。写成一般形式:q(t) = a0 + a1*t + a2*t^2 + a3*t^3给定起点位置q0、终点位置qf、起点速度v0、终点速度vf,以及总时间T,四个方程解四个未知数:q(0) = q0 - a0 = q0 q(T) = qf - a0 + a1*T + a2*T^2 + a3*T^3 = qf q'(0) = v0 - a1