1. 轨迹平滑概述:为什么需要轨迹平滑?平滑性的数学定义与工程意义
1.1 一个让我印象深刻的教训
先讲个故事。几年前我做园区物流机器人项目,路径规划跑得好好的,仿真里也看不出问题。结果一上路,机器人走两步就抖一下,像得了帕金森。电机嗡嗡响,底盘嘎吱嘎吱,乘客投诉说「这车是不是要散架了」。
查了两天,问题出在哪?路径上有个急转弯,曲率突变太大。控制器拼命追轨迹,追不上就震荡,震荡就抖。嗯,从那以后,我再也不敢忽视轨迹平滑了。
说白了,轨迹平滑不是锦上添花,是刚需。
1.2 为什么需要轨迹平滑?
你想想看,一个机器人或者自动驾驶车辆,它要沿着一条路径走。如果这条路径本身就不平滑,会发生什么?
- 执行器受不了:方向盘猛打、电机急加速急减速,机械磨损加剧
- 乘客体验差:横向加速度突变,人坐在里面东倒西歪
- 控制精度下降:路径曲率变化太快,PID控制器根本追不上
- 安全性降低:急转弯可能导致侧翻或轮胎打滑
核心观点:不平滑的轨迹,是「理论上可行,实际上不可行」的典型代表。
我在项目中遇到过最极端的情况——路径上有一个180度掉头弯,曲率从0直接跳到0.5。结果呢?车辆直接冲出道路边界,差点撞墙。后来我加了一个曲率约束的平滑模块,同样的路径,稳稳当当过弯。
1.3 平滑性的数学定义
好,感性认识有了,咱们来点硬的。平滑性在数学上怎么定义?
一条轨迹通常用参数曲线表示:p(s) = (x(s), y(s)),其中 s 是弧长参数。平滑性可以从几个层次来看:
| 平滑等级 | 数学条件 | 工程含义 |
|---|---|---|
| C0 连续 | 位置连续 | 路径没有断点,但可能有尖角 |
| C1 连续 | 位置 + 切线方向连续 | 路径没有尖角,但曲率可能突变 |
| C2 连续 | 位置 + 切线 + 曲率连续 | 路径光滑,方向盘不会猛打 |
| G2 连续 | 几何连续(曲率连续) | 工程上最常用的要求 |
我个人习惯:做轨迹规划时,至少要求 G2 连续。C1 连续虽然数学上够了,但实际跑起来还是会有抖动。G2 连续才能保证曲率变化是平滑的。
曲率的数学表达式:
κ(s) = |x'(s)y''(s) - y'(s)x''(s)| / (x'(s)² + y'(s)²)^(3/2)
曲率变化率(jerk 的几何版本):
κ'(s) = dκ/ds
嗯,这里要注意:曲率连续还不够,曲率变化率也要控制。否则就会出现「方向盘慢慢打,但加速度突然变」的情况。
1.4 工程意义:平滑性到底影响什么?
咱们从工程角度拆开来看:
1.4.1 对控制层的影响
控制器的本质是「跟踪误差 → 控制量」。如果轨迹曲率突变,误差会突然变大,控制器就会输出一个很大的控制量。结果就是震荡。
我曾经做过对比实验:
- 不平滑轨迹:横向误差 ±15cm,方向盘抖动频率 3Hz
- 平滑轨迹:横向误差 ±3cm,方向盘平稳
差距就是这么明显。
1.4.2 对执行器的影响
电机和转向系统有物理限制。频繁的急加速急减速,会导致:
- 电机过热
- 齿轮磨损
- 能耗增加(我记得有数据说,平滑轨迹能省电 15%-20%)
1.4.3 对乘客的影响
人体对横向加速度特别敏感。超过 0.3g 就会不舒服,超过 0.5g 就会恐慌。平滑轨迹能保证横向加速度在安全范围内。
避坑指南:我曾经犯过一个错误——只优化了路径的几何平滑,没考虑速度分配。结果路径是平滑了,但速度曲线有突变,乘客照样晕车。后来我学乖了,轨迹平滑必须同时考虑几何和速度。
1.5 知识体系总览
下面这张图,是我自己梳理的轨迹平滑知识体系。你看一眼,心里就有谱了:
1.6 小结
轨迹平滑这件事,说白了就是:
- 为什么做:让机器人能跑、跑得稳、跑得舒服
- 怎么做:保证曲率连续,控制曲率变化率
- 做到什么程度:G2连续是底线,曲率变化率要约束
我做了这么多年轨迹规划,最大的体会就是:平滑不是可选项,是必选项。你可以在规划阶段偷懒,但最终一定会在控制阶段加倍还回来。
一句话总结:不平滑的轨迹,是给控制器挖坑;平滑的轨迹,是给整个系统铺路。