周干 张嵩 罗悦齐
(上海汽车集团 前瞻技术研究部,上海 201804)
主题词:自动驾驶 安全 仿真 测试评价方法
随着汽车行业的快速发展,汽车保有量逐步提升,道路安全事故频发。为了减少交通事故造成的严重伤亡,各汽车制造商正在不断加大对主动安全技术和智能化技术的研发投入以提高汽车的安全性。随着先进驾驶辅助系统(ADAS)技术的不断升级完善并逐步向智能化发展,汽车在不久的将来会实现自动驾驶。表1所示是基于SAE标准的汽车自动驾驶分级系统[1],当达到第5级系统时,理论上“自动驾驶系统”将完全掌控感知、决策和执行,从而完全避免人类驾驶员的失误,获得极高的安全性。但是,随着汽车自动化程度不断升级,如何高效的测试和验证自动驾驶算法的合理性及系统的稳定性已经成为业内的一大挑战。
目前,自动驾驶车辆测试可分为实车测试和虚拟仿真测试。虚拟仿真测试借助于计算机仿真技术,与实车测试比较,具有测试速度快、成本低、无安全风险等优点,在产品开发的早期阶段被广泛采用,所以研究出高效、经济的仿真测试方法对厂家尤为重要。由于构成真实交通场景交通参与者的类型、大小、形状、颜色等特征不同,以及道路环境,天气等因素复杂多变,如何合理的构造模拟真实交通场景的交通参与者模型成为自动驾驶测试的关键问题之一。本文通过文献挖掘,系统总结了国内外研究者在针对自动驾驶的仿真测试与评价方法研究上取得的最新进展。
为了更精确得解决一个复杂的问题,可以用一种随机方法去求解近似值,这种方法称为“蒙特卡洛方法”。蒙特卡洛这种随机算法虽然不能得到问题的真实解,但却可以将复杂的问题简化,以简单重复的算法求解各种复杂问题[2]。
表1 自动驾驶分级[1]
早在2004年,Gietelink等[3]利用蒙特卡洛方法结合基于PreScan搭建的车-硬件在环系统验证了ADAS系统的可靠性及稳定性。作者选定了一个高速的巡航(ACC)测试场景,通过PreScan建模并进行N次的随机试验,根据评价标准,统计每次试验的结果(失效或成功),失效次数为Nf,最后得到ACC系统的失效概率(Nf/N),随着试验次数的不断增大,N→∞,系统失效的概率越接近于真实的值。
蒙特卡洛算法可以将驾驶场景变成一个随机模型,基于大数定理,随着重复测试次数的增大,测试结果总是会收敛到真值[4]。但是要让结果逼近真值,需要非常大量的样本容量。随着智能驾驶技术不断升级,整车控制子系统更加复杂,需要测试验证的场景更加多样化及连续性,若任用传统的蒙特卡洛算法进行测试,则需要更多的计算硬件支持,势必会增加测试的时间及成本。
为了获得更快的测试速度,Zhao等[5][6]基于蒙特卡洛算法提出了加速测试算法。如图1所示,该研究将蒙特卡洛加速测试模型分为4步。首先,基于大量的自然驾驶数据,定义第一辆干扰车的行为为自动驾驶车辆驾驶表现的主要干扰源,然后将日常驾驶数据做偏态分布并着重强调临界场景,再使用挑选的数据导入模型进行加速测试,获得测试数据。最后,根据重要性采样方法对结果进行偏态采样获得真实场景下系统的碰撞率或遇到危险场景的概率等重要数据。此方法仅选择临界场景进行随机试验,大大降低了测试里程,提高测试效率。
传统的博弈论方法主要处理两个参与者之间的混合策略纳什均衡,例如零和博弈。而驾驶行为涉及到各个驾驶员在复杂场景和信息有限的条件下的决策和交互,因此可以将博弈论方法扩展到多个参与者,用于预测和模拟人类驾驶员的行为,从而构建符合自然驾驶特性的仿真交通环境,用以测试自动驾驶汽车应对混合交通的性能。Li等人[7]基于此方法构建了多层次的驾驶员模型:Level-K模型,并用这些模型按照一定的次序组合构建各种测试场景,来验证自动驾驶算法的合理性。
图1 加速测试方法原理与流程[5][6]
Level-K模型,是基于实际驾驶过程中驾驶员根据所观测到的交通情况做出推测并选择驾驶行为的事实所开发的多层次驾驶员模型。其中0级模型也称最底层模型,代表智能驾驶员选择驾驶行为时只按照自身需求而不用考虑其余车辆的驾驶行为。例如,车辆需要从A车道换至B车道,不需要考虑临近车辆的驾驶行为,此驾驶员模型被称为0级模型。如果某辆车参考0级驾驶员模型的驾驶行为选择自己的驾驶行为,则定义此驾驶员模型为1级驾驶员模型。以此例推,K级驾驶员模型以K-1级驾驶员模型的驾驶行为为参考选择驾驶行为,从而得到Level-K模型。
与蒙特卡洛方法不同的是,基于博弈论方法进行自动驾驶算法的测试,不再纯粹基于数据去描述环境车辆的行为,而是从人类驾驶行为的本质机理出发,建立起驾驶员交互模型,从而构建接近真实的交通环境工况,进而验证自动驾驶算法在真实交通环境下的响应性能[8]。
前三节所述的“蒙特卡洛方法”、“加速测试方法”和“博弈论方法”都是基于重构的环境、车、驾驶员模型及交通模型对自动驾驶算法进行测试,由于这些方法反映了实际道路上的驾驶状态,因此需要较长的测试里程,才能得到更可靠的测试结果。另一种思路是人工设计特定的测试场景。Menzel等人[9]基于功能安全标准ISO 26262[10]的V模型验证法定义多样化的测试场景,并选择必要的危险场景进行测试以提高测试效率。
如图2所示,研究者参考V模型的开发过程,提出了场景定义的三个阶段,即概念设计阶段、系统开发阶段、测试阶段。在概念设计阶段,可以定义高度抽象化的测试场景,即定义构成交通场景的要素,如:车辆、道路、行人等。随着开发过程的不断推进,场景定义变得更加具体。在系统开发阶段,场景定义需要包含构建场景要素的状态参数的范围,如道路的宽度范围、车辆位置范围等。最后,在测试阶段,场景定义需要包含场景要素状态的具体值。这样便得到一个结构化的场景定义方法,即首先根据ISO 26262标准进行类目定义,然后将各阶段的场景按等级划分为“功能场景”、“逻辑场景”和“具体场景”,得到矩阵化的测试场景库,再进行危险性分析和风险评估,最后选择必要的案例进行测试和验证。
图2 分阶段场景定义[9]
为了达到更真实的仿真效果,现代汽车的工程师借助航空驾驶模拟器的原型搭建了可以实现人-车-路-交通等场景协同的闭环仿真平台[11]。用该仿真平台进行自动驾驶仿真测试,不但提高了测试效率,还可以实现人与车、车与路等交通参与者的实时交互,为应对更高级别的自动驾驶测试提供了切实有效的技术方向。
一个典型的驾驶模拟器仿真平台主要由4部分组成,如图3所示:驾驶模拟器座舱,实时仿真机,视觉图形发生器,多自由度运动平台。驾驶模拟器座舱为人车交互系统,包含电动转向模块,电子稳定控制模块,ECU模块。实时仿真机用来运行自动驾驶仿真软件、车辆动力学仿真软件。视觉图形发生器用于呈现驾驶状态的视觉效果,并在显示器上展示。同时,视觉发生器还建立了3D实时仿真环境,包括路面、护栏、交通参与者等。多自由度运动平台承载驾驶模拟器座舱,该平台可实现横向、纵向、垂直方向的摆动,这样可以模拟真实交通场景下的车辆动力学形态。驾驶模拟器仿真测试方法可以在安全高效的环境下,最大程度地考虑人的因素,这对于正处在上升阶段的自动驾驶技术意义重大。一方面,短期内的自动驾驶汽车在工作过程中随时需要接受人类驾驶员的接管,基于驾驶模拟器可以研究并优化接管过程的安全性。另一方面,未来很可能形成自动驾驶与人类驾驶混合交通的局面,因此,自动驾驶技术如何正确识别和适应人类驾驶行为,也是应该重点研究的一个问题,这也可以通过驾驶模拟器仿真实现人机交互测试。
图3 多自由度驾驶模拟器仿真平台
本文讨论了不同的自动驾驶测试方法的原理与特点,通过讨论发现,测试场景矩阵的方法可以构造典型的交通场景,但是场景的覆盖率较低,适合应用于项目开发早期或用于算法或子系统的验证。蒙特卡洛方法生成的交通场景具有随机性,但是场景覆盖率更高,若基于实车采集的数据用蒙特卡洛加速算法生成交通场景,虽不能覆盖所有交通场景,但和真实的场景更接近,且可以加快测试速度。运用多自由度驾驶模拟器集成平台测试,不仅可以进行自动驾驶系统的测试,还可以提供人-车-路系统协同的真实交通场景测试,为测试更高级别的自动驾驶车辆提供了未来的方向。