1、课程导论:为什么定位与规划需要协同?自动驾驶系统的整体架构概览。

大家好,我是你们这门课的主讲。在自动驾驶这个行当里摸爬滚打了十来年,我见过太多「定位做定位的,规划做规划的」这种各自为战的场景。结果呢?车跑起来不是这里抖一下,就是那里急刹,体验极差。

今天这第一讲,咱们不急着写代码。先聊聊一个根本问题:定位和规划,凭什么要坐在一起开会?

1.1 一个让我印象深刻的教训

我记得几年前,我参与过一个高速领航项目。定位团队用了最顶级的组合导航,RTK+IMU+轮速,精度号称厘米级。规划团队呢,也用了很漂亮的优化算法,轨迹平滑得像丝绸一样。

结果第一次路测,车在高架桥上正常行驶,突然猛打了一把方向,差点撞上护栏。

排查了一整天,原因其实很简单:定位模块在高架桥下出现了短暂的信号遮挡,输出的位置跳了 30 厘米。规划模块完全不知道这个跳变,它以为车真的偏了,于是拼命把车往回拉。你看,两个模块各自都觉得自己没毛病,但合在一起就出了大问题。

这就是典型的「信息孤岛」带来的灾难。

核心观点:定位模块输出的不是「真理」,而是带有不确定性的估计。规划模块如果无视这种不确定性,就像蒙着眼睛开车。

1.2 自动驾驶系统架构速览

在深入协同之前,咱们得先对齐一下整个系统的地图。我把自动驾驶系统拆成四个大的功能域,你想想看,是不是这么回事:

功能域 核心任务 典型输出
感知 看懂世界:检测障碍物、车道线、交通标志 障碍物列表、语义地图
定位 回答「我在哪」:融合GPS、IMU、视觉、激光 位姿、速度、协方差矩阵
决策规划 决定「怎么走」:行为决策、路径规划、速度规划 轨迹点序列、加速度指令
控制 执行「踩多少」:转向、油门、刹车 方向盘转角、扭矩请求

这里面,定位和规划的关系最微妙。感知看错了,顶多是漏检一个障碍物;但定位和规划配合不好,车就会「人格分裂」——明明在直道上,却以为自己在弯道里。

1.3 为什么必须协同?三个核心矛盾

我总结了一下,定位和规划之间主要有三个绕不开的矛盾。说白了,不解决这些矛盾,你的车永远开不顺畅。

  1. 时间不同步
    定位模块通常 10-20ms 输出一次位姿,规划模块可能 100ms 才重新计算一次轨迹。这中间的延迟怎么补偿?我曾经见过一个项目,因为时间戳没对齐,规划用的位置比实际位置晚了 200ms,结果车在转弯时总是「慢半拍」。

  2. 坐标系不统一
    定位喜欢用经纬度(WGS84)或 UTM 坐标系,规划习惯用车身坐标系(Frenet 或笛卡尔)。每次坐标转换都会引入误差,尤其是在大曲率弯道上。嗯,这里要注意,转换矩阵的精度直接影响规划轨迹的贴合度。

  3. 不确定性传递
    这是最容易被忽视的一点。定位模块输出的协方差矩阵,规划模块往往直接扔掉了。你想想看,如果定位告诉你「我现在可能偏左也可能偏右,误差 50cm」,规划还敢贴着车道线走吗?

避坑指南:我曾经在调试一个泊车功能时,发现车辆反复修正方向。查到最后,是定位模块的协方差矩阵在静止时没有收敛,规划模块误以为车辆在晃动,于是不断输出修正指令。记住:定位的不确定性,必须作为规划的约束条件。

1.4 协同调优的核心逻辑

那么,协同到底怎么搞?我习惯用一张图来说明整个逻辑链条。你看下面这个流程:

定位与规划协同调优核心逻辑 定位模块 GPS + IMU + 视觉融合 输出:位姿 + 协方差 x, y, yaw, P矩阵 协同调优层 时间对齐 · 坐标系转换 不确定性传递 · 反馈修正 规划模块 路径规划 + 速度规划 输出:轨迹点序列 s, d, v, a 反馈回路:规划结果反哺定位置信度 💡 协同的关键动作 1. 定位模块不仅要发位姿,还要发协方差矩阵(不确定性)。 2. 规划模块在生成轨迹时,把协方差作为约束,留出安全余量。 3. 规划输出的期望轨迹,可以反馈给定位做运动预测修正。

你看,协同不是简单的「定位发数据,规划收数据」。它需要形成一个闭环:定位告诉规划「我在哪,我有多不确定」,规划根据这个信息生成轨迹,同时把期望的运动状态反馈给定位,帮助定位做更准的预测。

1.5 这门课你会学到什么?

说白了,这门课就是手把手带你打通定位和规划之间的「任督二脉」。我不会只讲理论,也不会只给代码。我会把我在实际项目中踩过的坑、填过的洞,一个一个掰开揉碎了讲给你听。

  • 定位模块的「潜台词」:如何读懂协方差矩阵?如何评估定位质量?
  • 规划模块的「软肋」:轨迹优化时,哪些参数对定位误差最敏感?
  • 协同调优的「实战套路」:从时间戳对齐到坐标系统一,从不确定性传递到反馈修正。

我的建议:学这门课之前,你最好对卡尔曼滤波和路径规划有个基本概念。不过别担心,每涉及一个关键算法,我都会先花几分钟把核心思想讲清楚。咱们的目标是「会用、会调、会优化」,不是「推导公式大赛」。