薛建儒,李庚欣
(西安交通大学人工智能与机器人研究所,西安 710049)
自动驾驶是目前人工智能领域的研究前沿和热点技术,将彻底颠覆我们的出行方式,因此受到了学术界、企业界和各国政府部门等多方面的关注。美国Nature杂志在2015年2月份发表文章[1]中描绘了无人车技术发展的三个愿景:更安全、便捷的出行,交通事故将急剧减少;更绿色环保、车辆共享、拥堵减缓、油耗下降10%;保守估计将节省出8亿个停车位空间,让位于其他社会生活空间。
自动驾驶技术主要沿自主智能与互联智能两条路线并行发展:自主智能车,即通过提高车辆自身的智能化水平,利用多传感融合和鲁棒的规划控制,使其能够适应交通环境。以谷歌公司2012年展出的无人车为典型代表;车联网下的自动驾驶,即通过车与车、车与路的网络通讯,实现整个交通系统的智能。这条技术路线大幅度降低了自动驾驶对车的自主智能水平的要求,例如,红绿灯、交通标识会和车辆通讯,直接获得交通规则,无需考虑高动态范围下的红绿灯和交通标识的识别。毫无疑问,这两条技术路线最终会交叉融合。
本文主要讨论自主智能车这条技术路线的核心问题和关键技术。当前市场上已有的、声称具备自动驾驶功能的汽车大多只能实现特定条件下的自动驾驶。参照美国汽车工程师学会(SAE)定义的五级自动驾驶水平[2],现有的自动驾驶距离真正无人自主驾驶尚需经过多个不同的自动化阶段。SAE的自动驾驶分级按自动驾驶系统对车辆的控制程度分为L1-L5级(不包括零级,零级即无自动化)。L1包括自适应巡航系统、车道保持系统等类似系统。L2级将L1级的环境感知技术(如车道检测、前方障碍物检测与跟踪等)与运动控制技术集成(如车道保持和自适应巡航控制系统中的车辆横向纵向控制等),实现跟车、泊车入位、前方障碍物紧急制动等自动驾驶任务。目前市场上声称的自动驾驶大多属L2级。L3级允许驾驶员在少许特定场景中切换到自动驾驶状态,比如在高速公路上堵车时。L1-L3级的技术全部需要依靠人类驾驶员处理车辆行驶过程中的紧急情况。L4级(高度自动化)的自动驾驶系统可在大多数交通环境中实现自动驾驶。L5级是真正的无需人参与的完全自动驾驶,也是自动驾驶的最高阶段。
企业的自动驾驶研发重点主要集中在L2、L3级,即人机共驾阶段,自动驾驶水平接近L3级。例如,利用过去几十年在传统的巡航控制系统中积累的技术,可以让汽车在公路上自动保持匀速行驶。目前广泛应用的自适应巡航控制系统可保持适当车速和车距,并可以协调摄像头、传感器收集的信息,利用方向控件使车辆维持在车道中间行驶。
实现真正的无人驾驶远比人们想象的复杂,现有的自动驾驶水平距离L4级仍然有较大差距,而要实现完全的自动驾驶,需要跨越巨大的技术鸿沟。与现有的自动驾驶系统相比,人类驾驶员还是非常善于避免严重车祸的发生,2011年美国交通安全统计数据显示,综合所有司机的驾驶情况,大概行车330万小时会发生一起致命碰撞,行车64000小时会发生一起致伤碰撞。这些数字为自动驾驶系统设立了重要的安全目标,即自动驾驶的最低安全标准不得低于人类驾驶时的标准。因此,自动驾驶的安全性要达到这个标准。显然,现有自动驾驶技术的安全性远远没有达到这个标准。
为此,本文将综述自动驾驶所面临的难点问题,主要聚焦于开放、真实的交通环境自动驾驶(L4级及以上的自动驾驶)所面临的挑战性问题及其研究进展,涵盖的难点问题包括:准确可靠的场景感知与理解;合理的驾驶决策、规划和运动控制。本文的其余部分组织如下:第二节给出了场景理解和自主运动的定义,第三、四节分别综述场景理解和自主驾驶的研究进展,最后总结并探讨无人车面临的挑战性问题。
无人车是一类典型的软硬件协同的自主智能运动系统。硬件部分由车辆本体、环境传感器、计算平台、控制和执行四个部分构成,如图1所示。常用的环境传感器可分为三大类:相机(以可见光相机为主,也有采用红外相机)、激光雷达和毫米波雷达,这三类传感器的感知范围、作用距离各不相同,选型和安装配置的基本原则是确保车辆周围一定距离内360度全覆盖[3]。
图1 无人车的硬件系统组成:车辆本体、环境感知传感器、计算与执行。此图由文献[3]修改而成
无人车的软件部分主要完成传感数据获取、处理,并形成从感知到运动的闭环反馈环路。具体而言,就是通过多传感器的有效融合得到交通场景的结构化描述,然后通过任务路径规划、驾驶行为决策、轨迹规划给出符合交通规则、安全合理的路径或轨迹,输入给运动控制器,进而驱动方向盘和油门/刹车,使车辆跟踪期望轨迹运动。这一闭环环路的形成依赖于对场景理解和自主运动两个耦合的核心问题的解决。
场景理解就是将来自多个异构、异步传感器的离散、片面、非完整的场景感知数据转化为决策规划的空间与拓扑约束,形成自主运动的决策依据。行车过程中,司机只需看一眼,可以立刻得到驾驶所需要的所有信息:交通标识、标线及与周边车辆之间的关系。场景理解的目标就是希望通过传感器融合,得到与驾驶任务密切关联的度量、符号和概念,形成场景的结构化描述。这一问题也是各种移动机器人的共性问题[4,5]。
场景的结构化描述主要表征场景的几何结构及交通要素的分布,并要能预测结构场景变化。场景理解的计算任务可划分为底层、中层和高层等三个层次:底层处理,针对场景地图和定位的深度求取、光流及场景流;中层分析,针对障碍物避让的检测与识别、交通规则;高层理解,针对运动规划的场景变化预测。
自主运动就是主动获取、组织感知数据并做出自适应于场景变化的敏捷运动。需要在场景理解给出的运动约束基础上完成行为决策、局部运动规划和反馈控制,最终实现适应交通环境变化的自主运动。具体而言,一般需要经历四个主要环节:路线规划、行为决策、运动规划和运动控制(如图2)。第一个环节是规划路线,可以在地图上离线计算,其余三个环境需在线实现。驾驶行为决策就是在沿给定的路线行驶中确定左转、右转、车道保持、超车等驾驶行为。局部路径规划就是在确定行为后,让车根据环境感知的结果规划路径或轨迹。运动控制就是通过控制方向盘、油门和刹车使车沿着预期规划好的路径行驶。
无人车的场景理解的目标就是通过分析处理多传感器的实时感知数据,实现车辆定位、导航和安全行驶。车辆定位和导航需要的几何度量信息主要包括车辆位置、前方车道线、道路边界以及和车之间的相对位置关系。安全行驶则需要场景理解给出周围车辆和行人的运动意图,以此推测将来一段时间无人车该如何适应场景变化,实现无碰撞的安全行驶。
图2 实现自主运动的四个环节:路径规划、行为决策、运动规划和运动控制
如前所述,场景理解的底层处理获得交通场景的三维信息和运动信息,基础构建场景的拓扑结构。具体而言,场景的拓扑结构包含的主要信息为周围有哪几辆车、它们占据了哪几个车道、距道路边界的距离等多个问题。中层分析与识别交通标志和交通标识,得到交通规则信息。高层理解主要完成推理和判断,即当前无人车应该车道保持还是换道、前方路口要左转还是右转。最终实现从环境感知、几何度量到推理预测的转变(如图3所示)。
按照自主运动对场景理解的需求,场景理解可进一步分解为静态场景理解和动态场景理解两个子问题。
全球卫星定位系统(GPS)与地图相结合的定位和导航已非常普遍。具体工作过程如图4所示,GPS给出车辆的当前位置,然后映射到地图中,从地图中获取相应的导航信息。由于GPS信号易受高层建筑物、树木等的遮挡,无法保证每个时刻都能有效接收。此外,现有的地图分辨率低、对交通环境的描述能力有限,不能直接应用于无人车的定位和导航。例如,无人车车道保持所需要的定位精度必须在分米级,自动泊车所需的定位精度必须在厘米级,而现有地图的定位精度基本在几十米甚至上百米,对于道路形状通常用折线表示。
图3 场景理解要在识别交通要素的基础上,形成结构化描述,实现从几何度量到推理预测的转变
因此需要构建满足自动驾驶需求的高精度地图,即通过高分辨率的感知数据构建地图。这种离线创建的地图一般使用视觉数据或激光数据,需要解决SLAM(Simultaneous Localization and Mapping)问题[6]。实际地图创建中,为提高地图的准确性和精度,也可使用高精度的差分GPS以及高精度惯导系统来实现定位。这时,地图创建问题就退化为局部拼接问题,可以用最近邻点集合配准(ICP)算法求解[7]。
图4 全球卫星定位系统与地图结合的定位与导航示意图
无人车的定位与导航需要从环境感知数据中提取静态场景要素,通过与高精度地图的匹配,确定无人车在地图中的位置。定位和导航主要依赖静态的场景要素,不考虑运动的车辆和行人等动态要素。因此,静态场景理解的主要任务是从激光点云和图像等环境感知数据中提取道路边界、道路宽度、车道数、车道线位置、车道线属性(黄线、虚线、实直线)等静态场景要素。为实现鲁棒精确的静态场景要素提取,常用的方法是引入地图提供先验信息[3]。
大范围场景的高精度地图创建必须解决好三个问题。首先是地图表征问题。大范围高精度地图应该能同时表示拓扑和度量信息,拓扑仅考虑点与点之间的连接关系,无方向和引导信息,度量地图有方向和引导信息,无人车需要考虑拓扑和度量混合的地图表征,以期提供更加快速和精准的导航信息。其次,利用多传感数据融合创建地图需解决时空对齐问题。对于图像数据而言,即帧间特征提取与关联问题。目前的主流方法是从图像中提取旋转和尺度不变特征点,并进行邻近帧特征点的关联匹配[8]。这种方法的问题是由于图像特征的局部特性以及场景中存在大量重复纹理,导致误匹配经常发生。为减少错误匹配,直接匹配法基于灰度不变假设,通过像素点帧间匹配创建稠密地图。这种方法存在灰度不变假设过强、单个像素区分度不足等缺点,限制了适用范围。最后,准确估计无人车状态需要设计高效的序贯滤波器[9],根据传感器获取的数据不断进行无人车的状态估计。地图的精度取决于状态估计的精度。
车辆行驶中所遇到的场景可划分为结构化(如高速公路)和非结构化(如乡村土路等)两大类。描述这两类场景的高精度地图的表达形式不完全相同。例如,地下车库就是一个典型的非结构化场景,一般用栅格地图[10]。对结构化场景而言,高精度地图需要包含车道线信息以及道路边界信息。由于不能单靠视觉创建地图,而且多传感器的数据采集频率和尺度不一致,因此通过激光和视觉的融合来创建场景地图时需要解决多源传感器数据的时空对齐和尺度统一。图5是我们提出的一种高效的高维点集配准算法,并将其成功用于车道线级别地图的创建与定位[11]。
基于高精度地图与局部感知相结合的精确定位与导航技术已经在智能车领域普遍应用。引入高精度地图可以有效提升环境感知对于路口的车道引导、特定区域如收费站的检测以及交通信号灯的识别。例如,单纯依赖计算机视觉算法实现真实交通环境中交通信号灯的鲁棒识别是一个远未解决的问题。为此,可在地图里面加入了交通灯位置信息,这样就可以根据当前车辆位置预测交通灯出现在图像的什么区域,以此减小搜索范围,会显著降低虚警率[10]。近期的地图创建研究中开始引入了语义信息,主要思路是将度量地图创建、物体识别及场景语义结合起来,实现度量、拓扑和语义的多层次导航地图[11]。
图5 车道线场景地图创建的多源数据时空配准及车道线地图构建[9]
无人车能否遵守交通规则且安全行驶,取决于对动态障碍物运动意图的准确判读,即需要准确识别车辆、行人的行为模式。图6与图7分别给出了路上和路口车辆的行为模式示例。为此,需结合障碍物跟踪和检测技术,引入交通规则的视觉知识表示,同时对人、车混杂交通场景中的突发事件进行实时检测与识别。具体而言,就是需要离线建立交通规则的视觉知识表示,在线识别车辆、行人的行为模式。
交通规则的视觉知识表示与学习需要准确感知交通场景中静态要素与动态要素的分布可能的运动空间。静态的交通场景要素如道路、车道线、红绿灯等一起组成了场景的交通规则,同时也构成了动态要素运动的上下文约束。同时,无人车需实时检测交通场景的动态变化及其造成的交通拓扑规则变化,以便为运动规划提供可靠的时空约束。在线行为识别需要克服感知不确定性所引入的误差及干扰问题。
具体而言,由于运动规划是对将来运动的规划,因此需要基于当前的场景理解推测出场景动态要素未来占据的空间,即需要基于行人、车辆的历史运动轨迹预测未来一段时间内被这些动态要素占据的空间,以便实现安全避让。
图6 路上车辆的交通行为模式
图7 路口车辆交通行为模式
预测行人、车辆的运动意图需要交通规则的视觉知识表示。如图6、图7所示,通过标注交通场景的感知数据或基于目标检测、跟踪,得到行人、车辆的位置序列,然后构建运动意图的预测模型。其中的难点问题是如何设计鲁棒的目标检测与跟踪算法,尤其是对路口区域的车辆、行人通行的行为模式表征和识别算法。以往的方法将障碍物的检测、跟踪与识别研究视为孤立问题单独处理,但实际应用中这三个问题紧密耦合,应视为一个整体问题来研究[13]。
图8 激光与图像的数据融合:3D激光点云投影到图像中的视觉障碍物检测,具体方法参见文献[12]
图9 融合3D激光点云的视觉障碍物检测,具体方法参见文献[14]
另外一个值得关注的问题是多传感信息融合,大量研究及实验结果表明,场景感知与理解不能仅靠单个传感器。现有的在公开数据库上测试性能最好的行人、车辆的视觉检测算法在真实交通场景中的检测率约为80%,并不能满足无人驾驶需求。我们提出了一种激光数据与图像数据融合方法[9](见图8),并用于提高视觉目标检测的准确率[14](见图9)。虽然相机与激光雷达可以离线标定,但行车过程中,由于安装位置会随车身颠簸,标定误差会随距离发生非线性变化。尤其是自动驾驶对于障碍物的检测范围应在100米左右,这时误差将变得非常大,因此需要在线标定。可把图像里的几何结构与激光的几何结构对应,即利用3D点云深度边缘和图像边缘来对应,将三维激光点云数据映射到图像上。然后利用Faster RCNN[15]实现行人和车辆的检测和识别,对视觉检测结果用三维点云校验,有效降低了视觉检测的虚警率(见图9)。
图10是我们提出的视觉主导的无人车场景理解框架。该框架实现了多传感器信息对齐配准,以及基于高精度地图的实时定位和行驶移动环境的理解。这个框架从2010年到现在一直在智能车上进行真实交通环境的实地验证,并在不断改进。
图10 视觉主导的场景计算框架
目前,场景理解的深度学习方法得到广泛应用,并在场景图像的语义标注上取得了令人兴奋的结果[16-20]。深度神经网络对每一个像素到底属于天空、道路,行人还是车辆都可以标注出来。这种语义信息对无人车做出更加智能的运动决策和规划将起到坚实的支撑作用。
无人车运动决策的主要依据是场景的结构化描述,同时还需考虑场景理解和运动控制的不确定性。例如,提取的场景要素位置存在误差、车辆运动控制也存在误差。运动规划时必须同时考虑这两方面的不确定性[21]。为此,通常采用分而治之的策略,采用驾驶行为决策、运动规划和运动控制的分层决策架构。
驾驶行为决策通常被定义为要选择跟车还是超车等问题,相应地运动规划就是在车辆的位形空间中搜索最优路径。一般用一个6维向量表示无人车位姿,即3维位置和3个姿态角。求解运动规划时,需先把场景的结构化描述映射到无人车的位姿空间里,然后在位姿空间中寻找一个满足时空约束的无碰撞位姿序列。运动规划分路径规划和轨迹规划两种。运动规划输出的路径是几何描述,输出的轨迹是在几何信息基础上增加了时间信息,也就是说每一个时刻对车不仅仅有位置约束,而且对速度也有约束。这个位姿序列是后续运动控制的期望输入。车辆运动受非完整性约束,比如有转弯半径、速度极限等。如何在同时满足非完整约束及场景理解给出的时空约束的情况下得到最优路径是运动规划问题的核心。
交通环境往往同时含有结构化场景和非结构化场景。对于结构化场景来讲,路径规划可用参数曲线减少搜索空间。例如,车道保持只要求行驶在车道中间,换道时仅需从当前车道中间换到相邻车道中间。但对于路口、收费站等非结构化场景则往往需要使用随机搜索算法。为寻求一种能同时用于结构化和非结构化环境的运动规划算法,我们提出了一种高效的快速扩展随机树算法[22],对非结构化场景的运动规划算法RRT进行了扩展,同时能适应结构化场景与非结构化场景。
与分层决策架构不同,最近的研究思路是把决策、规划与控制统一考虑,即建立输入为当前感知信息及驾驶任务,输出即时动作的一体化决策模型。此时,自主运动就是求解感知到动作间的映射,即驾驶策略。目前针对驾驶策略的研究工作可大致分为以下两类:
(1)驾驶策略的强化学习方法,通过车辆跟环境的交互来学会自主驾驶策略[23-27]。无人车面临交通场景复杂多样、高度动态、多智能体并存等情况,因此无人车应具备一定的自主策略学习能力,能够通过与环境的自主交互,学习当前环境和自身状态下所应采取的最佳动作,并具备学习和推理能力。
(2)利用端对端的学习则直接建立起场景图像序列与运动控制序列的映射。这类方法直接跨越了场景理解到运动控制之间的技术链路[28,29],使无人车能够在复杂交通场景实现类人的自主驾驶。
考虑到多智能体并存所带来的交通场景的动态性和不确定性,为更好地与人类驾驶员交互并保证安全,无人车研究需进一步借鉴人类驾驶员的驾驶认知机制,深入研究灵巧、敏捷的自主运动方法。
众所周知,无人车从场景理解到自主运动的技术链路已经形成,并开始在特定应用场景中落地应用。然而,场景理解与自主驾驶的核心问题远未解决,还至少存在以下三个挑战性问题:
第一,与人类驾驶员相比,现有的自动驾驶系统尚处于初期发展阶段。环境感知依然严重依赖激光、毫米波雷达等传感器,视觉未能充分发挥作用,也不能应对高水平人类驾驶员轻而易举的处理实际交通情境。为此,需要构建从底层视觉信息到高层交通模式的映射模型,以提高无人车对动态复杂场景的适应性。
第二,基于感知-规划-决策-控制分层计算架构的无人车越来越明显地表现出计算效率低、环境适应性差、自学习能力不足的问题,尤其在应对复杂交通环境时远远不及人类驾驶员。研究者们逐渐认识到一个被长期忽视的问题,即感知-规划-决策-控制这一计算过程与人类驾驶员的认知行为过程及其信息处理机制有显著区别。人类驾驶员开车是一个不断对交通场景认知理解的过程。如何参照人类驾驶过程的认知心理层次来理解和处理来自传感器的环境感知数据?如何让自主驾驶系统具有记忆、推理和经验更新的机制,从而能够应对高噪声、高动态和强随机性的交通场景?这些问题的解决将极大提高无人车对环境的自适应和自学习能力,有望使无人车达到甚至超过人类驾驶员的智能水平。然而解决这些问题已经超出了当前无人车的感知-规划-决策-控制框架的层次,需要从认知、心理科学层次,探讨适合描述人对交通场景认知基本过程的新方法[30]。
最后,无人车的应用必须解决无人车的安全性测试。安全性测试的实质是解决一个小概率事件问题。我们能够想到的交通场景是有限的,而真实交通场景变化是无穷的。实地测试+仿真+云端这种模式已广泛使用。具体而言,就是把车辆行驶数据上传到云端,云端基于数据改进与更新算法,再升级车的自动驾驶性能。这已经验证为目前无人车走向实际应用的一条可行途径。