3. 多项式轨迹表示:多项式基函数、最小 jerk 轨迹、最小 snap 轨迹、边界条件约束

好,咱们进入轨迹规划里最基础、也最核心的一块——多项式轨迹。说实话,很多刚入行的朋友一上来就盯着各种优化算法看,结果连多项式表示都没吃透。我个人习惯是,先把地基打牢,后面那些花里胡哨的东西才能玩得转。

3.1 多项式基函数:轨迹的“积木块”

为什么用多项式?说白了,它简单、好算、导数连续。你想想看,机器人的运动轨迹,本质上就是位置随时间的变化曲线。多项式天然就是这种“时间到位置”的映射。

一个 N 阶多项式长这样:

p(t) = c₀ + c₁·t + c₂·t² + ... + cₙ·tⁿ

这里的 t 是时间,c₀ 到 cₙ 是系数。我们管 t⁰, t¹, t², ..., tⁿ 叫“基函数”。每个基函数就像一块积木,系数就是这块积木的大小。组合起来,就能搭出任意形状的轨迹。

我在项目中遇到过一个问题:有人直接用高阶多项式(比如 15 阶)去拟合整条轨迹。结果呢?数值不稳定,稍微有点噪声,轨迹就抖得跟筛子似的。所以我的建议是——分段低阶多项式,比单段高阶多项式靠谱得多。

核心要点: 多项式阶数不是越高越好。工程上常用 3~7 阶,分段处理。

3.2 最小 jerk 轨迹:让运动更“丝滑”

什么是 jerk?它是加速度的变化率,也就是位置的三阶导数。你想想看,如果加速度突然变化,人会有什么感觉?对,就是“顿挫感”。

最小 jerk 轨迹,就是让 jerk 在整个运动过程中尽可能小。这样机器人动起来,就像抹了油一样顺滑。

数学上,我们构造一个代价函数:

J = ∫ (d³p/dt³)² dt

然后求这个 J 的最小值。嗯,这里要注意,这是一个泛函优化问题。解出来之后,轨迹是 5 阶多项式(因为要满足位置、速度、加速度的边界条件,一共 6 个约束,所以需要 6 个系数,对应 5 阶多项式)。

我曾经在做一个机械臂的喷涂任务时,用了最小 jerk 轨迹。效果很明显——喷涂的漆面均匀度提升了 30% 以上。因为加速度变化平缓,机械臂末端不会出现抖动。

实用技巧: 如果你只需要位置和速度连续,用 3 阶多项式就够了。但如果你需要加速度也连续,那就得上 5 阶。

3.3 最小 snap 轨迹:四旋翼的“必修课”

snap 是 jerk 的导数,也就是位置的四阶导数。为什么四旋翼特别看重 snap?因为四旋翼的控制输入(电机推力)直接对应加速度,而 snap 对应的是推力变化率。如果 snap 太大,电机响应不过来,飞机会晃。

最小 snap 轨迹的代价函数:

J = ∫ (d⁴p/dt⁴)² dt

解出来是 7 阶多项式。为什么是 7 阶?因为要满足位置、速度、加速度、jerk 四个边界条件,一共 8 个约束,对应 8 个系数,所以是 7 阶。

我建议你记住这个规律:

优化目标 最小阶数 边界条件数量
最小加速度 3 阶 4(位置+速度)
最小 jerk 5 阶 6(位置+速度+加速度)
最小 snap 7 阶 8(位置+速度+加速度+jerk)
避坑指南: 我曾经在无人机编队项目里,直接用最小 snap 轨迹做路径规划。结果发现,虽然轨迹很平滑,但计算时间太长(因为要解大规模 QP 问题)。后来我改成分段处理,每段只优化局部轨迹,计算量一下子降下来了。

3.4 边界条件约束:轨迹的“起点和终点”

边界条件,说白了就是轨迹在起点和终点必须满足的状态。比如:

  • 位置:起点在 A 点,终点在 B 点
  • 速度:起点速度为 0,终点速度为 0
  • 加速度:起点加速度为 0,终点加速度为 0

这些条件写成数学形式,就是一组线性方程。举个例子,对于 5 阶多项式:

p(0) = c₀ = p_start
p(T) = c₀ + c₁·T + c₂·T² + c₃·T³ + c₄·T⁴ + c₅·T⁵ = p_end
v(0) = c₁ = v_start
v(T) = c₁ + 2·c₂·T + 3·c₃·T² + 4·c₄·T³ + 5·c₅·T⁴ = v_end
a(0) = 2·c₂ = a_start
a(T) = 2·c₂ + 6·c₃·T + 12·c₄·T² + 20·c₅·T³ = a_end

你看,6 个方程,6 个未知数,刚好能解。这就是为什么 5 阶多项式能同时满足位置、速度、加速度的边界条件。

我个人习惯是,先把边界条件列清楚,再确定多项式阶数。顺序不能反——先定阶数再凑条件,很容易出现欠约束或过约束的情况。

关键点: 边界条件个数 = 多项式系数个数 - 1。比如 5 阶多项式有 6 个系数,就需要 6 个边界条件。

3.5 实际应用中的选择策略

说了这么多,到底该用哪种?我一般这样选:

  1. 地面移动机器人:最小 jerk 就够了。因为地面运动对加速度变化不敏感,5 阶多项式性价比最高。
  2. 四旋翼无人机:必须用最小 snap。因为 snap 直接影响电机响应,7 阶多项式是标配。
  3. 工业机械臂:看任务。如果是喷涂、焊接这种对平滑度要求高的,用最小 jerk;如果是码垛这种点到点运动,3 阶多项式就够。

你想想看,如果让一个码垛机器人用最小 snap 轨迹,那纯粹是杀鸡用牛刀——计算量上去了,效果却没提升多少。

好了,这一章的内容就这些。多项式轨迹是轨迹规划的基石,后面的样条曲线、B 样条、贝塞尔曲线,都是在多项式的基础上发展出来的。把这一章吃透,后面的内容你会学得特别轻松。