4、轨迹平滑核心指标:连续性(C0/C1/C2)、曲率、加加速度(Jerk)

各位同学,今天我们来聊聊轨迹平滑的核心指标。说实话,这可能是整个避障算法里最容易被忽视、但又最致命的一环。

我刚开始做机器人运动规划那会儿,总觉得只要路径能绕开障碍物就行。结果呢?机器人走起来一顿一顿的,像在跳机械舞。后来我才明白——轨迹平滑,才是让机器人从「像个新手」变成「像个老司机」的关键。

4.1 连续性:C0、C1、C2 到底在说什么?

先问大家一个问题:你坐过那种急刹车、急转弯的出租车吗?那种体验,说白了就是轨迹连续性不够好。

连续性,描述的是轨迹在不同段之间的衔接质量。我们一般用 C0、C1、C2 来分级:

连续性等级 含义 数学表达 实际感受
C0 位置连续 p(t) 连续 不会瞬移,但可能急停
C1 速度连续 v(t) 连续 速度变化平滑,无突变
C2 加速度连续 a(t) 连续 加减速平缓,体感舒适

核心观点:大多数工业场景,C1 是底线,C2 是追求。如果你做的是 AGV 或者服务机器人,C2 几乎就是刚需。

我记得有一次做仓储机器人的项目,路径规划只保证了 C0 连续。结果机器人每次转弯都像被踹了一脚,货架上的箱子哗啦啦往下掉。嗯,从那以后,我再也不敢只做 C0 了。

4.2 曲率:转弯的「急」与「缓」

曲率,说白了就是描述轨迹弯曲程度的指标。曲率越大,转弯越急;曲率越小,路径越直。

数学上,曲率 κ 的定义是:

κ = |dθ / ds|

其中 θ 是切线方向角,s 是弧长。简单理解就是:单位弧长上方向变化的快慢。

你想想看,如果一条轨迹在某点的曲率突然变得很大,那机器人就得猛打方向盘。对于差速轮机器人还好,如果是阿克曼转向的车,那基本就是原地打转了。

我的经验:在实际项目中,我习惯把曲率阈值设为一个安全值。比如对于 1m/s 速度的机器人,曲率最好不超过 0.5 m⁻¹。超过这个值,机器人就容易侧滑或者失控。

4.3 加加速度(Jerk):被忽视的「舒适度杀手」

加加速度,英文叫 Jerk,是加速度的变化率。公式很简单:

Jerk = da / dt

为什么这个指标重要?

我举个例子。你坐电梯,启动那一下是不是会感觉「嗡」一下?那就是加速度突变带来的 Jerk。如果 Jerk 太大,人的前庭系统就会抗议——说白了就是晕车。

对于机器人来说,Jerk 过大会导致:

  • 电机电流冲击,容易烧驱动器
  • 机械结构震动,影响定位精度
  • 货物晃动,甚至倾倒

我曾经踩过的坑:有一次做高速分拣机器人,我优化了路径的 C2 连续性,但没管 Jerk。结果机器人跑起来像在跳霹雳舞,末端执行器抖得跟筛子似的。后来加了 Jerk 约束,问题才解决。

4.4 四个指标的关系:一张图看懂

下面这张图,是我自己总结的轨迹平滑核心指标关系图。你看完应该就明白了:

轨迹平滑 C0 连续性 C1 连续性 C2 连续性 曲率 + Jerk 基础要求 进阶要求 C0→C1→C2 是递进关系,曲率和 Jerk 是 C2 之后的精细化约束

4.5 实战中的取舍

你可能会问:是不是连续性越高越好?

不一定。我个人的经验是:

  • 低速场景(< 0.5m/s):C1 就够了,曲率别太离谱就行
  • 中速场景(0.5~2m/s):C2 是必须的,Jerk 要控制在 2m/s³ 以内
  • 高速场景(> 2m/s):C2 是底线,Jerk 最好小于 1m/s³,曲率要平滑过渡

一个小技巧:我习惯在轨迹优化时,把 Jerk 的权重设得比曲率大一点。因为曲率问题可以通过减速来缓解,但 Jerk 问题减速也救不了——你想想看,急加速和急减速带来的冲击,跟速度大小关系不大。

4.6 小结

好了,这一节的内容就这些。总结一下:

  1. C0/C1/C2 是轨迹连续性的三个层次,C2 是大多数场景的追求目标
  2. 曲率 决定了转弯的急缓,要设置合理的阈值
  3. Jerk 是加速度的变化率,直接影响舒适度和机械寿命
  4. 四个指标要综合考虑,根据实际场景做取舍

下一节我们会讲具体的轨迹平滑算法,比如 B 样条、贝塞尔曲线这些。到时候我会结合代码,带大家一步步实现。今天就先到这里,有问题随时问我。

可可精品资料库