高精地图HD-Map

1. 介绍

高精地图相对于传统地图精度更高(厘米级), 而且增加了路的几何形状、路标、交通信号灯等信息[1].
不同的自动驾驶阶段对地图也有着不同的要求:

  • L0只需要导航地图(是一种有向图结构)
  • L1-L2不需要高精地图
  • L3及以上需要高精地图

2. 高精地图的采集

高精地图的数据由各种传感器采集而来, 它们各自有着自己的优势和缺陷.

2.1 利用传感器采集数据

GPS

通过获取四颗或以上卫星的位置并计算出GPS接收设备与每颗卫星的距离, 利用三边测量法推算出自己的位置.

GPS接收机存储有星历, 星历存储了每颗卫星在各个时刻的位置.

在城市环境下, 由于高大建筑物的阻隔, GPS多路径反射(Multi-Path)的问题较为明显, 导致GPS精度降低(分米级或者米级的误差).

IMU

IMU(惯性传感器) = 3轴加速度 + 3轴陀螺仪.

从加速度二次积分得到速度, 这个过程会有较大的累计误差.

轮速计

通过轮测距计(一般安装在汽车前轮)记录左轮和右轮的总转数从而计算汽车行驶的距离, 地面材质(水泥地/冰面)对计算结果影响较大.

LiDAR

向目标物体发射一束激光, 根据接收-反射时间间隔来计算目标物体的实际距离.

结合距离以及激光发射的角度, 通过几何变换计算出物体的位置信息.

LiDAR系统以下由三个部分组成:

  • 激光发射器, 发射波长为600mm~1000mm的激光射线
  • 扫描与光学部件, 收集反射点距离、时间和水平角度
  • 感光部件, 检测返回光的强度

    检测到的每个点都包含了三维空间坐标信息和光强信息.

2.2 计算模型

下图展示了高精地图的制作流程. 首先IMU及车轮测距器给出自车的位置预测, 由于精度的原因位置可能有一定的偏差. 为了纠正这些偏差, 可以利用GPS和激光雷达进行传感器融合生成新的位置. 最后将新的位置和激光雷达扫描出的点云数据一起加入地图中.


简化的高精地图计算模型:

minimize J = Q(z - h(m, x))

其中, Q代表优化方程, z代表激光雷达扫描出的点, h为方程预测最新扫描点的位置, m为扫描到的点在地图中的位置, x代表无人车当前的位置. 该方程的目的是通过最小化J求出测量点在地图中的准确位置. 在计算模型中, m与x开始都是未知的, 先通过多传感器融合求x, 再求出测量点在地图中的准确位置m.

3. 高精地图的格式规范

3.1 NDS

Navigation Data Standard(NDS)目标是发展一种二进制的标准格式来满足不同系统间交换数据的需求[2].

该格式文档较多, 考虑全面. 存储导航的技术数据、POI(Position of Interest, 比如地图上商家店铺就可以是一个兴趣点)等数据.

采用分块(Building Blocks), 以省/市/区为单位进行更新.

3.2 OpenDrive

除了NDS, 还有一种常见的高精地图格式: ASAM OpenDRIVE, 百度Apollo的高精地图就是基于OpenDRIVE修改而来.

下图展现了OpenDrive中路口的表示方法, 其中蓝线代表Refline, 红线代表虚拟路, junction代表路口[3].


道路中间的Lane是没有宽度的, 编号为0, 用作Refline. 道路两侧的Lane按顺序编号, 左侧为正、右侧为负


单向车道时, reference line不在道路的中间.


OpenDirve的位置关系都是基于Refline偏移量来计算的.

结束语

本期讲解了自动驾驶中高精地图的一些基本知识, 下篇文章将会整理业界的高精地图产品比如Here和Mobile eye, 同时细致分析百度Apollo中的高精地图表示方法, 敬请期待!
欢迎点赞、评论, 大家的支持是我更新的最大动力!

参考文献

[1] High-definition map - Wiki

[2] Navigation Data Standard - Wiki

[3] ASAM OpenDRIVE User Guide