apollo_logo
2
0

高精度地图制作

前面介绍了为什么需要高精度地图,那么我们如何制作一张高精度地图呢?

制作一张高精度地图可以大概分为3个过程:采集、加工、转换。

采集

如何采集地图?

我们需要需要一些传感器来获取数据,下面是需要的传感器列表:

lidar、摄像头、gnss、imu

apollo传感器示例lidar主要是来采集点云数据,因为激光雷达可以精确的反应出位置信息,所以激光雷达可以知道路面的宽度,红绿灯的高度,以及一些其他的信息,当然现在也有厂家基于视觉SLAM(纯摄像头测距)来制作地图的,有兴趣的也可以看下相关介绍。

摄像头主要是来采集一些路面的标志,车道线等,因为图像的像素信息更多,而位置信息不太精确,所以采用摄像头来识别车道线,路面的一些标志等。

gnss记录了车辆的位置信息,记录了当前采集点的坐标。

imu用来捕获车辆的角度和加速度信息,用来校正车辆的位置和角度。

需要的操作系统和软件:

  1. ubuntu 16.04
  2. apollo

用apollo的录制bag功能,可以把传感器的数据都录制下来,提供生成高精地图的原始数据。其实在录制数据之前,需要对上面所说的传感器进行校准工作,这部分的工作比较专业,涉及到坐标系转换,也涉及到一些传感器的知识,所以对非专业人士来说不是那么好理解。或者开发一系列工具来实现校准。

接下来就是采集了,采集过程中需要多次采集来保证采集的数据比较完整,比如你在路口的时候,从不同的角度开车过去看到的建筑物的轮廓是不一样的,这些轮廓就是激光雷达扫描到的数据。所以遇到路口,或者多车道的情况,尽可能的多采集几次,才能收集到比较完整的地图信息。并且速度不要太快,apollo上的介绍是不超过60km/h(这里没有特别说明会出现什么问题)。

以下是我的一点个人想法:

上面的采集方案依赖很多,首先需要一系列的硬件,其次是需要apollo,并且熟悉apollo的启动流程,最后还需要传感器校准的知识。实际上采集的过程中我们不需要自动驾驶。可以开发一个轻量级的采集方案,硬件全部集中到一个盒子中,软件只需要提供录制bag包的能力就可以了,这点ros都可以做到,最后校准由于硬件都是一体化的盒子,只需要校准一个传感器就可以把其中所有传感器的坐标系确定。相对于上面的方案来说更加轻量,可能只需要邮寄一套设备就可以开始录制地图了。

here的地图是分层的,比如路面是很少更新的,而路灯,车道标识,或者红绿灯可能会更换,所以路面信息可能需要激光雷达去采集一次,而路灯,车道标识,红绿灯等可以通过摄像头的方案来更新,因为高精度地图需要实时更新,上面的方案可能更加适合一些地图更新的场景。

如何加工上述地图?

首先需要生成一张原始的地图,这里我们采用点云生成原始的地图,因为点云的距离位置信息比较准确,因为点云数据是0.1s采集一帧,下面我们可以做一个计算。如果车速是100km/h,对应27.8m/s。即0.1s车行驶的距离是2.78m,而激光雷达的扫描距离大概是150m,所以前后2帧大部分地方是重合的。因为数据是一帧一帧的,我们需要把上面的说的每一帧进行合并,生成一张完整的地图,有点类似全景照片拼接,这样我们就可以得到一张原始的采集路段的地图。这里用到了点云的配准技术,有2种算法ICPNDT,基于上面的算法,可以把点云的姿态进行变换并且融合。具体的介绍可以参考

红色和绿色的点云配准

上图红色和绿色的部分是从不同方位扫描得到的结果,最后是配准融合之后的结果,可以把地球想象成上图这个模型放大了1000万倍的效果,我们的车相当于一个扫描设备,把每次扫描的结果拼接起来,就制作好了一张点云地图。

点云拼接好了之后,我们就需要在道路上标出路沿,车道线,红绿灯,路口,一些交通标识等。大部分的工作都可以用深度学习结合图像的方法去解决,查找出上面的一些信息并且标识出来,目前有些场景还是需要人工标识出来,比如路口停止线和红绿灯的关系,如果一些特殊场景的车道线等,需要人工去做一些校正。

上面的过程可以说是一个简易的制图过程。实际上这里还需要讲下高精地图的格式,因为如果没有一个统一的格式,高精度地图是没有太多意义的。我们可以把高精度地图分为三层。

  1. 地图图层地图图层主要是道路的信息,比如道路的路沿,车道线,路口信息,主要是道路的一些基本信息。
  2. 定位图层定位图层主要是具备独特的目标或特征,比如红绿灯,交通标志,道路的点云数据等。
  3. 动态图层动态图层主要是一些实时路况,修路或者封路等需要实时推送或者更新的数据。

通过下面的加工流程:

点云地图校准 -> 地图标注加工 -> 高精度地图

这样就生成了一张高精度地图,当然加工过程中首要的目标是提高效率和质量,尽量的采用算法自动化处理会很大的提高效率,这可能是后面地图厂家的核心竞争力。因为地图需要实时更新,谁的效率更高,谁的图就越新,用的人越多,之后的数据也越完善。

转换

转换主要是得到一个通用的自动驾驶系统可以使用的高精度地图。

上面的高精地图格式可能还是原始的数据格式,需要转换为apollo中高精度地图的格式,apollo中高精度地图采用了opendrive的格式,并且做了改进,总之这是一个通用的标准,这个很重要,否则每个厂家的数据如果不兼容,会导致很大的问题,你需要开发一系列的转换工具,去处理不同地图的差异,并且不同的自动驾驶系统和不同的地图厂家采用的方式不一样,会带来很多兼容性问题。


原创声明,本文由作者授权发布于Apollo开发者社区,未经许可,不得转载。
发表评论已发表 0 条评论
登录后可评论,请前往 登录
暂无评论~快去发表自己的独特见解吧!
目录
采集
转换