图1.自动驾驶是一个日新月异的行业
而后 2018 年初发生了一场悲剧。由于许多人被每天烧掉数百万美元的大肆宣传所蒙蔽,这让他们始料未及。一辆优步用于进行自动驾车测试的车辆(将其称为“自动驾驶车辆”并不准确,这是因为目前还没有这种车辆,我们在街道上看到的只不过是“测试平台”而已)在亚利桑那州撞到了一名正在过马路的女子,致其死亡。
来自公众的反应迅速而强烈,不仅仅是优步,所有的自动驾驶项目都受到了质疑(在接下来的两周内,NVIDIA 损失了 10% 的市值)。华盛顿邮报发表了一篇题为“致命的优步车祸引发关于无人驾驶车辆监管的争论”的文章 [1],而卫报的文章标题则为“优步车祸见证自动驾驶技术的灾难性失败”[2]。
我们应该从这场事故中汲取什么教训呢?一位 linkedIn 用户的说法最有代表性:“在道路上对不合要求的测试版软件进行测试完全让人无法接受。这不是一个有好几条命的在线游戏”。
要想实现自动驾驶车辆的功能性和安全性,需要进行数百万次测试才能涵盖所有的驾驶场景,如果不在虚拟世界中广泛采用(达到工程史上前所未有程度的)仿真,根本无法接近这一目标。仅仅(或基本上)试图通过路测就想实现 5 级自动驾驶,有如妄想煮沸大海一样徒劳无功。
图2.对行驶在中国北京公路上的自动驾驶车辆进行仿真,采用 VIRES VTD进行仿真。
图3.端到端自动驾驶仿真工作流程
作为工程师,我们来做一些基本的数学计算。根据美国交通事故报告[3],从统计数据来看,每行驶1.4亿公里就会致使一人在路上遇难。因此,要想从统计上证明(95%置信度)自动驾驶车辆能做到与人类驾驶员一样优秀,就必须经过4.15亿公里的测试而不会造成任何死亡[4]。
许多自动驾驶技术的狂热支持者声称“自动驾驶车辆能让路上死亡人数减少到原先的二十分之一”[5]。但这只是一个极为大胆的见解,无论它听起来多么诱人,都需要经过证明才能被公众认可。毕竟我们是科学工作者,我们相信数据。
用来证明自动驾驶车辆的表现与人类驾驶员“一样优秀”所需的数据为 4.15 亿公里。谁敢说自己的系统能好上 20 倍?为了从统计学上证明这一点,请向我们展示经过 80 亿公里测试后的结果!
顺便说一句,每当有人修改单个传感器的位置时,就必须重新启动计数器!每当改变一些车辆特性(例如轴距、质量…)时,也必须重新启动计数器。每当更新一个软件时…计数器也必须重新启动!
还会有人相信路测就相当于完全自动驾驶吗?谁还会认为累计 100 万公里的路测是一个值得庆祝的目标?
我们以 Waymo 为例(给少数不了解它的人解释一下,它是谷歌的“自动驾驶子公司”,被视为该领域的领军者)。假设 10 年后这些车辆已经积累了 1600 万公里的道路数据(这确实是个了不起的成就,尽管其中的大部分都是在加州和亚利桑那州晴朗的日子里积累的);按照这个速度,这家全球最有钱的公司需要 200 多年的时间才能证明这些车辆“与人类驾驶员一样优秀”。这就是除路测以外 Waymo 还要全天候运行 25,000 辆虚拟车辆、每天仿真行驶 1300 万公里的原因[6]。“实际上,计算机仿真的价值更高,它们能让制造商以远远超出路测的的条件和压力对其软件进行测试,而这些在测试跑道上是难以实现的。”谷歌自动驾驶汽车项目安全总监 Ron Medford 如是说。
每个人都了解路测的必要性,但同时我们还应当注意到它存在明显的不足。如果过早地进行路测,不仅速度慢而且存在潜在的危险性。此外,路测还不具备可重复性或可控性,而这些对自动驾驶系统的开发是必不可少的。
为解决这些问题,工程师会倾向于利用可重复性要高得多的试验场。此外,还可以在实际车辆上对真实的传感器进行评估。然而,试验场的一个劣势在于工程师可进行测试的场景数量有限。每个试验场通常会包含一系列场景,一般来说,在试验场内修建/搭建新场景不仅速度缓慢而且成本高昂。
现在我们考察一下仿真或虚拟测试。在我看来,对于自动驾驶系统的开发,有一些关键原因使得仿真比路测或试验场更为适用,尤其是在项目的初期。
首先,虚拟测试在成本方面更具可伸缩性。一辆装备齐全的自动驾驶车辆可能耗资高达 50 万美元,因此一个拥有 200 辆汽车的车队意味着对硬件本身(车辆、传感器、数据存储、布线…)的投入就需要 1 亿美元。
相比之下,对虚拟测试进行扩充,只需拥有相应的软件许可和 CPU/GPU 就可以进行仿真,这通常要便宜 100 倍。更不用说管理如此庞大的车队(驾驶员、保险、车间、维修…)所需的运营成本。作为这一可扩展性示例,宝马公司近期宣布推出了自己的新款高性能集群,它配备了超过 100,000 个内核、200 多个 GPU,专门用于开发自动驾驶车辆 [7]。
其次,虚拟测试可以随时获得地面实况。在虚拟环境中,您必然知道前方是行人还是汽车,无需雇用服务公司对测试中采集到的道路数据进行注释/标注。对于需要验证自动驾驶系统的 10 亿英里道路数据,全部用人工完成注释根本不可行。
第三,借助仿真,工程师能够在设计阶段初期对控制器软件的功能进行测试。可通过模型在环仿真分别测试软件的各种功能,而无需等待整个控制系统完成。由于可根据需要任意回放虚拟场景,因此能够更加方便地分析、调试或迭代核心算法,且成本更低,无需考虑实际产品软件的细微差别。
最后且重要的是,通过虚拟测试创建各种情况的排列组合会更加方便。工程师可使用不同的参数集轻松地重复相同的测试,例如更多的行人、更高的速度、更差的传感器能见度、更低的道路摩擦等。用多个参数对几个基本场景进行排列组合,可创建出数千个场景。这是确保驾驶算法稳健性和可靠性的关键。
在某种意义上,自动驾驶车辆(AV)仿真不同于传统的车辆仿真,除车辆本身以外,车辆运行的“环境”在评估其应对所有驾驶状况的方式时也是不可或缺的。自动驾驶的“环境”相当丰富(有时甚至是拥挤),包括所有其他车辆、行人、动物,当然也包括道路、人行道、建筑物乃至气候条件。让我们仔细研究一下这些组成部分。
首先,工程师需要一个能代表与真实车辆具有相同动力学特性的车辆模型。在训练人工智能控制器驾驶真实车辆时,车辆模型不仅要具备正确的质量和发动机功率,还要具备其他的正确反应,例如制动效率或者转弯期间的负载转移。基本的悬架设计(减震器、防侧倾杆…)和轮胎—道路的相互作用都会显著影响所有这些性能。
除车辆模型以外,还需要仔细构建 3D 环境。3D 环境包括公路网,它定义了车辆可占据的空间,以及车辆占据每条车道的时间和方式。除了道路本身,紧挨道路的周围环境同样重要。树木和灌木丛会遮挡观察交通标志的视线,人行道上的行人可能会突然决定横穿马路,街道一侧的建筑物也可能会在道路上投下阴影或降低 GPS 的精度。必须对所有这些要素进行细致逼真的建模,从而正确地设置动作发生的场景。
当然,自动驾驶车辆会与其他车辆共用道路,其他车辆可以是自行车、摩托车、汽车、公共汽车、带拖车的卡车、平衡车、骑马的警察或者其他任何事物。在这种情况下,应包括允许在路上行驶的一切。这些参与者中的任何一个都可能以自己的方式与其他行驶车辆相互影响。例如,在交通阻塞期间摩托车会插入车道内,大型卡车由于加速缓慢而很容易造成堵车,骑车人也可能因为要左转弯而决定从人行道移动到道路中间。重要的是,要体现出所有这些交通参与者自身所特有的机动方式。
同样也需要对行人及其行为进行建模,尤其是他们与对向行驶车辆之间的相互影响方式。工程师需要还原行人的姿态,例如,当他们横穿马路在电话上发短信而分心时,他们是否会观察交通状况。动物的行为可能更加难以预料,比如在车辆前方无规律地跳跃,堵塞在道路中间,或者在车辆驶来时盯着看。
环境仿真需要考虑的最后一个重要因素是天气和照明,由于它会影响传感器感知场景的方式,因此至关重要。外面下雨时,由于驾驶员的视野和道路摩擦力已经发生改变,因此车辆需要减速。在日落或日出时,由于太阳高度较低,因此人类驾驶员需要佩戴太阳镜,否则无法真正看清道路。同样地,这些情况也会影响到摄像头、雷达或激光雷达等传感器。雾会降低摄像头的能见度(并吸收雷达能量),而雨滴会使激光束发生散射,因此激光雷达对其更加敏感。
图4.对打手机横穿道路的行人进行仿真,采用VIRES VTD进行仿真。
图5. 对夜间行驶的车辆进行仿真,采用 VIRES VTD进行仿真。
实际上,感知到的传感器数据是自动驾驶车辆仿真所能提供的最宝贵的信息。有了这些准确可用的数据,工程师就可以专注于自动驾驶开发的后续阶段。
第一步是所谓的“传感器融合”阶段,将来自不同传感器的数据组合在一起,以便计算出准确的位置和方位信息。通过摄像头识别目标,当激光点云与目标关联后,就可以由激光雷达测出与目标之间的距离。雷达甚至能给出目标的速度。
一旦工程师已经清楚地了解了己方车辆周围的环境,就可以进入下一个阶段,该阶段通常称为“路径规划”。掌握了交通场景中的行人和其他车辆的情况后,工程师需要预测其他的交通参与者有可能在接下来不足一秒到几秒的时间里会做些什么。实质上,车辆需要在此时决定采取哪些行为才能最为安全地应对这种情况。
即便借助于传感器融合,有时 AV(自动驾驶车辆)仍然不能 100% 地理解这种情况。如果车辆在阳光明媚的公路上行驶,那么所有的传感器都会给出正确的信息,而且能清晰地看到车辆前方很远的距离。但可以想见,如果雾天高峰时段自动驾驶车辆在纽约拥挤的街道上行驶,你并不总是能分清楚前方有两个行人还是三个行人。车辆在决定要走哪条路径时,不仅要考虑目的地,还要考虑最安全的抵达路线。
找到最安全的路径后,就要决定如何操控车辆,这意味着如何控制油门、制动器和方向盘来沿着该路径行驶,或者如何调整悬架系统中的减振器来确保乘坐平稳性。这就是所谓的“操控阶段”,也是精通地面车辆控制理论的专业工程师大显身手之处。
在虚拟仿真工作流程中,所有这些信息都会作为闭环反馈提供给车辆动力学模型。车辆模型会根据含有扭矩/作用力的输入值来预测其调整之后的位移、速度及方位,从而与周围环境进行互动(包括对向行驶车辆或者可能突然横穿马路的行人),同时仿真环路继续工作。
VIRES 虚拟试驾(VTD)为工程师提供了进行自动驾驶仿真所需的所有要素,同时,VTD 不仅兼容 MSC 软件的内部技术,而且兼容许多第三方软件。
举例来说,VTD 不仅提供了两种不同的用来表征车辆动力学的嵌入式技术(具有不同的仿真速度和结果准确度),还能与 Adams Car(车辆动力学仿真的事实标准)或其他任何车辆动力学软件共同使用。VTD 的交通模型也毫不逊色:VTD 具备业内最全面的交通仿真能力(可根据多个参数来设置每辆车的驾驶风格,必要时可同时仿真数千辆车);但也可以将其他交通模型整合到 VTD 中,例如 SUMO [8] 或 PTV Vissim [9]。
自动驾驶是未来十年最为激动人心又令人望而却步的任务之一。仅仅依靠路测永远无法接近用来确保自动驾驶车辆安全所需的十亿英里的验证目标。为开发出能够真正挽救成千上万条性命的自动驾驶系统,对现实世界进行全面仿真是开启成功之门的关键所在。
参考文献
1.华盛顿邮报,https://www.washingtonpost.com/local/ trafficandcommuting/deadly-driverless-uber-crash-spurs-debateon-role-of-regulation/2018/03/23/2574b49a-2ed6-11e8-8688-e053ba58f1e4_story.html?utm_term=.d8bf81d9de6d
2.卫报,https://www.theguardian.com/technology/2018/ mar/22/self-driving-car-uber-death-woman-failure-fatal-crash-arizona
3.美国国家公路交通安全管理局,https://crashstats.nhtsa.dot.gov/Api/Public/ ViewPublication/812603
4.美国兰德公司,https://www.rand.org/content/dam/rand/pubs/ research_reports/RR1400/RR1478/RAND_RR1478.pdf
5.假定 95% 的交通事故死亡因人为过错所致
6.https://waymo.com/safety/
7.https://www.press.bmwgroup.com/global/article/detail/ T0293764EN/the-new-bmw-group-high-performance-d3-platformdata- driven-development-for-autonomous-driving?language=en
8.SUMO 是一个开源交通模型,由德国宇航中心原创。更多信息请访问 https://sumo.dlr.de/index.html
9.已在 VTD 2019.1 中加入此功能。http://vision-traffic. ptvgroup.com/en-us/products/ptv-vissim/