1. 速度规划基础:它在自动驾驶里到底干啥的?
大家好,我是你们的老朋友。今天咱们开始聊速度规划。
说实话,我刚开始接触自动驾驶那会儿,觉得速度规划不就是「踩油门、踩刹车」嘛,有啥好讲的?后来真正上手做项目,才发现这里面的坑,一个比一个深。
速度规划,说白了,就是决定车「什么时候该跑多快」。它不像路径规划那样告诉你「往左打还是往右打」,它管的是「油门踩多少、刹车踩多深」。你想想看,路径规划给你画了一条完美的弧线,结果速度没跟上,过弯时要么甩出去,要么慢得像蜗牛——这体验能好吗?
1.1 速度规划 vs 路径规划:到底有啥区别?
很多新手容易把这两个搞混。我简单解释一下:
- 路径规划:负责「走哪条路」。它输出一条几何曲线,比如从A点到B点,避开障碍物。它不管车速,只管空间位置。
- 速度规划:负责「怎么走这条路」。它给路径上的每个点分配一个速度值。比如直道可以开80km/h,弯道降到30km/h,前面有车就跟着减速。
我记得有一次,团队里路径规划的同学调了一版新算法,路径画得特别漂亮,结果一上路,乘客差点吐了——因为速度规划没跟上,过弯时速度没降下来。嗯,从那以后,我们两个组就经常坐在一起开会了。
一句话总结:路径规划是「地图」,速度规划是「驾驶风格」。两者缺一不可。
1.2 速度规划在自动驾驶中的角色
速度规划处于决策层和控制层之间。它接收上游的「行为决策」(比如:跟车、变道、停车),然后输出一条「速度曲线」给底层的执行器(油门、刹车、转向)。
我个人习惯把速度规划比作「翻译官」——它把高层的意图(「我要跟车」)翻译成底层能执行的指令(「当前车速60,前车减速到55,我跟着降到55」)。
这里有个关键点:速度规划必须实时。路径规划可以算个几百毫秒,但速度规划不行。为什么?因为车速变化太快了。你算慢了,车都撞上去了。我曾经在项目里遇到过,速度规划模块因为计算超时,导致跟车时刹车晚了半秒——虽然没出事,但那个急刹的感觉,至今难忘。
1.3 核心评价指标:舒适性、安全性、时效性
做速度规划,不能光顾着「能跑就行」。你得有三个指标来衡量:
| 指标 | 含义 | 我踩过的坑 |
|---|---|---|
| 舒适性 | 乘客不晕车、不紧张。通常用加速度、加加速度(jerk)来衡量。 | 有一次我为了省时间,把加速度限制设得太高,结果乘客反馈「像开过山车」。 |
| 安全性 | 不撞车、不压线、不违反交规。这是底线。 | 安全距离的设定,我建议留余量。别卡着极限算,传感器有延迟的。 |
| 时效性 | 能不能准时到达目的地。太慢了会被后车骂,太快了不安全。 | 我见过一个方案,为了追求绝对安全,全程限速30,结果被后车追尾了…… |
我的个人经验:这三个指标是互相矛盾的。你想更安全,就得牺牲点时效性;你想更舒适,加速度就不能太大,那跟车距离就得拉长。实际项目中,我一般会先保安全,再调舒适,最后看时效。优先级别搞反了。
1.4 避坑指南:新手最容易犯的错
我曾经犯过一个低级错误:在速度规划里只考虑了当前时刻的障碍物,没考虑预测。结果前车突然刹车,我的规划反应慢了半拍。嗯,从那以后,我所有的速度规划都会加上「预测模块」的输入——哪怕预测不准,也比没有强。
还有一点:别把速度规划做成「分段常数」。什么意思?就是一段路一个固定速度,然后突然跳到另一个速度。这种规划,乘客会感觉像在坐「跳楼机」。正确的做法是:用平滑的曲线过渡,比如S型曲线、梯形速度曲线。
警告:速度规划的输出一定要经过「限幅」处理。别让加速度超过车辆物理极限(比如0.3g以上乘客就会明显不适)。也别让jerk(加加速度)太大——我一般控制在2m/s³以内。
1.5 一个简单的速度规划示例
咱们来看一个最简单的场景:前方有车,我要跟车。假设前车速度是50km/h,我当前车速是60km/h。我需要减速到50并保持安全距离。
伪代码大概长这样:
// 输入:前车速度 v_target = 50 km/h
// 当前车速 v_ego = 60 km/h
// 安全距离 d_safe = 20 m
// 当前距离 d_current = 30 m
if (d_current < d_safe) {
// 太近了,需要减速
v_desired = v_target - 5; // 比前车慢一点,拉开距离
} else {
// 距离够,可以保持或加速到目标速度
v_desired = min(v_target, v_ego + 2); // 温和加速
}
// 然后对 v_desired 做平滑处理,限制加速度和jerk
v_final = smooth(v_desired, max_accel=2.0, max_jerk=1.5);
你看,就这么几行逻辑,但实际工程里要考虑的东西多得多——比如传感器延迟、通信延迟、路面坡度、轮胎抓地力……
好了,这一章咱们把速度规划的基础概念讲清楚了。下一章我会深入讲「跟车策略」的具体设计,包括PID控制、模型预测控制(MPC)这些实战内容。到时候我会拿一个我实际做过的项目来拆解,保证干货满满。
记住一句话:速度规划做得好,乘客下车会夸你「这车开得真稳」;做得不好,人家下车就吐了。咱们的目标,是让乘客忘了自己在坐自动驾驶车。