1、课程导论:为什么定位与规划需要协同?自动驾驶系统的整体架构概览。
大家好,我是你们这门课的主讲。在自动驾驶这个行当里摸爬滚打了十来年,我见过太多「定位做定位的,规划做规划的」这种各自为战的场景。结果呢?车跑起来不是这里抖一下,就是那里急刹,体验极差。
今天这第一讲,咱们不急着写代码。先聊聊一个根本问题:定位和规划,凭什么要坐在一起开会?
1.1 一个让我印象深刻的教训
我记得几年前,我参与过一个高速领航项目。定位团队用了最顶级的组合导航,RTK+IMU+轮速,精度号称厘米级。规划团队呢,也用了很漂亮的优化算法,轨迹平滑得像丝绸一样。
结果第一次路测,车在高架桥上正常行驶,突然猛打了一把方向,差点撞上护栏。
排查了一整天,原因其实很简单:定位模块在高架桥下出现了短暂的信号遮挡,输出的位置跳了 30 厘米。规划模块完全不知道这个跳变,它以为车真的偏了,于是拼命把车往回拉。你看,两个模块各自都觉得自己没毛病,但合在一起就出了大问题。
这就是典型的「信息孤岛」带来的灾难。
核心观点:定位模块输出的不是「真理」,而是带有不确定性的估计。规划模块如果无视这种不确定性,就像蒙着眼睛开车。
1.2 自动驾驶系统架构速览
在深入协同之前,咱们得先对齐一下整个系统的地图。我把自动驾驶系统拆成四个大的功能域,你想想看,是不是这么回事:
| 功能域 | 核心任务 | 典型输出 |
|---|---|---|
| 感知 | 看懂世界:检测障碍物、车道线、交通标志 | 障碍物列表、语义地图 |
| 定位 | 回答「我在哪」:融合GPS、IMU、视觉、激光 | 位姿、速度、协方差矩阵 |
| 决策规划 | 决定「怎么走」:行为决策、路径规划、速度规划 | 轨迹点序列、加速度指令 |
| 控制 | 执行「踩多少」:转向、油门、刹车 | 方向盘转角、扭矩请求 |
这里面,定位和规划的关系最微妙。感知看错了,顶多是漏检一个障碍物;但定位和规划配合不好,车就会「人格分裂」——明明在直道上,却以为自己在弯道里。
1.3 为什么必须协同?三个核心矛盾
我总结了一下,定位和规划之间主要有三个绕不开的矛盾。说白了,不解决这些矛盾,你的车永远开不顺畅。
-
时间不同步
定位模块通常 10-20ms 输出一次位姿,规划模块可能 100ms 才重新计算一次轨迹。这中间的延迟怎么补偿?我曾经见过一个项目,因为时间戳没对齐,规划用的位置比实际位置晚了 200ms,结果车在转弯时总是「慢半拍」。 -
坐标系不统一
定位喜欢用经纬度(WGS84)或 UTM 坐标系,规划习惯用车身坐标系(Frenet 或笛卡尔)。每次坐标转换都会引入误差,尤其是在大曲率弯道上。嗯,这里要注意,转换矩阵的精度直接影响规划轨迹的贴合度。 -
不确定性传递
这是最容易被忽视的一点。定位模块输出的协方差矩阵,规划模块往往直接扔掉了。你想想看,如果定位告诉你「我现在可能偏左也可能偏右,误差 50cm」,规划还敢贴着车道线走吗?
避坑指南:我曾经在调试一个泊车功能时,发现车辆反复修正方向。查到最后,是定位模块的协方差矩阵在静止时没有收敛,规划模块误以为车辆在晃动,于是不断输出修正指令。记住:定位的不确定性,必须作为规划的约束条件。
1.4 协同调优的核心逻辑
那么,协同到底怎么搞?我习惯用一张图来说明整个逻辑链条。你看下面这个流程:
你看,协同不是简单的「定位发数据,规划收数据」。它需要形成一个闭环:定位告诉规划「我在哪,我有多不确定」,规划根据这个信息生成轨迹,同时把期望的运动状态反馈给定位,帮助定位做更准的预测。
1.5 这门课你会学到什么?
说白了,这门课就是手把手带你打通定位和规划之间的「任督二脉」。我不会只讲理论,也不会只给代码。我会把我在实际项目中踩过的坑、填过的洞,一个一个掰开揉碎了讲给你听。
- 定位模块的「潜台词」:如何读懂协方差矩阵?如何评估定位质量?
- 规划模块的「软肋」:轨迹优化时,哪些参数对定位误差最敏感?
- 协同调优的「实战套路」:从时间戳对齐到坐标系统一,从不确定性传递到反馈修正。
我的建议:学这门课之前,你最好对卡尔曼滤波和路径规划有个基本概念。不过别担心,每涉及一个关键算法,我都会先花几分钟把核心思想讲清楚。咱们的目标是「会用、会调、会优化」,不是「推导公式大赛」。