自动驾驶载具或将引爆人类的下一次出行方式革命,人类目前已经走到了哪一步?2019 年 2 月,巴西圣埃斯皮里图联邦大学的研究者在 arXiv 上发布了一篇全球自动驾驶汽车研究情况的总结,梳理了产业界的进展。本文摘取了其中的主干部分,更详细的论述请参阅原文。
我们调查了有关自动驾驶汽车的研究文献,重点关注的是自 DARPA 挑战赛以来开发的配备有可归类为 SAE L3 或更高级别自主系统的自动驾驶汽车。自动驾驶汽车自主系统的架构通常可分为感知系统和决策系统。感知系统通常分为负责自动驾驶汽车定位、静态障碍物地图测绘、移动障碍物检测与跟踪、道路地图测绘、交通信号检测与识别等多种任务的许多子系统。决策系统通常也分为许多子系统,分别负责路线(Route)规划、路径(Path)规划、行为选择、运动规划、控制等。本文中,我们将介绍自动驾驶汽车自主系统的典型架构,还将总结在感知和决策相关方法方面的研究成果。此外,我们还将详细介绍巴西圣埃斯皮里图联邦大学(UFES)汽车 IARA 的自主系统架构。最后,我们会列出科技公司开发的和媒体报道的突出的自动驾驶研究汽车。
1 引言
自动汽车(也被称为无人驾驶汽车和自动驾驶汽车)自 1980 年代中期以来已经得到了全球很多大学、研究中心、汽车公司和其它行业公司的研究和开发。过去二十年里重要的自动驾驶研究平台案例有:
德国慕尼黑联邦国防军大学的汽车 [DIC87]
Navlab 的移动平台 [THO91]
慕尼黑联邦国防军大学和戴姆勒-奔驰的汽车 VaMP 和 VITA-2 [GER14]
意大利帕维亚大学和帕尔马大学的汽车 ARGO [BRO99]
慕尼黑联邦国防军大学的载具 VaMoRs 和 VaMP [GRE00]
为了促进自动驾驶汽车技术的发展,美国国防高级研究计划局(DARPA)在 2000 年代组织了三次竞赛。
第一次 DARPA 自动驾驶挑战赛名为 DARPA Grand,于 2004 年在美国莫哈维沙漠举办。比赛要求无人驾驶的汽车在 10 小时的时间限制内跑完一条沙漠通道中的长 142 英里的道路。所有参赛车辆都在前几英里内失败了。
第二次 DARPA 自动驾驶挑战赛名称同样是 DARPA Grand [BUE07] ,在 2005 年举办。比赛要求机器人车辆跑过一条长 132 英里的路线,其中有平地、干涸湖床和山路,包含 3 个狭窄通道和超过 100 个左右急转弯。这次比赛共有 23 辆参赛者,其中 4 辆车在规定时间内跑完了赛道。斯坦福大学的汽车 Stanley [THR07] 获得了第一名,卡内基·梅隆大学的汽车 Sandstorm 和 H1ghlander 分列第二和第三名。
第三次 DARPA 自动驾驶挑战赛名为 DARPA Urban 挑战赛 [BUE09],于 2007 年在美国加州前乔治空军基地举办。比赛要求无人驾驶车辆通过一条长 60 英里的模拟城市环境的路线,其中也有其它无人驾驶车辆和人类驾驶的汽车,时间限制为 6 小时。这些汽车必须遵守加州的交通规则。这场比赛有 11 辆参赛者,其中 6 辆在规定时间内跑完了路线。卡内基·梅隆大学的汽车 Boss [URM08] 获得第一,斯坦福大学的汽车 Junior [MON08] 第二,弗吉尼亚理工大学的汽车 Odin [BAC08] 第三。
尽管 DARPA 的三次自动驾驶挑战赛中的挑战远比人们日常交通中所遇到的情况简单,但它们已被誉为自动驾驶汽车发展的里程碑。
自 DARPA 这些挑战赛以来,又出现了很多自动驾驶汽车竞赛和试验。相关的案例包括:
从 2006 年举办至今的欧洲陆地机器人试验(ELROB)[ELR18]
2009 年到 2013 年举办的智能载具未来挑战赛 [XIN14]
2009 年到 2017 年举办的自动化载具竞赛 [AUT17]
2010 年的现代自主汽车挑战赛 [CER11]
2010 年的 VisLab 洲际自主汽车挑战赛 [BRO12]
2011 年和 2016 年的大型合作驾驶挑战赛(GCDC)[GCD16]
2013 年的公共道路城市无人驾驶汽车测试 [BRO15]。
(编者注:中国多地近年也举办了若干自动驾驶汽车的比赛,但从目前来看这些比赛在世界上没有引起太多关注。)
同时,全世界的学术界和产业界都在加速研究无人驾驶汽车。研究机器人汽车的重要大学包括卡内基·梅隆大学 [CAR18]、斯坦福大学 [STA18]、麻省理工学院 [MIT17]、弗吉尼亚理工大学 [VIR18] 和 FZI 信息技术研究中心 [FZI18]等等。主要公司包括谷歌 [WAY18]、Uber [UBE18]、百度 [APO18]、Lyft [LYF18]、Aptiv [APT18]、特斯拉 [TES18]、英伟达 [NVI18]、Aurora [AUR18]、Zenuity [ZEN18]、戴姆勒和博世 [BOS18]、Argo AI [ARG18]、Renesas Autonomy [REN18]、Almotive [AIM18]、AutoX [AUT18]、Mobileye [MOB18]、Ambarella [AMB18]、Pony.ai [PON18]、京东 [JD18]、Idriverplus [IDR18]、丰田 [TOY18]、福特 [FOR18]、沃尔沃 [VOLV18]、梅赛德斯-奔驰 [MER18]等等。
尽管大多数有关自动驾驶汽车的大学研究都来自美国、欧洲和亚洲,但巴西等国家也有一些相关研究。巴西的自动驾驶汽车研究平台相关案例包括米纳斯·吉拉斯联邦大学(UFMG)的汽车 CADU [LIM10] [SAB10] [LIM13] [DIA15a]、圣保罗大学的汽车 CARINA [FER14] [MAS14] [SHI16] [HAT17] 和圣埃斯皮里图联邦大学(UFES)的汽车 IARA [MUT16] [CAR17] [GUI16] [GUI17]。IARA 是巴西首辆在城市道路和公路上自动行驶了 74 公里的无人驾驶汽车。
为了衡量自动驾驶汽车的自主水平,SAE International(简称 SAE,即国际汽车工程师学会,本文末有 SAE 的厚势百科介绍)发布了基于人类驾驶员干预量和人类注意需求量的分类体系,其中自动驾驶汽车的自主程度可划分为 0 级(汽车的自主系统会发出警报,也许还能临时干预,但无法维持对汽车的控制)到 5 级(任何情况下都无需人类干预)[SAE16]。在这篇论文中,我们调查了发布在文献中的自动驾驶汽车研究,重点关注的是自 DARPA 挑战赛以来开发的配备有可归类为 SAE L3 或更高级别自动驾驶系统的自动汽车 [SAE16]。
自动驾驶汽车自主系统的架构通常可分成两大类:感知系统和决策系统 [PAD16]。感知系统通常分为负责自动驾驶汽车定位、静态障碍物地图测绘、移动障碍物检测与跟踪、道路地图测绘、交通信号检测与识别等多种任务的许多子系统。决策系统通常也分为许多子系统,分别负责路线(Route)规划、路径(Path)规划、行为选择、运动规划、控制等。但是这样的划分方式有些模糊,文献中也还存在一些不同的划分方式 [PAD16]。
在本文中,我们介绍了自动驾驶汽车自主系统的典型架构,还对感知和决策相关方法的研究进行了总结。
厚势联合中国汽车产业培训基地(AIT)推出自动驾驶方向、新能源汽车方向和人工智能方向的精品培训课程,参加本课程,除了学习行业的热点技术和知识,还能结识交大和同济的专家教授、博士和各主机厂的人士。培训报名请联系微信号:autoHS,电话:183 0185 8119 。近期课程:
3月19-20日,电动汽车驱动电机开发及其控制技术
3月20-21日,燃料电池汽车动力系统匹配及其能量控制技术
3月28-29日,人工智能机器学习开发实践及其在汽车行业开发案例
2 自动驾驶汽车架构概述
这一节将概述自动驾驶汽车自主系统的典型架构,并将介绍感知系统、决策系统以及其子系统所负责的任务。
图 1:典型的多层式自动驾驶汽车架构。TSD 表示交通信号检测,MOT 表示移动目标跟踪。
图 1 展示了自动驾驶汽车自主系统的典型架构,其中不同颜色的模块分别表示感知系统和决策系统 [PAD16]。感知系统负责估计汽车的状态和创造环境的内部表征(指自动驾驶汽车系统内部),这要用到机载传感器(比如光探测和测距(LIDAR)、无线电探测和测距(RADAR)、相机、全球定位系统(GPS)、惯性测量单元(IMU)、里程表等)收集的数据和有关传感器模型、道路网、交通规则、车辆动态等的先验信息。决策系统负责将车辆从初始位置驾驶到用户定义的终点,这需要考虑汽车的状态和环境的内部表征,还要考虑交通规则和乘客舒适度等情况。
为了在环境中驾驶汽车,决策系统需要知晓汽车所在的位置。定位器(Localizer)模块负责估计与环境的静态地图相关的汽车状态(姿态、线速度、角速度等)。这些静态地图(即图 1 中的 Offline Maps)会在自动操作前自动计算得到,通常会使用自动驾驶汽车自身的传感器,但通常也需要人工标注(比如人行横道或交通灯的位置)或编辑(比如移除传感器捕获的非静态目标)。自动驾驶汽车可能使用一个或多个不同的离线地图来进行定位,比如占用情况网格地图、缓解地图或地标地图。我们将在第 3.B 节介绍用于生成这些地图的方法的相关文献。
定位器模块的输入包括离线地图、传感器数据和平台的里程数据,生成的输出是自动驾驶汽车的状态(图 1)。需要重点指出的是,尽管 GPS 也许有助于定位过程,但由于高大树木、建筑、隧道等造成的干扰会使得 GPS 定位不可靠,在城市环境中只使用 GPS 是不足以满足定位精度要求的。我们将在第 3.A 节介绍有关定位技术的文献。
地图测绘器(Mapper)模块以离线地图和车辆状态为输入,生成在线地图。在线地图通常是离线地图与使用传感器数据和汽车当前状态在线计算出的占用情况网格地图中的信息的融合。我们将在第 3.B 节介绍计算在线地图方法的相关文献。可以预期在线地图仅包含环境的静态表征,因为这可能有助于决策系统的某些模块的运作。为了实现检测以及移除在线地图中的移动目标,通常会使用一个移动目标跟踪(Moving Objects Tracking/MOT)模块(图 1)。第 3.D 节介绍的文献的主题即为自动驾驶汽车的移动目标检测和跟踪方法。
自动驾驶汽车必须能识别和遵守水平(车道线)和垂直(即限速标志、交通信号灯等)的交通信号。交通信号检测(Traffic Signalization Detection/TSD)模块负责交通信号的检测和识别。我们将在第 3.E 节介绍交通信号检测和识别方法相关文献。
给定用户在离线地图中定义的终点(Final Goal),路线规划器(Route Planner)会在离线地图中计算出一条从当前状态到达终点的路线。路线(Route)是指一系列路径点的序列,其中每个点都是离线地图中的一对坐标。我们将在第 4.A 介绍路线规划方法的文献。
给定一条路线,路径规划器(Path Planner)模块会根据汽车状态和环境的内部表征以及交通规则计算一组路径。路径(Path)是指一系列姿态(Pose)的序列,其中每个姿态都是离线地图中的一个坐标对和汽车在该坐标对定义的位置所需的方位。中间的路径 P_c 是路线尽可能最好的路径,其左侧的路径和右侧的路径都是与 P_c 起始姿态相同的路径,向左或向右的路径具有不同的激进程度。我们将在第 5.B.1 节介绍有关路径规划方法的文献。
行为选取器(Behavior Selector)模块负责选择当前的驾驶行为,比如车道保持、交叉路口处理、交通灯处理等。其做法是选择一条路径,当前状态之前几秒(大约 5 秒)的一个姿态——决策范围,和在该姿态所需的速度。姿势和相关联的速度的配对被称为目标(Goal)。行为选取器选择目标时会在决策时间范围内考虑当前的驾驶行为以及避免与环境中的静止和移动障碍物相撞。
运动规划器(Motion Planner)模块负责计算从汽车的当前状态到当前目标的轨迹,这个轨迹遵循行为选取器定义的路径,满足汽车的运动学和动力学约束条件,并能保证乘客舒适。轨迹 T 是一个指令序列 c_k = (v_k, φ_k, t_k),其中 v_k 是在时间 t 的所需速度,φ_k 是在时间 t 的所需转向角度,t_k 是 c_k 的持续时间。一个轨迹能让汽车平滑且安全地从当前状态到达目标。我们将在第 4.B.2 节介绍有关运动规划的方法的文献。
避障器(Obstacle Avoider)模块接收运动规划器计算出的轨迹,并在有必要时对其进行修改(通常是降低速度)以避开障碍物。有关执行避障功能的方法的文献不多。我们将在第 4.B 看到一些相关文献。
最后,控制器(Controller)模块根据被避障器修改后的运动规划器轨迹计算并发送工作指令,以控制方向盘、油门和刹车的执行器,使车辆能以物理世界允许的方式尽可能好地执行修改后的轨迹。我们将在第 4.C 节介绍低级汽车控制方法的相关文献。
下面我们将按感知系统和决策系统两大组别详细介绍各个模块和用于实现它们的技术及变体技术。
3 感知
在这一节,我们将介绍文献中为自动驾驶汽车感知系统提出的重要方法,包括定位器(或定位)、离线障碍物地图测绘、道路地图测绘、移动障碍物跟踪、交通信号检测与识别
A 定位
定位模块负责估计自动驾驶汽车相对于地图或道路(比如表示成路沿或其它道路标记)的姿态(位置和方向)。大多数通用的定位子系统都基于 GPS。但是,总的来说,这些系统不能用于城市中的自动驾驶汽车,因为在有遮挡的区域不能确保有 GPS 信号,比如树下、城市峡谷(大型建筑之间的区域)、隧道。
文献中已经提出了多种不依赖 GPS 的定位方法。它们主要可分为三类:基于 LIDAR 的方法、基于 LIDAR 加相机的方法、基于相机的方法。基于 LIDAR 的定位方法仅依靠 LIDAR 传感器,这种方法测量准确且易于处理。但是,尽管 LIDAR 行业确实在努力降低生产成本,但与相机相比仍然价格高昂。在典型的基于 LIDAR 加相机的定位方法中,LIDAR 数据仅被用于构建地图,估计自动驾驶汽车相对于地图的位置则会使用相机数据,这能够降低成本。基于相机的定位方法很便宜廉价,但通常没那么精确可靠。
1) 基于 LIDAR 的定位
2) 基于 LIDAR 加相机的定位
3) 基于相机的定位
B 离线障碍物地图测绘
离线障碍物地图测绘子系统负责计算自动驾驶汽车所在环境中的障碍物地图。这个子系统是基础系统,让自动车辆有能力安全地驶过公共道路而不与障碍物(比如标牌、路沿)发生碰转。障碍物地图包含汽车也许可以驶过或不能驶过的位置的信息,并区分了自由区域(可通行)与已占用区域。汽车必须一直处于自由区域内。障碍物地图是根据地图测绘阶段的传感器数据构建的,并会被存储起来以待自动操作阶段使用。
状态空间的表征形式通常可分为拓扑表征 [CUM08] [MIL12] [FORE18] 和度量表征 [HOR13] [MUT16] [SCH18]。拓扑表征是将状态建模为图(graph),其中节点代表重要的位置(或特征),边表示它们之间的拓扑关系(比如位置、方向、接近程度和连通性)。这些分解的分辨率取决于环境的结构。度量表征通常是将状态空间分解成规则间隔的单元。这种分解形式并不取决于特征的位置和形状。度量表征的空间分辨率往往高于拓扑表征的。其易变性和高效性使其成为了最常用的空间表征。要了解用于创建拓扑表征的主要的基于视觉的方法,读者可参阅 Garcia-Fidalgo and Ortiz [FID15]。这里我们总结了用于计算度量表征的最重要方法,这些方法又可进一步分为离散和连续空间表征。
1) 离散空间度量表征
2) 连续空间度量表征
C 道路地图测绘
道路测绘子系统负责收集自动驾驶汽车周围的道路和车道信息,并使用几何和拓扑属性将它们表示在地图中,包括互连的区域和受限区域。道路地图测绘子系统的主要主题是地图表征和地图创建。
1) 道路地图表征
图 2:无人驾驶汽车 IARA 使用的道路网格地图和 RDDF 路径。绿色和红色区域表示道路网格地图,黑点是 RDDF 路径点,这是从道路网格地图中自动提取出来的。
图 3:自动车辆项目 [BEN14] 使用的 lanelet(车道片段)地图的图模型。红色和绿色点分别表示车道片段 A、B、C 的左和右路沿。该图展示了 A 和 C 交汇成 B 的情况。
2) 道路地图创建
D 移动目标跟踪
移动目标跟踪(MOT)子系统(也被称为检测与跟踪多目标/DATMO)负责检测和跟踪自动驾驶汽车所处环境中的移动障碍物的姿态。这个子系统对自动车辆的决策而言至关重要,能帮汽车避免与可能移动的物体(比如其它汽车和行人)发生碰撞。移动障碍物随时间的位置变化通常是根据测距传感器(比如 LIDAR 和 RADAR)或立体相机捕获的数据估计的。来自单目相机的图像能提供丰富的外观信息,这可用于改善对移动障碍物的假设。为了应对传感器测量的不确定性,可将贝叶斯滤波器(比如卡尔曼或粒子滤波器)用于状态预测。文献中已提出了多种用于 MOT 的方法。这里我们将给出近十年最新发表的相关文献。更早期的研究可参阅 Petrovskaya et al. [PET12]、Bernini et al. [BER14] 和 Girão et al. [GIR16]。
用于 MOT 的方法主要可分为六类:
1)基于传统方法的 MOT
2)基于模型的 MOT
3)基于立体视觉的 MOT
4)基于网格地图的 MOT
5)基于传感器融合的 MOT
6)基于深度学习的 MOT
E 交通信号检测与识别
交通信号检测与识别子系统负责检测和识别交通规则定义的信号,使汽车可以遵守交通法规做出正确的决策。与交通信号相关的任务有很多,本文将介绍这三大主要主题:
1) 交通信号灯检测与识别
2) 交通标志检测与识别
3) 路面标记检测与识别
4 决策
在这一节,我们将给出自动驾驶汽车决策系统文献中报告的相关技术,包含路线规划、行为选取、运动规划和控制子系统。
A 路线规划
路线规划子系统负责计算出一条穿过道路网的路线,让自动驾驶汽车能从起始位置到达用户操作者定义的终点位置。如果将道路网表示为一个加权的有向图,其边权重表示遍历一个道路片段的成本,则计算路线的问题就可约简为在一个加权有向图中寻找最短路径的问题。但是,对于大型道路网,经典最短路径算法(比如 Dijkstra [DIJ59] 和 A* [HAR68])的复杂性时间是不实用的。
用于道路网中路线规划的方法能在查询时间、预处理时间、空间用量、对输入变化的稳健性等方面提供不同的权衡。这些方法主要可分为四类 [BAS15]:目标导向的方法、基于分割因子的方法、分层方法、bounded-hop 方法;也可以组合这些方法。
表 1:西欧的路线规划技术的表现 [BAS15]
B 运动规划
运动规划子系统负责计算一条路径或轨迹,使自动驾驶汽车能从当前状态到达行为选取子系统定义的下一个局部目标状态。运动规划执行的是局部驾驶行为,满足汽车的运动学和动力学限制,保证乘客舒适,以及避免与环境中的静止和移动障碍物碰撞。
运动规划可以是路径或轨迹。路径是一个汽车状态序列,不是定义汽车状态随时间变化的方式。这个任务可以委托给其它子系统(比如行为选取子系统),或者可将速度分布定义为曲率以及与障碍物的接近程度的函数。轨迹是指定了汽车状态随时间的演变情况的路径。
文献中提出了多种用于运动规划的方法。我们将介绍为路上运动规划设计的且使用真实自动车辆实验评估过的方法。读者可参阅 González et al. [GON16] 和 Paden et al. [PAD16] 了解对这些方法的更全面的总结。
1) 路径规划
2) 轨迹规划
C 控制
在自动驾驶汽车领域,控制是指工程开发领域的自动控制背后的理论,这涵盖了没有连续直接人类干预的操作和调节过程的机制的应用。在最简单的自动控制形式中,控制子系统会比较该过程的输出与预期输入,并使用其中的误差(该过程的输出与预期输入的差异)来修改该过程的输入,使得该过程即使在存在扰动时也能保持在设定点。在自动车辆中,通常会将自动控制理论应用于路径跟踪和硬件驱动方法。路径跟踪方法的作用是在汽车模型等地方存在不准确的情况时稳定运动规划的执行。硬件驱动控制的作用是在汽车模型等地方存在不准确的情况时计算执行运动规划的转向角度、油门和刹车制动器输入。
路径跟踪方法也被称为控制技术,因为其使用了自动控制理论,并将路径视为所要控制的信号。但是,在自动驾驶领域将其称为路径跟踪方法更合适,以便将它们与硬件驱动方法分开。
1) 路径跟踪方法
图 4:Pure Pursuit 方法的几何描述
2)硬件驱动控制方法
5 UFES 汽车 IARA 的架构
我们将在这一节详细描述 UFES 的汽车 IARA 的自主系统的架构。
图 5:智能和自动机器人汽车(IARA)是巴西首辆在城市道路和公路上行驶了 74 公里的自动驾驶汽车。这里有一段 IARA 自动运行的视频:https://youtu.be/iyKZV0ICysc
6 产业界开发的自动驾驶汽车
我们将在这一节列出科技公司研发的和媒体报道的突出的自动驾驶汽车研究。
有很多公司展现了研发自动驾驶汽车和/或投资相关技术的兴趣,以期从中获利。相关企业既有汽车制造商与生产传感和计算硬件的公司,也有开发辅助驾驶和自动驾驶、娱乐和车载广告公司软件的公司。
所涉及的公司包括 Torc、谷歌、百度、Uber、Lyft、Aptiv、滴滴、特斯拉、乐视、英伟达、Aurora、Zenuity、戴姆勒、博世、Argo AI、Renesas Autonomy、本田、Visteon、AImotive、AutoX、Mobileye、Ambarella、Pony.ai、Navya、Transdev、京东、丰田、福特、沃尔沃和梅赛德斯-奔驰等等。