0. 简介

定位模块是自动驾驶最核心的模块之一,定位又包括全局定位和局部定位,对于自动驾驶,其精度需要达到厘米级别。传统的AGV使用一类SLAM(simultaneous localization and mapping)的方法进行同时建图和定位,但是该方法实现代价高,难度大,难以应用到自动驾驶领域。自动驾驶车辆行驶速度快,距离远,环境复杂,使得SLAM的精度下降,同时远距离的行驶将导致实时构建的地图偏移过大。因此,如果在已有高精度的全局地图地图的情况下进行无人车的定位,将极大的简化该问题。

高精地图制作已经成为各大图商以及自动驾驶公司的付费服务内容,技术上相对保守,开放程度较低。

下图为Apollo的地图制作流程,从图中我们可以看到地图采集的第一步是点云拼接->底图的制成

点云地图的制作主要是把采集好的数据进行加工,我们采用激光雷达数据来进行点云地图的制作。因为激光雷达的扫描范围有限,因此我们需要逐帧把激光雷达的数据拼接起来,来获取整个街道的模型,这个过程也被称为点云注册。

目前有2种方法实现地图制作。

  1. Autoware NDT mapping. 采用开源社区Autoware提供的NDT mapping可以实现点云的拼接,从而得到整个街道的三维模型。

  2. 各种离线SLAM建图方法。

  • LOAM
  • Cartographer
  • hdl_graph_slam
  • blam
  • A-LOAM
  • LeGO-LOAM
  • LIO-mapping
  • interactive_slam

高精地图是一种语义地图,概括地说,就是利用SLAM/SFM等算法融合多种传感器数据,构建高精度的三维点云地图,在点云地图上或者是图像上,对所用到的元素进行分类和提取、之后对不同元素分别进行矢量化并构建路网与车道关联关系,最后进行质量校验,形成一套地图引擎来存储并支撑其他模块的需求。

1. 现有算法

下述为现有主流SLAM框架的兼容性问题

从论文中找到的相关原始对比数据来看R3LIVE的效果在目前来说在角度和距离的evo效果最好。

Faster-LIO PHC Fast LIO2 LIO-SAM R2LIVE R3LIVE RT LVI-SAM
RPE 0.33% 0.35% 0.43% —— —— ——
pre time 0.52ms 2.73ms 6.48ms —— —— ——
opt time 5.45ms 13.20 35.71ms —— —— ——
deg —— —— —— 0.16% 0.14% 1.01%
opt time(640) —— —— —— 30.2ms 29.4ms >36ms

此外可以去KITTI Odometry排行榜上查找排行前列的一些算法,并关注SLAM领域的一些最新的成果。注意我们需要构建的是三维点云地图,其以建图为主要目标,SLAM的实时性反而不是特别重要

2. 思考与分析

目前现有的方法很多都是基于去GPS的方法,而真实的地图建立都是需要依靠IMU,GPS和闭环策略的,相比而言是否存在视觉反而不是特别重要了。IMU可以大幅度避免抖动造成的底图干扰,而GPS和闭环可以最大程度确保建图的精度。

同时底图建议使用稠密地图,并且是拼接关键帧而成,需要有足够好的强度信息,这样使得纹理效果更明显,方便标注,所以我们排除了所有的单视觉的SLAM建图方法。

此外在图优化得到最终位姿之后,可以对关键帧进行地面去除,直接拼接地面地图,这样在标注俯视图时可以明显避免一些大楼树木的倒影点云的影响。所以从底图建立来说,使用LIO-SAM更符合我们真实的底图建立场景。

3. 自动标注步骤

自动标注涉及到的算法相当多,流程大致如下:

  1. 点云地图提取路面信息GroundExtraction(强度图、密度图、高程图)
  2. 路面信息部分,激光点云提取路沿、车道线、各种路标、停止线、人行横道等,非路面部分提取路牌,红绿灯,路灯,灯杆等。(各种多层强度阈值过滤方法)
  3. 视觉语义分割方法,提取各道路元素(在自己标注的数据集上可能表现更好)。将视觉分割得到的像素点反投影转换到世界(通过内参->外参参转换,需要激光雷达相机联合标定),去补充激光提取出来的不完整的部分
  4. 对每一类的线段部分分别进行分段直线/曲线拟合,有序保留端点和均匀的采样点,按位置进行排序。将有序的线段再次分类,比如左车道线,右车道线,中心线(可根据直线截距或者斜率阈值过滤),计算同一条车道线的各段线段的方向,连接端点,完成矢量化。
  5. 对每一类的多边形部分,比如路标,进行轮廓计算,从点云轮廓中提取出矩形或者箭头端点,按逆时针/顺时针存储(有内外圈的区分)。
  6. 用Lanelet2等地图框架,根据之前的各种点云分类,添加语义及车道的关联关系,构建地图索引和数据存储,生成高精地图数据文件,后面的博客有介绍Lanelet2用法。
  7. 用地图编辑软件打开地图并手工修正相应的轮廓,或者补充缺失部分。
  8. 人工校验道路的每一段是否存在质量问题。

4. 参考链接

https://blog.csdn.net/Yong_Qi2015/article/details/123080964

https://blog.csdn.net/JaydenQ/article/details/119957551

https://blog.csdn.net/qq_29462849/article/details/120300398

http://xchu.net/2020/05/14/40hdmap/