Apollo课程学习2——高精地图HD Map
学习前言
终于结束了暑假中的考试周啦,撒花!开始猛补线上实习笔记啦。
高精地图概述
一、什么是高精地图
传统地图的技术尚未达到自动驾驶的需求,高精地图更类似于自动驾驶的专题组,但国内可能为了称谓方便还是称它为高精地图。高精地图并不是特指精度,它在描述上更加的全面、准确和清晰,对实时性的要求更高。
二、高精地图的特征
- 最主要的特征:需要描述车道、车道的边界线、道路上各种交通设施和人行横道,即把所有东西、所有人能看到的影响交通驾驶行为的特性全部表述出来。
- 实时性:这是非常关键的指标,因为自动驾驶完全依赖于车辆对于周围环境的处理,如果实时性达不到要求,可能在车辆行驶过程中会有各种各样的问题及危险。
三、高精地图与导航地图
电子导航地图(左图)把道路抽象成一条条的边,各边连通关系构成整体上的有向图。导航地图是根据人的行为习惯来设计的,只是给驾驶员提方向性的引导,不能识别标志标牌、入口复杂情况、行人等。
高精地图(右图)完全为机器设计的,包括人行横道、红绿灯、限速标牌、车道左转右转类型。
高精地图路口中间的虚拟的连接线是为了让车辆更好的去理解环境。
四、高精地图的作用
1、静态的Perception
- 图一路网非常复杂时,目前的技术从算法层面无法理解如此复杂的交通场景。
- 图二雪天路上的车道线全部被盖住了,不管是基于视觉还是雷达都无法正常运行。
- 图三是复杂的红绿灯,难以理解。
机器理解不了时,我们可以把人理解的经验赋予给驾驶系统,相当于把人的经验传授给它。
2、弥补系统性缺陷
自动驾驶需要非常复杂的计算系统,4G的传输速度并不能满足现阶段自动驾驶的海量数据传输需求,这些数据不能传回云端,就不能通过云端计算把结果发送给终端,所以我们现在把大量的数据都放在终端。5G是否能达到数据传输的要求还需要再验证,但5G的普及还需要时间。
传感器有局限,但高精地图给自动驾驶提供了超视觉、超过传感器边界的远距离感知。右图中,高精地图告诉感知/控制模块,在双向通行的车道中有栅栏隔离,对向车道的车不可能过来,系统就可以放弃检测对向车道上的障碍物,有效地降低系统负担。
五、高精地图与自动驾驶
L3级别以下不需要高精地图,但在L3、L4级别,高精地图是标配。
高精地图与其他模块的关系
一、高精地图——自动驾驶的大脑
高精地图对于感知、定位、规划、决策、仿真和安全都是不可缺少的。大脑综合处理成自动驾驶车辆能接受的外部信息,并统一运行在实时的操作系统上。
二、高精地图与定位模块
正如拼图游戏那样,首先无人驾驶车辆需要进行自定位,弄清楚其在地图上的确切位置。高精地图里面由定位提供的Feature有很多,例如电线杆、车道线、停止线和人行横道等都能提供很多的约束信息。
- Feature提取,车辆各类传感器收集的数据,如摄像机图像处理数据、激光雷达三维点云数据进行Feature提取,用于查找地标。
-
与高精地图进行特征匹配得到精确结果。
- 预处理,筛选走不准确的或质量差的数据。
- 坐标转换,将来自不同视角的数据转换为统一的坐标系。
- 数据融合,将来自各种车辆和传感器的数据合并。
三、高精地图与感知模块
自动驾驶车辆搭载的传感器类型有很多,但64线激光雷达、Camera和Radar等传感器都有一定局限性。
- 64线激光雷达实践中超过60米之后,点云本身已非常稀疏,所以60米外检测的可信度会继续下降;如果遭遇洒水车,或者碰到雾霾天气,对激光雷达的检测可信度也会有很大影响。
- Camera的局限更大,在夜间、逆光的情况下很难达到非常好的视觉效果。
- Radar的穿透能力很强,但精度不高。
所以基于这些传感器本身的局限性,高精地图能够提供非常大的帮助。开发者可以把高精地图看作是离线的传感器,高精地图里已标注了道路元素的位置。
出现物体的遮挡时,感知模块就可以提前做针对性的检测(感兴趣区域ROI),不仅可以减少感知模块的工作量,而且可以解决Deep Learning 的部分缺陷。识别可能会有些误差,但先验之后可提高识别率。
四、高精地图与规划、预测、决策、控制模块
-
规划模块:主要有两个层面,一个是A点到B点的长距离规划,另一个是短距离规划。自动驾驶车辆在行驶过程中面临动态环境,我们要根据障碍物的实时位置及时地做局部规划。
- 对于高精地图而言,规划需要知道从哪个Lean到哪个Lean,是一系列Lean的序列。在轨迹约束中,经高精地图运算后,自动驾驶车辆避让时会清楚地知道目的地在哪/怎么选,并提供可行的解空间。
-
预测模块:把其他道路参与者的可能行驶的路径轨迹和行动预测出来。
- 预测的体系比较复杂,但底层仍依赖于高精地图。
-
决策模块:根据规划和预测的结果决定自动驾驶车辆是跟车、超车还是在红绿灯灯前停下等决策。
- 高精地图能够提供先验的知识,让车辆决策更加准确。
-
控制模块:把决策结果分解为一系列的控制行动,然后分发给控制模块执行。
从以上分析可以看到,规划、预测、决策和控制的每个步骤都与高精地图有密切的关系。
五、高精地图与安全模块
联网的自动驾驶车辆可能遭受4个维度的攻击:传感器、操作系统、控制系统和通信系统。
- IMU惯性测量单元对于磁场是非常敏感,车辆周围放一些强磁场会影响它测量的准确度。
- 轮速器也有风险,车轮变形和损坏都会影响测量精度。
- 激光雷达依赖于激光反射,假的GPS信号和激光会对系统造成干扰。
针对任何一种攻击,目前很难有全面有效的方法来防止问题发生。高精地图能提供离线的标准信息。若传感器的信息与高精地图匹配不一致,我们会大概率地认为这里有问题。
六、高精地图与仿真系统
自动驾驶车辆的成本很高,实际情况中,开发者很难把所有的策略迭代都放在车上去测试,所以需要非常强大的仿真系统。高精地图为仿真地图提供了最底层的基础结构,能让仿真系统更好的去模拟真实道路的场景。没有高精地图的高可靠性,L3/L4自动驾驶无法落地。
高精地图的采集与生产
一、使用的传感器
- GPS
- IMU
- 轮速计
二、主要制图方案
1、激光雷达
无论是GPS,还是IMU、轮速计,各个传感器都存在一定的缺陷, 我们无法仅运用单一的传感器,采集出一个精确的数据,所以要综合运用各种传感器。
通过将GPS、IMU和轮速计测出的数据进行融合,再运用Slam算法,对Pose进行矫正,最终才能得出一个相对精确的Pose。最后把空间信息通过激光雷达扫描出三维点,转换成一个连续的三维结构,从而实现整个空间结构的三维重建。下图是在高精地图采集过程中一个最优化的计算模型,实际情况比这个要复杂得多。
2、Camera融合激光雷达
虽然激光雷达采集的信息非常精确,但它采集的信息非常少,无法提供像图像那样丰富的语义信息、颜色信息。通过融合Camera和激光雷达的优势,综合运用丰富的图像信息和精确的激光雷达数据,最终得出一个非常精确的高精地图。目前百度采用的是此方案。
高精地图的格式规范
一、NDS格式规范
- 数据库可以细分:每个细分后的产品都能够独立更新升级,支持局部更新,还提供语音、经纬度等描述功能。
- Level(尺度):通过放大或缩小比例尺,来浏览全国或某个区域、某栋楼的地图信息。由于地图的范围非常大,利用Level把整个地图切成一个又一个的小格子,在每个小格子中填充数据。
NDS是一种非常全面的地图表述方式,对地图的格式规范做得非常到位。但是该技术目前在国内尚未普及,国外使用则相对较普遍,特别是宝马等大厂商使用较多。
二、Open DRIVE格式规范
OpenDRIVE是目前国际上较通用的一种格式规范,由一家德国公司制定。在运用OpenDRIVE格式规范表述道路时,会涉及到
- Section:照道路车道数量变化、道路实线和虚线的变化、道路属性的变化的原则来对道路用灰线进行切分。
- Lane:基于Reference Line,向左表示ID向左递增,向右表示ID向右递减,比如Reference Line的ID为0,向左是1、2、3,向右是−1、−2、−3。
- Junction:是路口概念,包含虚拟路(红色虚线)用来连接可通行方向,以便无人驾驶车辆明确行进路线。
- Tracking:坐标系是ST,S代表车道Reference Line起点的偏移量(纵向),T代表基于Reference Line的横向偏移量。
在OpenDRIVE里,所有对车道线的描述都基于Reference Line的偏移量,这种形式非常复杂,在实际操作中比较困难。
业界的高精地图产品
一、HERE
二、MobileEye
三、Google Waymo
四、TomTom
Apollo高精地图
一、Apollo高精地图生产流程
-
数据采集。百度采取的是激光雷达和Camera二者相结合的制图方案,该方案的基础传感器配置有:平装的64线激光雷达和16线激光雷达。
- 64线激光雷达用于道路路面采集。由于其扫描高度比较低,还需要一个斜向上装的16线激光雷达,用于检测较高处的红绿灯、标牌等信息。其他传感器有GPS、IMU、长焦相机以及短焦相机。
-
数据处理。传感器采集到的数据分为点云和图像两大类。L4级自动驾驶汽车对地图的精度要求非常高。Apollo在制图过程中处理的数据也以点云为主。
- 点云拼接:采集过程中出现信号不稳定时,需借助SLAM或其他方案,对Pose进行优化,才能将点云信息拼接,并形成一个完整的点云信息。
- 反射地图:点云拼接后,可将其压缩成可做标注、高度精确的反射地图,甚至基于反射地图来绘制高清地图。其生产过程与定位地图的制图方式一样。
百度高精地图依托模式识别、深度学习、三维重建、点云信息处理等世界领先的技术,其数据自动化处理程度已达到90%,相对精度达0.1-0.2米,准确率高达95%以上。
- 对象检测。基于点云压缩成的图像进行车道线的识别,我们可得出准确的车道线级别的道路形状特征。除此之外,我们还需要提炼道路的虚实线、黄白线、路牌标识等,来完善道路特征。通过对收集到的图像等进行深度学习,即可提炼出道路相关元素放到高精地图中。
-
人工验证。因为自动化处理不可能做到百分之百的准确,所以得再进行一轮人工验证。验证人员需要从云端下载需要验证的路段数据,然后把自动处理之后的高精度地图数据和对应位置的图像信息作比对,找出错误的地方并进行更正,每人/天修正的数据量在 30-50 公里左右。修正后的数据不会保存在本地,而是需要上传到云端。最终的高精度地图成品,也会通过云平台进行下发。
- 人工验证的环节包括识别车道线是否正确、对信号灯、标志牌进行逻辑处理、路口虚拟道路逻辑线的生成等。
- 地图发布。高精地图是基于反射地图生产的。通过融合底图数据、图像数据、点云数据,整合生成高精地图数据,将可形成一份相对完整精确的自动驾驶地图数据。
二、Apollo地图采集方案
三、Apollo高精地图
1、Apollo高精地图元素
- 道路边界是强约束,即自动驾驶的时候,道路边界是永远不能压的。车道线理论上也是不能压的,但是如果在紧急情况下可以压车道线,比如说可以越过虚黄线进行借道超车。
- 可以通过路口的边界,对感知进行过滤。如果感知识别到的静态物体不在地图的路口边界之内,就可以暂时忽略它。虚拟车道主要是用来路口的行驶引导。
- 高精地图会为红绿灯提供一个三维空间位置,其次也会提供红绿灯跟车道之间的关联关系,即告知当前所在车道,应该看哪个灯。道路标志主要包括人行横道,停止线以及一些路上的文字信息。
- 逻辑关系表述。当前,地图中各个元素之间的关系并没有嵌入到元素的表述中,而是使用overlap来表述两个元素之间的空间关系。如下图所示,Lane和Junction在空间上有重叠,它们之间就会有Overlap。
- 纵向切成Section,横向用Lane分割。
- Left road_sample主要用来描述中心线到两个车道线边界的距离。
- Left road sample和Right road sample主要用来表述车道中心线到道路的物理边界的距离。
- 路口分为真实路口和十字路口。在实践过程中,发现除了真实路口之外,在车道数变化的时候,比如从两车道变到三车道,需要感知周围有没有车辆,在Apollo高精地图里面也把这种情况处理成一个路口。这也是In road和Cross road的区别。
2、Apollo高精地图坐标系
- UTM坐标系把全球分成60个区域带(Zone),每个Zone里面都是相当于Zone中心的一个局部坐标系。UTM坐标系描述的位置十分精确。目前,Apollo内部主要采用UTM坐标系。
- 84坐标系是一套全球经纬度,也是高精地图里面使用的坐标系。在该坐标系中,把整个地球想象成是一个椭球,地面的高度是相对于椭球面的一个偏移。高由正数表示,低由负数表示。
- Track坐标系是基于st的,s是纵向,t是横向。这个坐标系用来表述一个元素跟Lane之间关系,描述它位于Lane的什么位置,相对于Lane起点的偏移量是多少。
3、Apollo OpenDrive规范
Apollo OpenDRIVE把所有元素做了归类,类似于Road和Junction。路上的所有的地面标识都归属为Objects,所有的标牌都归属为Signal,并通过Overlap把它们关联起来,如下图所示。
4、Apollo HDMap引擎
- HDMap引擎是Apollo里面用于从HDMap里面提取相关元素给下游的一个模块。HDMAP 引擎可以通过ID去检索一个元素,也可以通过空间位置查找元素,比如给定一个点和半径,可以把这个范围之内所有的红绿灯都提出来。
5、Apollo地图成果
高精地图的挑战
在国内,采集地图属于国家机密事项,并不是每一家厂商或者公司都有资格采集地图。采集地图必须要经过国家测绘部门/安全部门的审批,同时测绘得到的数据需要进行加密。高程、曲率、坡度等在高精地图里面是不允许表述的,但这些数据对于无人驾驶又是必须的。如何在符合国家安全要求和技术需求之间找到平衡,这仍是自动驾驶发展所需要正视、解决的问题。