3. 高精地图数据结构:矢量地图、栅格地图、车道线模型、路标模型、拓扑关系
做定位这么多年,我越来越觉得——高精地图就是自动驾驶的「骨架」。没有它,传感器再好也白搭。今天咱们聊聊高精地图里最核心的几种数据结构。说白了,就是地图在计算机里到底长什么样。
3.1 矢量地图 vs 栅格地图
先搞清楚两个基本概念:矢量地图和栅格地图。嗯,这俩的区别,我刚开始也迷糊过一阵子。
矢量地图,存的是点、线、面。比如车道中心线,就是一条折线,存一串坐标点。路沿石,就是一个多边形。优点是精度高、占用空间小。我习惯用矢量地图做匹配定位,因为可以直接算点到线的距离,效率很高。
栅格地图,存的是像素。每个格子存一个值,比如0表示可通行,1表示障碍物。优点是直观,适合做路径规划。但缺点也明显——分辨率越高,文件越大。我曾经在项目里试过5cm分辨率的栅格图,一张图就几百兆,加载慢得要命。
| 类型 | 存储方式 | 优点 | 缺点 | 典型用途 |
|---|---|---|---|---|
| 矢量地图 | 点、线、面 | 精度高、体积小 | 不适合表达连续场 | 匹配定位、车道级导航 |
| 栅格地图 | 像素网格 | 直观、适合规划 | 体积大、精度受限 | 障碍物检测、路径规划 |
3.2 车道线模型
车道线是高精地图里最基础的元素。你想想看,车要沿着车道走,定位就得知道车道线在哪儿。
常见的车道线模型有三种:
- 三次样条曲线:用几个控制点拟合出一条平滑曲线。精度高,但计算量大。
- 分段线性:用很多小线段连起来。简单粗暴,适合高速场景。
- 多项式模型:比如y = ax³ + bx² + cx + d。我比较常用这个,因为参数少,更新快。
举个例子,一段车道中心线的数据长这样:
{
"id": "lane_001",
"type": "center_line",
"points": [
[120.123456, 30.987654, 0.0],
[120.123789, 30.987321, 0.5],
[120.124123, 30.986987, 1.0]
],
"width": 3.5,
"speed_limit": 60
}
注意看,每个点除了经纬度,还有高度。为什么?因为路面不是平的。我在项目里遇到过,忽略高度差,定位结果直接偏了半米——这在车道级定位里是不能接受的。
3.3 路标模型
路标就是路上的标志物,比如交通牌、路灯杆、护栏。这些是定位的「锚点」。为什么?因为它们位置固定,传感器容易检测到。
路标模型通常包含:
- 位置:经纬度+高度
- 类型:杆状物、平面标志、立体标志
- 特征描述:颜色、形状、尺寸
- 置信度:这个路标是否可靠
我个人习惯把路标分成两类:
- 绝对路标:位置非常精确,比如交通牌。可以用来做绝对定位修正。
- 相对路标:位置精度一般,但相对关系稳定,比如路灯杆。适合做相对定位。
你想想看,如果路上有100个路灯杆,每个杆的位置误差10cm,但杆与杆之间的距离误差只有1cm。那用相对关系做匹配,反而更准。这个道理,我是在一次雨夜测试中悟出来的——当时GPS信号很差,全靠路标做相对定位才没跑偏。
3.4 拓扑关系
拓扑关系,说白了就是「路是怎么连起来的」。哪条车道能变到哪条车道,哪个路口能左转,这些信息都靠拓扑关系来表达。
常见的拓扑结构:
- 节点-边模型:路口是节点,路段是边。简单直观。
- 车道级拓扑:每条车道是一个节点,车道之间的连接是边。更精细,但数据量大。
- 分层拓扑:先粗粒度(路段级),再细粒度(车道级)。我比较推荐这种,因为可以按需加载。
举个例子,一个十字路口的拓扑关系:
{
"intersection_id": "cross_001",
"incoming_lanes": ["lane_A1", "lane_B1", "lane_C1", "lane_D1"],
"outgoing_lanes": ["lane_A2", "lane_B2", "lane_C2", "lane_D2"],
"connections": [
{"from": "lane_A1", "to": "lane_B2", "type": "left_turn"},
{"from": "lane_A1", "to": "lane_C2", "type": "straight"},
{"from": "lane_A1", "to": "lane_D2", "type": "right_turn"}
]
}
3.5 知识体系总览
下面这张图,是我自己总结的高精地图数据结构关系。你看一眼就能明白各个模块怎么配合。
从这张图你能看出来,矢量地图和栅格地图是两条线。矢量地图负责精细的结构信息,栅格地图负责环境感知。两者最终都服务于定位匹配算法。
好了,这一章的内容就这些。数据结构是基础中的基础,后面讲匹配算法的时候,你会反复用到这些概念。记住一句话:地图数据质量,决定了定位精度的上限。
可可精品资料库