自动驾驶汽车如何进行仿真测试,实际效果如果?
扫描二维码
随时随地手机看文章
说到仿真测试大家可能会觉得陌生,不过其原理其实已经被广泛采用。比如某人想要开车从北京去上海,但是不知道需要多长时间,于是他做了这样的估算:
北京到上海距离s=1200km,开车时速v=120km/h,那么需要的时间为t=s/v=10h;考虑到不是全程高速、中间可能会休息,假设平均时速v’=80km/h会更合理,于是需要的时间为t=s/v’=15h。
通过这个例子,我们可以体会到两点:
仿真即是通过一组公式模仿真实世界,或者说使用一个数学模型简化替代真实世界;
数学模型的复杂度越高,计算结果与真实世界越相近,但是建模难度越高、计算速度越慢。
1.2、自动驾驶汽车的仿真测试的不同手段
我们首先考虑真实世界的情况,自动驾驶汽车在开放道路进行测试时,可以用下图来表示:
自动驾驶车辆主要由传感器、控制器和执行器构成(当然这主要是指自动驾驶部分,车身、底盘等传统车辆部分暂且不提),驾驶员驾驶车辆在不同的道路、交通和天气环境下接受测试。当然高级别的自动驾驶不需要驾驶员,所以图中用虚线表示。
自动驾驶汽车在真正商业化应用前,需要经历大量的道路测试才能达到商用要求。采用路测来优化自动驾驶算法耗费的时间和成本太高,且开放道路测试仍受到法规限制,极端交通条件和场景复现困难,测试安全存在隐患。
因此,基于场景库的仿真测试是解决自动驾驶研发测试挑战的主要路线。自动驾驶系统测试不同于传统的汽车整车或零部件试验,更多的是参照软件开发和测试的模型和流程。V模型是广泛在软件开发和测试中使用流程,V模型要求在开发团队进行不同阶段的开发同时,测试团队编制对应的测试用例,并在开发阶段完成后立即进行测试。这就要求在集成测试、系统测试等暂无完整产品样件的情况下,就开始进行测试。
在自动驾驶系统的开发过程中,越早发现问题则修正问题的成本越低。在开发的早期,就建立起测试验证的手段,快速高效的发现和解决开发过程中的问题,可以有效减低开发成本、提高开发效率。
自动驾驶车辆的自动驾驶部分主要由传感器、控制器和执行器构成,驾驶员驾驶车辆在不同的道路、交通和天气环境下接受测试。仿真测试就是模拟真实的驾驶环境进行测试,因此会对照真实世界,搭建模拟场景,也就是仿真测试平台,一般由交通场景模块、传感器模块、车辆动力学模块和测试管理模块构成。如下图所示:
交通场景模块用于模拟车辆运行的外部世界;传感器模块用于模拟车辆上安装的各种传感器,从而获得交通场景的状态;车辆动力学模块用于模拟车辆本身对自动驾驶算法控制的响应,特别是对加速、制动和转向的响应。测试管理模块,负责对以上三个部分组成的仿真测试环境的管理,保证仿真测试的效果和效率。一方面,对测试流程进行管理,另一方面,对测试数据进行管理。
2.自动驾驶仿真测试流程
完整的自动驾驶仿真测试可以分为仿真工具开发、仿真工具集成、测试场景开发和仿真测试执行等工作。
仿真工具开发
由于仿真工具开发难度较大,且模块的功能有较明显分隔,目前仿真工具一般由多家公司提供。比如VTD、PreScan是常用的场景和传感器模仿真软件,CarSim是常用的车辆动力学仿真软件,ECU-TEST是常用的测试管理工具。
仿真工具集成
仿真工具集成包含两个方面的工作:(1)根据测试需要选择合适的测试工具并将其集成为完整的仿真测试环境;(2)将被测算法与仿真测试环境集成,实现闭环测试。
测试场景开发
测试场景开发工作的一个关键问题是:如何保证仿真测试的场景覆盖度?这需要针对自动驾驶算法的设计运行域详细而系统的进行测试场景的设计。充分考虑道路、周围车辆的位置和运动、传感器感知局限和自车状态等等不同方面的影响。在场景设计完成后,需要在仿真环境下搭建。
仿真测试执行
仿真测试执行包含两个方面的工作:(1)对测试场景库的维护和针对不同算法或功能合适的测试场景进行运行测试;(2)在测试完成后,整理并提供清晰的测试报告,并提供测试结果的统计数据,为算法团队的改进提供有效支撑。
3.自动驾驶仿真测试方法
基于模型的设计方法的不同阶段,分别采用MIL/SIL/PIL/HIL(MIL,Modelin the Loop:模型在环测试;SIL,Softwarein the Loop:软件在环测试;PIL,Processorin the Loop:处理器在环测试;HIL,Hardwarein the Loop:硬件在环测试)等测试方法,有效的对嵌入式代码进行测试和验证。如果被测对象仅仅是开发阶段的算法,那只使用MIL/SIL就可以;如果被测对象是要在实车使用的控制器,那可能需要一套HIL设备提前进行测试、提前发现问题。仿真测试常用的工具有的CarSim、CarMaker、VTD和PreScan等等。
虚拟仿真技术是汽车研发、制造、验证测试等环节不可缺少的技术手段,可以极大缩短技术和产品的开发周期,有效降低研发成本。随着汽车网联化、智能化的加速发展,虚拟仿真技术有了更大的发挥空间,越来越多的数字化、网联化功能得以开发,自动驾驶系统的仿真测试技术便是其中之一。
传统的汽车仿真测试以车辆动力学仿真测试为主,模拟车辆对驾驶员、道路表面信息以及空气动力学输入的响应。而现在我们谈论的“自动驾驶仿真测试”则将仿真范围扩大到车辆传感器所能探测到的周边一切行驶环境,包括:道路表面、交通标志牌、红绿灯、交通参与者及参与者行为、天气情况和路面光照等各种情况。
总的来说,自动驾驶仿真测试主要是以数字建模的方式构建出与真实世界尽可能一致的车辆行驶场景,让自动驾驶系统在一系列仿真的场景库中实现驾驶感知、决策规划、控制等算法的闭环测试验证
自动驾驶虚拟仿真测试按照开发流程和测试方式可以分为:模型在环(MIL)、软件在环(SIL)、硬件在环(HIL)和实车在环(VIL)/驾驶员在环(DIL)。
1)模型在环(Model-in-the-loop,简称MIL)
在自动驾驶系统研发初期,需要对所建立的算法模型进行仿真测试,并根据测试结果的反馈不断优化模型设计。在这一阶段,不涉及任何实际要素,全部在虚拟的电子世界中进行。
2)软件在环(Software-in-the-loop,简称SIL)
在完成模型在环测试后,需要将算法模型转换为代码。软件在环测试就是将生成的代码和算法模型进行对比测试,以保证输出结果的一致性。
3)硬件在环(Hardware-in-the-loop,简称HIL)
硬件在环阶段的测试对象是汽车各零部件的控制器系统,通过将实际的零部件控制器与仿真硬件模拟出的被控对象相连,以高效率、低成本的方式对控制器的功能进行全面的、动态的测试。
4)实车在环(Vehicle-in-the-loop,简称VIL)
将通过硬件在环测试的各零部件系统集成到真实车辆中,并通过仿真平台实时模拟道路、交通场景以及传感器环境,让真实车辆在仿真环境中完成整车级功能安全测试。近日,软件所软件工程中心自动驾驶测试团队在自动驾驶系统安全性违规检测方面取得进展。该研究提出了基于多目标遗传算法的自动驾驶系统仿真测试方法,能够有效生成对自动驾驶系统的挑战场景,暴露自动驾驶系统的安全性缺陷,并支持对自动驾驶系统的连续、长距离测试,提高仿真测试执行效率。
自动驾驶系统是高度复杂的软硬件系统,其所处的运行环境高度复杂且多变,会面临许多无法预见的情况,系统安全性尤为重要。目前的自动驾驶仿真测试方法存在搜索成本高、测试效率低,生成场景挑战性不足、相似度高等问题,难以对自动驾驶系统进行充分全面的测试。
针对此问题,团队提出一种基于多目标遗传算法的自动驾驶仿真测试方法MOSAT,首先基于原子性的驾驶行为(如跟车、变道、加/减速),构建对自动驾驶系统具有强干扰性的复合行为;然后采用多目标遗传算法,综合考虑自动驾驶车辆的扰动程度、预计碰撞时间、场景多样性三个目标,选择关键度高的测试场景进行变异,生成更多对抗性强、多样性高的测试场景;最后通过时空持续的仿真行驶环境,交替执行多个搜索进程,支持对自动驾驶系统的连续、长距离测试。MOSAT在L4级自动驾驶系统百度Apollo中发现了11种不同类型的安全违规行为,较之现有的自动驾驶仿真测试方法,在相同的道路和行驶条件下,多发现了6种类型的安全违规行为;场景生成与运行的时间消耗、和发现的安全性违规场景的差异度,也显著优于现有的自动驾驶仿真测试方法。
相关成果以“MOSAT: Finding Safety Violations of Autonomous Driving Systems Using Multi-Objective Genetic Algorithm”为题被软件工程领域顶级学术会议ESEC/FSE 2022录用。该论文第一作者为博士生田浩翔,通讯作者为研究员吴国全、叶丹。该研究获国家重点研发计划、国家自然科学基金等项目支持。