自动驾驶落地的困难茫茫多,其中一条就是如何对其进行测试,验证自动驾驶技术的安全性能。在此前,国外已经有机构通过研究提出,如果要证明自动驾驶能够比人类驾驶员更可靠,那么至少需要在真实或者模拟环境中行驶110亿英里才行。
如果真的按照这个思路去测试,那么这个任务几乎是不可能完成的。且不说行驶110亿英里需要花费的人力物力财力,就算完成了这个测试,黄花菜也就凉透了。更何况,那么多的企业要制造推出自动驾驶车,在企业的自我测试之外,政府还需要有一套标准的测试方式对其验证,如果这个标准测试方法也按照这个方式来进行,自动驾驶的到来就是遥遥无期。
鉴于此,来自密歇根大学机械工程学院,同时也隶属于Mcity的研究员,研究出了一套加快评测进程的方式。这套方式重点针对可能发生危险的状况,以及在这种情况下自动驾驶车辆的应对措施,进而对自动驾驶的可靠性进行评估。相较于传统的方式来说,能够加快速度,并且减少资金花费。
密歇根大学在本周发布了这套测试方法的白皮书。在白皮书中提到,两位提出方案的研究员(介绍见文章最后)的思路来自于汽车工业已经存在的方式。以汽车腐蚀测试为例,并不会将车辆放在真实环境中10年去验证是否会发生腐蚀,而是通过增加环境湿度、放到恶劣环境下(盐度大的道路、泥泞环境以及砂砾环境等)来进行测试。
在已有的针对自动驾驶测试的各类方法中,通过对特定时间进行建模、在恶劣或极端环境下进行测试都是已经考虑过的,但是现有的各类测试方法都难免存在各种无法应对的情况。以碰撞安全为例,现有的测试是基于车辆在碰撞发生时对车内乘客与行人的保护程度来进行评估的,而如果是针对自动驾驶车,实际上评估手段应该变为车辆是如何防止碰撞发生的。
原文用了一个比喻,如果传统的测试方式是医生给病人测试血压或者视力的话,那么自动驾驶的测试过程实际上可以对应为IQ测试。
传统汽车进行的安全碰撞测试
当然,会有人提到,现在在Euro-NCAP中已经加入了对AEB的测试,AEB也是要防止碰撞发生。前面提到,现有的测试方法是针对预设场景的测试,比如AEB,会设定前方有停止的车辆、匀速行驶的车辆或者正在减速的车辆,又或者是针对行人的。将现有的测试方法照搬到自动驾驶车中,会存在各种无法评估的情况,这一点,在报告中进行了总结:
-
在真实或者模拟环境中测试,数据最为真实,但是前面提到,需要耗费大量的时间、金钱与人力。
-
按照AEB的方式,预设场景进行测试,缺点在于现有的预设场景并不针对自动驾驶车,而是以人类驾驶员为准。这也是因为现有的量产技术中自动驾驶程度都在L2以下,依然是人类驾驶员为决策者,系统只是起到辅助的作用。
-
极端或恶劣场景测试,这种方式很容易测试车辆的下限与弱点,但是无法给出自动驾驶车在正常情况下的安全可靠性。而且,对于自动驾驶车来说,不同的自动驾驶系统有不同的策略,与他们而言,极端或者恶劣场景其实是不同的,因而也无法成为政府的标准化测试手段,更多是被企业采用,用于改进设计。
-
蒙特卡罗方法,这种方法源于美国在二战期间研制原子弹的曼哈顿计划,简单来说,使用数学方法来评估某件事情发生的频率,从而计算出他发生的概率。因为使用的是现实行驶的数据,意味着没有发生故障的行驶会被评估的次数更多,因而会降低测试的效率。
总结来说,要测试自动驾驶车,需要考虑到的问题是:
1.自动驾驶车个体的不同,即在应对危险或者意外时,会采取不同的测录
2.要尽可能在所有场景中,考虑不同的道路与驾驶环境、天气
3.在自动驾驶车的早期,将会是自动驾驶与人类驾驶员混行的状态,因而自动驾驶车与人类驾驶的车辆之间的交互也是必须考虑的
密歇根大学的两位研究员所采用的方式,核心思想是将真实驾驶环境分解成不同的场景,这些被分解的场景易于进行模拟和重复测试,在每一个特定的场景,按照他们的方法进行加速测试。为了研究加速测试的方式,研究员对驾驶数据进行了六步分析:
1.大量收集实际行驶过程中的数据
2.对数据进行过滤,保留下包含自动驾驶车与人类驾驶的车辆进行有价值的交互的数据
3.对人类驾驶行为进行建模,以此作为对自动驾驶车产生主要威胁,并且是概率分布的随机变量
4.减少日常驾驶中的没有发生事故的数据,然后用发生了危险事故的数据进行取代
5. 在加速场景下使用蒙特卡罗的算法,从而能够在人类驾驶员与自动驾驶车之间产生高频率高密度的相互
6. 使用统计分析的方式,根据测试的结果去反推,在实际情况中,自动驾驶车的表现情况。
在经过六步分析方法后,研究员们提供四种方法,作为加速测试进程的基础:
-
基于道路上发生一件与安全相关的关键事件的频率,刨除了安全驾驶的状态
-
使用重要抽样的方式来从统计上增加关键事件的发生次数,保证这些增加的事件依然能够正确反映真实环境中的驾驶条件
-
建立一个公式能够正确地提取出关键事件的数据,针对这些数据进行测试并用来进一步降低测试所需要的次数
-
在经过优化的随机事件中,对最复杂场景下的关键事件里人类驾驶员与自动驾驶车之间的交互数据进行分析。
目前,两位研究员针对两个场景进行测试:跟车、超车。在这两个状况中,被测试车辆都是处于后面的车,需要应对前方车辆的不同行为,而前方车辆默认是人类驾驶的。这两个场景选取于常见的发生事故的场景,在超车场景中,是由人类驾驶的车辆切入自动驾驶车前方,并且在自动驾驶车后方还有一辆人类驾驶的车。
在不同的场景中,会考虑发生事故的可能、事故带来的伤害以及交通冲突率,考虑时会设定自动驾驶中有1名或多名乘客,他们受到中等程度以上伤害的结果。评估结果的准确性由行为决定,并会将评估的结果与真实模拟的情况进行对比,来进行验证。
文件中提到,如果将以上四种方式在一个整体测试进程中结合使用,那么这套评估程序能够将测试时间减少300-10万倍。如果一辆自动驾驶车按照这种方式在最严苛与最具挑战性的驾驶状态中行驶1000英里,那么可以相当于在真实环境中行驶了30万—1千万英里。
据文件中介绍,未来,研究员还会增加更多的测试场景:包括左转、十字路口以及对向来车的情况。另外,还需要能够仅仅只有车辆的碰撞,以及包含行人与骑行者的情况。
需要看到的是,这套方式最依赖的同样是「数据」。为了保证准确性,需要大量的数据。目前,他们所使用的数据是密歇根大学交通运输研究院此前两个研究项目的数据。两个项目分别是「安全驾驶模型部署项目」与「基于智能汽车的安全系统项目」:前者中有超过2800辆车,于2012年8月到2014年6月之间进行数据收集,在接近4百万次行驶中有超过2500万英里、接近90万小时的行驶数据,并且车辆安装了通讯设备,能够与其他安装了设备的车辆和基础设施进行数据交互;后者则是由108名志愿者驾驶16辆乘用车行驶了6周,收集到了213309英里的数据。
所以,要完善这套测试方法的问题在于,现有的具备L4级别的自动驾驶车在真实环境中行驶的数据远远不够。
文件中提到,研究员们还需要更多的关键场景来对自动驾驶车可能出现的失效情况进行分析,比如像雨雪与大雾天气对传感器带来的挑战;闪烁的灯光以及来自其他驾驶员的手势;不符合交通规则的行为,闯红灯的车辆或者不按规则过马路的行人;重型车的驾驶行为,因为相比较乘用车重型车反应要慢等等。