目录
1)高精地图与自动驾驶
2)什么是高精地图
3)高精地图与导航地图
4)高精地图---无人驾驶的核心基础模块
5)高精地图与定位模块的关系
6)高精地图与感知模块的关系
7)高精地图与规划、预测、决策模块的关系
8)高精地图与安全模块
9)高精地图与仿真系统
10)高精地图的作用---静态的Perception
11)高精地图的作用---弥补系统性缺陷
原创: 阿波君 Apollo开发者社区 前天
在上周,阿波君为大家具体介绍了百度「Apollo硬件开发平台」。
本期,阿波君将与大家分享百度Apollo L4级别自动驾驶系统在高精地图方面的进展和相关的内容。
话不多说,欢迎各位开发者一起进入进阶课程第6期。
美国国家交通安全管理局将自动驾驶分为五个等级。SAE(SAE International, Society of Automotive Engineers 国际自动机工程师学会)将自动驾驶分成六个等级,国内广泛接受SAE的六等级分类方法。
在SAE的六等级分类方法中,L0级别是人类驾驶,L1到L3级别是辅助驾驶,L3以上是自动驾驶。
在L1—L3辅助驾驶级别,常见的很多车型都已经配备其中的一些功能,比如偏离预警、碰撞预警和自适应巡航等。
L3级别以上的自动驾驶研发是现在Apollo正在做的事情,百度内部本身分L3和L4。
L3级别基本上已达到一定程度上的自动驾驶,它不需要车辆驾驶员来关注环境,只需要在紧急情况下接管;L4级别则可在限定区域下完全做到自动驾驶。
L5级别可能是比较遥远的状态。现在有些厂商宣称L5级别自动驾驶可以做到完全没有人员操控,车辆能处理所有的情况。
但这需要依赖于技术能够发展到非常好的阶段,到时候所有的道路情况车辆才能理解和处理。
从分类等级里面可以看到,L3级别以下不需要高精地图,但在L3、L4级别,高精地图是标配。
发展到L5阶段是否需要高精地图?到目前为止还不确定。在目前的情况下,如果没有高精地图,L3、L4级别的自动驾驶很难实现。
高精地图的定义
传统地图的技术不是不精确,而是尚未达到自动驾驶的需求。
用于L3、L4级别自动驾驶的高精地图,对整个道路的描述更加准确、清晰和全面。高精地图除了传统地图的道路级别,还有道路之间的连接关系,专业术语叫Link。
高精地图最主要的特征是需要描述车道、车道的边界线、道路上各种交通设施和人行横道。
即它把所有东西、所有人能看到的影响交通驾驶行为的特性全部表述出来。
第二个特征是实时性。实时性是非常关键的指标,因为自动驾驶完全依赖于车辆对于周围环境的处理,如果实时性达不到要求,可能在车辆行驶过程中会有各种各样的问题及危险。
高精地图更类似于自动驾驶的专题组,但国内可能为了称谓方便还是称它为高精地图。高精地图并不是特指精度,它在描述上更加的全面,对实时性的要求更高。
导航地图与高精地图的差别
左边是我们经常用到的一些电子导航地图,它的表述形式倾向“有向图”结构,把道路抽象成一条条的边,各边连通关系构成整体上的有向图。这类似百度地图、高德地图、谷歌地图的做法。
导航地图只是给驾驶员提方向性的引导。识别标志标牌、入口复杂情况、行人等都是由驾驶员来完成,地图只是引导作用。导航地图是根据人的行为习惯来设计的。
高精地图完全为机器设计的。因为对于道路的各种情况、人都能理解,但是对于车辆来说它完全不理解。
右边的图是比较典型的复杂路口,包括人行横道、红绿灯、限速标牌、车道左转右转类型。
我们可以看到图中的路口中间有虚拟的连接线。真实道路中不存在连接线。连接线是为了让车辆更好的去理解环境,并在高精地图上表示出来。通过这一步,在人类构建的交通设施环境下,自动驾驶车辆便能运行。
自动驾驶领域对功能模块的划分
高精地图可以作为自动驾驶的「大脑」。「大脑」里面最主要是地图、感知、定位、预测、规划、安全。综合处理成自动驾驶车辆能接受的外部信息,并统一运行在实时的操作系统上。
ROS是业界普遍接受的实时操作系统,百度内部也在研发自己的操作系统。
编者注:
在2019CES的Apollo 3.5发布会上,Apollo正式发布首个自动驾驶高性能开源计算框架Cyber RT。
Apollo Cyber RT系统是 Apollo 开源软件平台层的一部分,作为运行时计算框架,处于实时操作系统 (RTOS) 和应用模块之间。
Apollo Cyber RT作为基础平台,支持流畅高效的运行所有应用模块。
车上配备的传感器类似于人的感知系统,用来感知外部环境;自动驾驶车辆会把感知的结果通过「大脑」处理后发送给控制系统。
HMI人机交互接口前期主要用于内部调试,后期当自动驾驶车辆量产后,需要用户输入目的地等信息。
因此,高精地图对于感知、定位、规划、决策、仿真和安全都是不可缺少的。
下面让我们来逐一了解高精地图模块与其他模块之间的关系。
视觉与高精地图结合是比较典型的视觉定位方法
现在主流的自动驾驶的定位方案有两种:一种是基于点云,另一种是基于Camera。其本身都是一种对周围环境的感知。
感知后是Feature提取,提取之后可以通过特征匹配最终得到精确结果。
自动驾驶车辆在路口“看”到建筑物,然后通过激光雷达能搜到点云的信息,通过点云的特征提取,然后通过复杂的组合变换、视角变换,最终通过跟周围环境的比对能得到比较准确的定位坐标。
目前主流Camera定位的视觉方案,会实时做Location Feature的提取。在HDMap里面也存储了对应的一些Location相关的特征。经过两个提取特征的比较后可以得到相对准确的定位位置信息
Camera下有GNSS,雷达也有。有初值之后可以减少搜索的范围,在工程上可以搜到更好的结果。
路边特征/车道线对比
左侧「路边的特征」图片是我们利用粒子滤波提取路边特征的演示。
车辆在初始位置时,Camera可以观测到在它左边有一棵树。这棵树可能是高精地图的Feature,通过Feature我们知道车辆可能的位置。
下一刻,Camera观测到它右边又有一棵树。通过这两个Feature的比对,再通过概率性叠加计算,几次迭代后就可以大概确定车辆所在道路的位置。
道路上的Feature是非常多的,除了树以外,也可能是车道线。
右侧「道路车道线」图片是基于车道线的匹配情况演示。通过Camera、Deep Learning和实时的检测模块,系统能够实时地检测到车道线。
从右图可以看出左边的车道线匹配情况不太好,右边的车道线匹配比较好,这时候能大概的确定我们在右边车道线对应的相关位置。
高精地图里面由定位提供的Feature有很多,例如电线杆、车道线、停止线和人行横道等都能提供很多的约束信息。
超距离感知、障碍物感知与红绿灯感知
自动驾驶车辆搭载的传感器类型有很多。但64线激光雷达、Camera和Radar等传感器都有一定局限性。
64线激光雷达号称有一百米的检测距离。但实践中超过60米之后,点云本身已非常稀疏,60米外检测的可信度会继续下降。
自动驾驶车辆在行驶中如果遭遇洒水车,或者碰到雾霾天气,对激光雷达的检测可信度也会有很大影响。
Camera的局限更大,在夜间、逆光的情况下很难达到非常好的视觉效果。
Radar的穿透能力很强,但精度不高。
所以基于这些传感器本身的局限性,高精地图能够提供非常大的帮助。
开发者可以把高精地图看作是离线的传感器,在高精地图里,道路元素的位置都被标注好了。
由于物体的遮挡影响,自动驾驶车辆在某些地方看不到左下侧/比较远的红绿灯。
在高精地图里提前标注红绿灯的三维空间位置后,感知模块就可以提前做针对性的检测。
这样做不仅可以减少感知模块的工作量,而且可以解决Deep Learning 的部分缺陷。识别可能会有些误差,但先验之后可提高识别率。
高精地图可以帮助车辆做到先验信息/轨迹约束/预测选择
规划、预测和决策也是自动驾驶里非常重要的模块。
「规划模块」完成的工作主要有两个:第一是A点到B点的长距离规划;第二个是短距离规划。
自动驾驶车辆在行驶过程中面临动态环境。其中包括道路交通的参与者,比如其他车辆和行人。我们要根据障碍物的实时位置及时地做局部规划。
在Apollo源码里有Planning的模块,是用来专门研究规划的。
有了以上两个层面的规划之后,还需要预测。「预测模块」的作用是把其他道路参与者的可能行驶的路径轨迹和行动预测出来。
「决策模块」主要是根据规划和预测的结果决定自动驾驶车辆是跟车、超车还是在红绿灯灯前停下等决策。
「控制模块」是把决策结果分解为一系列的控制行动,然后分发给控制模块执行。
从以上分析可以看到,规划、预测、决策和控制的每个步骤都与高精地图有密切的关系。
高精地图的规划是Lean级别的,传统导航只需知道点到点的信息。对于高精地图而言,规划需要知道从哪个Lean到哪个Lean,是一系列Lean的序列。
规划的第二个层次是Planning。
在轨迹约束中,经高精地图运算后,自动驾驶车辆避让时会清楚地知道目的地在哪/怎么选,并提供可行的解空间。
预测的体系比较复杂,但底层仍依赖于高精地图。
例如,自动驾驶车辆「看到」其他车辆在左转车道上,系统会预测此车辆很大概率上要左转;若是「看到」其他车辆在右转车道上,系统会预测此车辆很大概率上要右转;「看到」行人在人行横道上,这时候红绿灯是绿的,系统则预测行人要过马路。
以上便是高精地图给规划、预测和决策模块提供先验的知识,高精地图能够让车辆「决策」更加准确。
自动驾驶车辆联网后,遭受攻击无可避免
自动驾驶的主要目标是能够取代人类司机,能够取代的前提是自动驾驶车辆必须足够的安全。
安全的维度有很多。驾驶算法的稳定性和对场景的处理能力也属于安全范畴。
今天我们着重讲安全模块与高精地图的关系。
自动驾驶车辆有很多传感器,当自动驾驶车辆上路之后,会出现很多质疑的声音。
联网的自动驾驶车辆可能被攻击。因为所有的东西一旦联网,就存在各种各样的隐患。
自动驾驶车辆可能遭受4个维度的攻击:传感器、操作系统、控制系统和通信系统。
传感器是自动驾驶车辆辆上通用的模块,相当于IMU惯性测量单元,它对于磁场是非常敏感,如果我们在车辆周围放一些强磁场,会影响它测量的准确度。
轮速器也有风险。车轮变形和损坏都会影响测量精度。
激光雷达依赖于激光反射。如果我们在周围环境上加载人工的反射物或假的红绿灯,就会让我们的车直接停下。假的GPS信号和激光也会对系统造成干扰。
定位模块依赖于高精地图提供的信息来做运动学的约束;激光雷达依赖高精地图做一些三维点的扫描。
Apollo提供的定位方案基于激光雷达反射值。反射值不准确就会对定位精度有影响,红绿灯对规划决策控制也有很大的影响。
针对任何一种攻击,目前来说,还很难有全面有效的方法来防止问题发生。
高精地图能在这里面起什么作用?
高精地图能提供离线的标准信息。比如说,激光雷达在场景中扫描到物体,通过与高精地图中的信息进行对比匹配。如果结果不一致,我们可以大概率地认为此地有问题,这就是通过多传感器的融合来解决安全问题。
仿真系统是自动驾驶非常重要的模块
自动驾驶车辆的成本很高。车辆的成本几十万,64线激光雷达的成本在8万美元。
实际情况中,开发者很难把所有的策略迭代都放在车上去测试,所以需要非常强大的仿真系统。
仿真的主要问题是「真实」,怎样做到「真实」?
Apollo的仿真系统主要是基于高精地图/真实场景来构建。仿真场景回放后,和真实上路的实际情况相比,可以基本保证Gap不会很大。
在实际测试的过程中,Apollo的测试人员也会录一些Bag,记录实测中遇到的一些问题,并放到仿真系统里去做测试。
高精地图为仿真地图提供了最底层的基础结构,能让仿真系统更好的去模拟真实道路的场景。
没有高精地图的高可靠性,L3/L4自动驾驶无法落地。
高精地图可将人类经验赋予自动驾驶系统
上图是几个非常典型的、难理解的场景。
第一是在重庆的某地。路网非常复杂,我们目前的技术从算法层面无法理解如此复杂的交通场景。
第二个是雪天。雪天是非常难解的场景,雪天时路上的车道线全部被盖住了,不管是基于视觉还是雷达都无法正常运行。
2018年谷歌IO大会上提出了通过深度学习能够解决雪天的场景。在下雪过程中,激光雷达在扫描到雪花之后会误报出很多障碍物,通过深度学习能够把激光雷达上检测到的雪花障碍物过滤掉,最终得到跟没有下雪的场景一样,但是具体效果怎么样,并没有具体的数据披露。
第三个是复杂的红绿灯,这种红绿灯即使人看到也不知该如何处理。
高精地图是静态的Perception。机器理解不了,我们可以把人理解的经验赋予给驾驶系统,相当于把人的经验传授给它。
高精地图可以弥补系统性缺陷
自动驾驶需要非常复杂的计算系统,4G的传输速度并不能满足现阶段自动驾驶的海量数据传输需求。
64线激光雷达、Camera和其他传感器,每时每刻都会产生巨量的数据,这些数据不能传回云端,就不能采用互联网的模式:通过云端计算把结果发送给终端。
5G是否能达到数据传输的要求还需要再验证。目前从5G的宣传层面来看,能够达到数据实时传输的效果,但是5G的普及还需要时间。所以我们现在把大量的数据都放在终端。
Apollo的自动驾驶车辆后面有非常大的计算单元。基于英特尔工控机,Apollo把所有的计算都放在车上,这会对计算速度和实时性有很大的影响。
我们希望Apollo的各模块都能达到实时级的响应,但是自动驾驶车辆的计算量太大,想要达到实时级的响应,仍需其他模块的辅助。
举个例子,高精地图告诉感知/控制模块,在你的双向通行的车道中有栅栏隔离,对向车道的车不可能过来,系统就可以放弃检测对向车道上的障碍物,有效地降低系统负担。
传感器有局限,但高精地图给自动驾驶提供了超视觉、超过传感器边界的远距离感知。
阿波君说:
在学习过程中,开发者不仅可以在Apollo开发者社区小程序上对课程内容进行提问,还可以在开发者微信群中交流学习心得,共同学习自动驾驶技术。
开发者社区还将在公众号上定期推送课程相关的技术干货,全程陪伴大家共同进步。祝Apollo开发者们顺利完成《Apollo自动驾驶进阶课程》的学习,在自动驾驶道路上越走越远!
阿波君还欢迎大家在小程序内晒出学习笔记,也可以加入开发者交流社群与大家交流互动,有好礼相送!
观看/阅读完该节课程后在开发者社群及小程序「社区问答」版块内上传你的课程笔记截图;手写笔记/电脑文档均可即可联社区小助手获取百度周边纪念品1份。赶快来撩吧~比心~