← 自动驾驶主线

定位、地图与导航

回答我在哪里,以及接下来该往哪里走

约 9 分钟阅读

导航信息不是抽象概念,它就是你手机屏幕上那行“85 米后通过路口”。问题是怎么把这行字变成机器能执行的东西。


先看一眼你每天都在看的东西

先看两张手机导航截图。导航信息,就是屏幕上的这些东西:

85 米 通过路口

  • 一排车道级箭头:左转、左转、直行、直行、直行、右转,推荐车道高亮
  • 当前车速 4 km/h
  • 红绿灯倒计时 12 秒

绿波车速 40~60

  • 绿波路段,前方还剩 4 个红绿灯
  • 车速保持在这个区间,就能一路赶上绿灯

距离、路口动作、推荐车道、车速和绿波建议车速、信号灯状态,都在这里。其中“绿波车速”值得多看一眼:这是感知永远拿不到的信息。前方四个红绿灯怎么配时,不在任何相机的视野里,只能联网拿(云端或路侧 V2X)。超视距、非视觉,这是导航在整个系统里不可替代的原因;后面讲端到端时,“导航信息怎么喂给模型”会成为一个专门的课题,也是因为这个。

这一章先把三个常被混为一谈的东西分开:

  • 定位回答“我在哪里”;
  • 地图描述“道路怎样连接”;
  • 导航回答“去目的地该走哪条连接”。

然后看它们在有图和无图两种方案下各自怎么变。


导航不是画一条线:五项职责

手机导航上的那条蓝线,放到有高精地图的量产系统里,是一个承担五项职责的模块:

  1. 车道级路由:在车道拓扑图上,搜一条从当前车道到目标车道的车道序列。不是“走哪条路”,而是“走哪条车道”,输出形如 [L_1023, L_1024, L_2051] 的车道链。
  2. 机动点标注:显式标出“120 米后左转、目标车道 L_2051”这类关键动作,让下游提前准备变道、减速。
  3. 参考线生成:把车道中心线拼成几何参考,附带曲率、坡度、限速。这里有一句必须记住的话:参考线 ≠ 轨迹。参考线只是几何基准,没有时间维度,也没有规划好的速度(附带的限速只是约束);规划器要在它周围做优化,不能拿它直接控车。
  4. 约束与优先级:优先车道、禁止车道、可以变道的区间、到目标车道的剩余距离。
  5. 监控与重规划:导航是常驻运行的模块,不是算一次就完事。它持续监控有没有偏航、有没有错过路口、目标变道还来不来得及,再决定局部修正还是全局重算。“错过路口”和“变道来不及”,正是用户最能直接感到的导航失败。

放到我们的路口,导航交付的是:沿支路行驶,80 米后右转,汇入主路的目标车道。定位负责把车放进正确的支路坐标,车道级地图给出停止线、路口连接和主路的车道拓扑。


地图分几级:从 5–10 米到 50 厘米

“地图”在行业里不是一个东西,而是从粗到精的一个谱系。按地图数据库分,一般是四级:

SD MapADAS MapCoarse MapHD Map
用途普通导航L2 辅助驾驶L2++ 领航辅助驾驶L4 自动驾驶 / L2++
元素数目约 10 种约 15 种10–25 种60–100 种
精度5–10 m同 SD绝对 1–5 m,相对 0.5–1 m绝对 50 cm,相对 10 cm 内
谁来更新众源车、测绘车统一采集众源车、测绘车,加上量产车统一采集

这张表有三条值得记住:

  1. 精度差 10–20 倍:SD 是 5–10 米,HD 是 50 厘米。
  2. 元素从约 10 种涨到 60–100 种:高精地图不只是更准,要画、要维护的东西也多了好几倍。
  3. 只有 Coarse Map 让量产车参与发现道路变化、更新地图:这意味着车卖得越多,地图保鲜的能力就越强。

中间还有一对常见的导航数据等级:SD 与 SDPro。逐项对比下来,SDPro 比 SD 多的全是路口内拓扑和车道级信息:车道组、精确的车道数、车道类型、车道联通关系,以及人行横道、停止线、交通灯的几何和它们与车道的绑定关系。上不上 SDPro,本质是要不要这些车道级、路口内的信息。

HD 地图的成本账(建图误差要求不超过 ±30 厘米、制图自动化率要到 95% 以上、还要保持新鲜)第 3 章细讲。±30 厘米和上表的精度出自不同资料:上表分开给了绝对 50 厘米、相对 10 厘米;±30 厘米没说是绝对还是相对误差,没法和上表逐项对照,只能看出和绝对 50 厘米同在几十厘米量级。这里只补一个机理:高精地图真正的价值是先验。弯道曲率、前方路口结构、被遮挡的标志,车还没看到就已经知道,感知的负担也跟着降下来;天气差、感知退化时,这层先验尤其值钱。放弃它,就得有东西补上。


无图方案:三个必须重新回答的问题

“无图”不是完全不用图,而是把依赖拆开:

  • 全局导航继续用低精地图:从 A 到 B,总得有路网;
  • 定位和局部道路结构不再依赖高精地图:改由车上的传感器实时解决。

写成一个等式:高精地图 → 实时局部地图(BEV 静态感知)+ SD 导航地图。有图和无图的差别,可以对照着看:

高精地图做锚

  • 定位是绝对的:算自车在世界坐标系里的位置
  • 参考线来自地图里固定的车道中心线
  • 车道边界是硬约束,地图说在哪就在哪
  • 稳定性高,道路拓扑全局一致

车端实时解决

  • 定位是相对的:只算相对 k 帧之前移动了多少
  • 参考线来自感知生成的车道中心线
  • 车道边界是带噪声的估计,只能当软约束
  • 对感知噪声敏感,拓扑只要局部连续

于是有三个问题必须重新回答。

定位怎么算?无图时靠 IMU、轮速计和视觉或激光里程计融合,只算相对位姿;再把当前感知到的道路结构,和过去一段时间里感知到的对齐,来修正漂移。修正时有一条实用经验:yaw(航向角)最关键,航向误差会随距离线性放大。评估一套无图定位稳不稳,先问 yaw 漂移。

道路结构从哪来?来自实时感知:车道线、路沿、中心线、可行驶区域,再经后处理拼出拓扑关系。第 3 章的在线建图就是干这个的。导航也要跟着改:先把感知到的车道和 SD 地图里的车道匹配上,再把导航的路由和动作语义“绑”到感知车道上,规划器按感知车道决策。

约束怎么变?这是最本质的一条。有图时车道边界是硬约束,不可逾越;无图时边界来自感知,是带噪声的估计,只能当软约束用。这直接解释了一个常见现象:为什么无图方案的轨迹更容易“抖”——约束本身在抖。


有一类无图的端到端方案是两段式的:第一段先输出结构化结果,第二段的规划器再读这些结果(第 7 章细讲)。这类方案里还有一个专门的构件,叫 Navigation Path(导航路径,常简称 Navi-path):第一段输入导航,输出它;第二段再以它为输入,生成轨迹。它结合车流和导航信息,输出一条宏观的行驶参考线,解决“全局车道级方向和车道选择”。在小路和非结构化道路上,它能发挥更稳定、更长时的作用,但不能直接拿来控车。

它有两类问题要当心:

  • 把它当唯一的轨迹来源:Navi-path 是导航决策的确定性表达,不是行为生成器。它只说“该往哪走”,不说“怎么走过去”。下游如果只接它这一路,就会和实际的行为决策打架。
  • 忘了它自己也是模型预测的:它会抖、会偏航、会扭曲,左右转和小弯的走法可能不像人;上游的 SD 路由一跳变,它也跟着跳。

什么时候用它,判断标准很清楚:它的价值来自用人驾轨迹做监督,所以在“没有几何可依”或“需要像人”的场景有用。

场景用不用原因
路口择道,以及非路口的复杂择道用感知看不全,无图时只能靠 SD 行点(导航沿路线给的一串参考点),而行点质量差;它学过人怎么开,能帮着提前选对出口
地下停车场用没有稳定的车道几何,只剩“该往哪走”的问题,这是它的主场
估算通行概率用真值是人驾数据,理论上能让算出来的通行概率更像人
常规路段择道不用感知本来就能搞定,它要做好反而比车道线还难

回到路口:地图过期的那半个车道

现在把本章的交付物放回路口:定位把车放进支路的车道坐标,置信范围明确;车道级地图给出“前方右转、汇入主路”的路由、机动点和入口的车道结构;参考线沿目标车道的中心线展开。

然后第一个难题来了:路口在施工,一排锥桶把入口往左挤了半个车道,地图还停留在施工之前。这就是“鲜度”问题。系统必须把地图先验和现场观测对齐,以现场为准修正入口位置,不能把历史地图当成永远正确的真值。

但“以现场为准”有个前提:现场得先被看见。锥桶到底在哪、主路上的车怎么分布、有没有车正往你的目标车道切,这些都不在地图和导航里。下一章,从传感器观测里把眼前的场景还原出来。


本章速查

概念一句话
定位 / 地图 / 导航我在哪 / 道路怎么连 / 该走哪条连接,三件事别混
导航五职责车道级路由、机动点标注、参考线生成、约束下发、常驻监控与重规划
参考线 ≠ 轨迹参考线只有几何,没有时间维度和规划好的速度,是优化基准,不能直接控车
四级地图SD(5–10 m,约 10 种要素)→ ADAS → Coarse(1–5 m,唯一让量产车参与更新)→ HD(50 cm,60–100 种)
SD vs SDProSDPro 多出来的是路口内拓扑和车道级信息:车道组、车道数、类型、联通关系、灯线绑定
无图的本质全局导航留低精地图;定位从绝对变相对(yaw 漂移最关键);车道边界从硬约束变软约束
Navi-path导航决策的确定性表达,不是行为生成器;路口择道、停车场有用,常规路段不如车道线
鲜度问题地图是历史,现场是现在;先对齐、按置信度取舍,地图明显过期(如施工改道)时以现场为准