一、速度约束基础
1.1 速度约束的定义
速度约束,说白了就是给自动驾驶车辆划定一个速度的「天花板」和「地板」。它不是一个单一数值,而是一组动态变化的边界条件。
我习惯把它理解成三部分:
- 上限约束:车辆不能超过的最高速度。比如高速上的120km/h限速。
- 下限约束:某些场景下的最低速度要求。比如高速上不能低于60km/h。
- 动态约束:根据路况、曲率、障碍物实时调整的速度边界。
用数学语言表达就是:
v_min(t) ≤ v(t) ≤ v_max(t)
其中:
v(t) —— 当前时刻的车辆速度
v_min(t) —— 当前时刻的最小允许速度
v_max(t) —— 当前时刻的最大允许速度
嗯,这里要注意,v_min和v_max都是时间的函数。它们会随着环境变化而实时更新。
1.2 物理意义
速度约束不是凭空拍脑袋定的。它背后有扎实的物理逻辑。
先说上限为什么存在。
你想想看,一辆车在弯道上跑,速度太快会怎么样?离心力超过轮胎抓地力,直接推头或者甩尾。这个临界速度就是物理上限。
公式长这样:
v_max_curve = √(μ · g · R)
其中:
μ —— 路面附着系数
g —— 重力加速度
R —— 弯道曲率半径
我在项目中遇到过一件事。有一次测试车在匝道上,地图给的限速是40km/h,但实际路面湿滑,μ值只有0.3。按公式算下来,安全速度只有25km/h左右。幸亏系统提前识别了路面状态,把速度压下来了。要是完全依赖地图限速,后果不堪设想。
再说下限为什么存在。
高速上开太慢反而是危险的。后车以120km/h的速度接近你,你只有60km/h,相对速度差太大,追尾风险剧增。所以很多国家规定高速最低速度不低于60km/h。
还有一个容易被忽略的点——传感器的工作下限。我记得有一次,激光雷达在低于5km/h时点云质量明显下降,导致障碍物检测出现漏检。从那以后,我在做速度规划时都会给传感器留一个「安全余量」。
核心物理量总结:
| 约束类型 | 物理依据 | 典型场景 |
|---|---|---|
| 弯道速度上限 | 向心力 ≤ 摩擦力 | 匝道、急弯 |
| 制动距离上限 | 制动距离 ≤ 可视距离 | 跟车、路口 |
| 最低速度下限 | 相对速度差安全 | 高速主路 |
| 传感器工作下限 | 传感器性能边界 | 低速泊车、拥堵 |
1.3 在自动驾驶中的重要性
速度约束不是可有可无的「软约束」。它是安全的第一道防线。
第一,安全兜底。
没有速度约束,规划层可能给出一个理论上可行但实际危险的速度。比如前方有静止障碍物,理论制动距离50米,但系统只留了40米。速度约束会强制把速度降到安全范围内。
第二,舒适性保障。
我做过一个实验:同样的弯道,用60km/h过和用45km/h过,乘客的体感完全不一样。60km/h时乘客会明显侧倾,45km/h时几乎无感。速度约束里加入舒适性因子,能大幅提升乘坐体验。
第三,系统冗余。
你想想看,感知模块可能漏检一个障碍物,定位模块可能漂移几米。但速度约束是独立于这些模块的「硬边界」。即使其他模块都出问题,速度约束还在那里兜底。
我的个人经验:
在做速度约束设计时,我建议把约束分为三个层级:
- 硬约束:物理极限,不可突破。比如轮胎抓地力极限。
- 软约束:舒适性边界,可以适当放宽。比如加速度变化率。
- 法规约束:交通规则,必须遵守。比如限速标志。
三层约束取交集,就是最终的速度可行域。
1.4 知识体系框架
下面这张图是我自己梳理的速度约束知识体系,你可以参考一下:
这张图展示了我做速度约束设计时的完整思路。从三个来源出发,提取具体参数,融合成速度可行域,最后交给下游模块使用。
避坑指南:
我曾经犯过一个错误——把速度约束设计得太「死」。所有场景都用同一个公式,结果在特殊路况下频繁触发限速,导致车辆表现得很「怂」。后来我改成自适应约束,根据实时环境动态调整参数,效果好了很多。
所以我的建议是:速度约束一定要有自适应能力。不能一套参数打天下。
1.5 小结
速度约束是自动驾驶系统里最基础也最关键的模块之一。它不只是一个数值范围,而是物理、法规、舒适性三方面因素的综合体现。
我个人习惯在设计初期就把速度约束的框架搭好,后面再逐步细化。这样能避免很多后期返工的问题。
记住一句话:速度约束不是限制,而是保护。它保护的是车辆、乘客,还有路上的每一个人。
可可精品资料库