去年,Uber 无人驾驶测试车酿成的致死事故对整个行业的发展造成了不小的负面影响,在资本市场不景气的情况下,明显能感觉到自动驾驶领域的投融资规模缩紧不少。美国国家运输安全委员会(National Transportation Safety Board,简称 NTSB)经过初步调查后指出,由于 Uber 禁用了自动驾驶车辆的紧急制动系统,从而导致悲剧发生。
一年多的时间过去了,NTSB 近日发布了一份新的报告(下载地址:http://1t.click/aXhd),称「碰撞发生的五秒钟之前,雷达已经探测到了行人 Elaine Herzberg。」但不幸的是,一系列的软件设计缺陷使得系统在撞向行人的前 0.2 秒才作出反应,但一切为时已晚,事故不可避免地发生了。
这次无人车撞人事件去年五月发生在亚利桑那州的坦佩市,NTSB 的初期调查显示,距碰撞发生还有 1.3 秒时,Uber 测试车辆的自动驾驶系统决定需要紧急制动提供辅助,但 Uber 却禁用了测试车辆(Volvo XC90)的该项功能。Uber 给出的理由是:当时车辆由车载计算机操控,这样做的目的是为了降低车辆出现难以预测行为的可能性。
很明显,Uber 自动驾驶测试车的硬件并没有出现问题,恰恰是设计存在缺陷的软件导致了这起致死事故的发生。在这份 NTSB 的新结案报告中,它探寻了 Uber 无人驾驶系统软件工作状态的详细信息,并解释了酿成事故的重要原因。
追悔莫及
和绝大多数公司开发的软件类似,Uber 的自动驾驶系统遵循的也是「感知-决策-控制」的流程,先通过外部传感器对识别的目标进行分类,继而通过计算平台决策出合理的行驶路线,最后执行输出的命令。只不过 Uber 的这套系统在坦佩市翻了个严重的错误。
NTSB 在报告中详细地给出了精确到秒的时间线,以说明 Uber 自动驾驶系统的软件在车辆不断靠近行人的过程中是如何思考的。当时 Elaine Herzberg 正推着自行车横穿一条多车道的马路,而她并没有遵守交通规则,沿着人行横道通过。
-- 距离碰撞还有 5.2 秒,系统将其判定为「其他」物体; -- 距离碰撞还有 4.2 秒,Elaine 被识别为「车辆」; -- 碰撞前 2.7~3.8 秒,系统对 Elaine 的识别结果在「车辆」和「其他」之前摇摆不定; -- 距离碰撞还有 2.6 秒,系统将 Elaine 和她的自行车识别为「自行车」; -- 距离碰撞 1.5 秒,Elaine 被系统识别为「未知」; -- 距离碰撞 1.2 秒,她又变成了「自行车」。
从这些描述中可以得到两点重要信息:
一、在任何时间节点,系统都没有将 Elaine Herzberg 判定为「行人」。NTSB 表示,「软件系统设计中并没有考虑到不守规则、横闯马路的行人。」 二、频繁更改对 Elaine Herzberg 识别的结果导致 Uber 的自动驾驶系统无法准确地计算出它的行驶轨迹,同时也没有意识到她处在与车辆碰撞的路线中。按理说,无人车在识别到有物体进入它的行驶路线之后,即便不确定这个物体是什么也应该主动进行刹车。然而 Uber 的软件设计逻辑并非如此。
在探测到目标物之后,系统通过物体之前的位置来推算出其速度以及可能的行动轨迹。「然而,假设感知系统对目标物的识别结果改变后,相应的对它行动轨迹的推测也会重新来过。」NTSB 报告指出。
所以实际来看,由于系统无法将 Elaine Herzberg 和她的自行车进行分类,因此假设其处于静止状态。这个结论从 NTSB 精确至秒的分析中也不难发现。
距离碰撞 4.2 秒~5.2 秒这个区间,Uber 的自动驾驶系统将 Elaine 识别为「车辆」并认为其是静止的,因此不会进入到车辆的行驶路线中。而很快系统又判定其正在移动,但会保持在其现有的车道内。可怕的是,当距离碰撞只有 2.6 秒的时候,系统才将其识别为「自行车」但依然认定其会保持在自己的车道内,这样的错误其实只要通过对比 Elaine 之前的位置数据就可以得到纠正。距离碰撞还有 1.5 秒,Elaine 开始变成「未知」,在机器的眼里她依然静止。
最后,碰撞发生前的 1.2 秒,在 Elaine 开始进入 Uber 测试车辆的行驶轨迹时,系统才意识到这场碰撞已「无法避免」。
躲不开的人祸?
在此前公布的行车记录仪视频中,肇事车辆的安全员当时视线并未看向前方,但当事人表示「自己并不是在玩手机,而是在监控自动驾驶系统的运行情况」。可能大家都存在这样的疑问:即便当时碰撞已经无法避免,但假设系统能够采取紧急刹车的措施,将车速降下来或许能够救回 Herzberg 女士一条命。不过这样的事情没有发生呢?
NTSB 这样解释道:「当自动驾驶系统监测到紧急情况时,它会立即执行相应的行动抑制(action suppression)。通常这个过程只有一秒钟,系统会及时发起刹车指令、重新计算规划其他可行的路线或者由随车的安全员进行相应的处理工作。」
但根据 Uber 方面提供的信息,距碰撞发生还有 1.3 秒时,Uber 测试车辆的自动驾驶系统决定需要紧急制动提供辅助,但 Uber 却禁用了测试车辆(Volvo XC90)的该项功能。它给出的理由是:当时车辆由车载计算机操控,这样做的目的是为了降低车辆因错误的警报出现难以预测行为的可能性。
所以,在距碰撞发生不足 1 秒时,驾驶员才试图操控方向盘来躲避行人,在碰撞发生后不到 1 秒的时间内才开始踩下刹车,但一切为时已晚。
据 NTSB 这份最终的调查报告称,即便已经错过了最后一秒钟可以挽回的时机,Uber 的自动驾驶系统也并没有用全力刹车。对一场本来就无法避免的车祸而言,系统到最后都没有尽全力采取措施,而此时车上的安全员也形同虚设,「安全」两个字倒显得有些讽刺。
2018 年,Business Insider 的记者 Julie Bort 在报道中曾对 Uber 为何执行如此的软件设计策略进行了分析和推测。她指出,「当时团队正在为 Uber 新上任的 CEO 达拉·科斯罗萨西准备试乘演示。高层要求工程师们设法改善之前出现的一些「不好的体验」。很快,Uber 就宣布禁用了车辆的自动紧急制动系统,保证了像急刹车或者急转向这种令乘坐者不适的现象再也不会出现。」
只不过急转向的功能最后又被重启,但自动紧急制动系统依然被禁用着,直到 2018 年 3 月那场致死车祸的发生。
Uber 的自动驾驶测试车队都是由沃尔沃 XC90 车型改装而成的,本身自带了精密的紧急制动系统。不幸的是,Uber 擅自决定在自动驾驶系统开启时将 XC90 的防碰撞功能关闭。其中一个原因,据 NTSB 透露称,是因为 Uber 安装的尚处于试验阶段的雷达传感器使用了和沃尔沃自带雷达相同的频率,有产生互相干扰的风险。
而自从事故发生后,Uber 已经重新对其后装的雷达系统进行了重新设计,以便在不同的频率能够保持正常工作。此外,Uber 也开始允许在测试其自动驾驶技术时,将沃尔沃本身自带的防碰撞系统设置于开启状态。
就软件设计存在的缺陷,Uber 也表示对其中不合理的地方进行了修正。首先,紧急事件发生时,刹车前不再设置一个「行为抑制」的缓冲时间;其次,进行目标物监测时,假设系统对目标物的分类发生变化时,不会将其过往的位置数据丢弃,试图从根本上杜绝这类事件的再次发生。
亡羊补牢
这其实并不是 Uber 无人车第一次闯祸。
根据 NTSB 提交的调查报告显示,在坦佩市发生撞人事件之前,2016 年 9 月至 2018 年 3 月之间,Uber 的自动驾驶测试车辆造成过 37 次碰撞,其中有两次是撞车事故。另外还有 25 起追尾,剩下 8 起则是剐蹭事故。在 NTSB 看来,一方面是自动驾驶软件系统设计存在缺陷,另一方面 Uber 并没有制定完备的安全计划。尽管该公司设有专门的安全团队,但缺乏安全指导文件且无安全运营部门。Uber 承认其在这次严重人身事故发生前并没有制备完善的安全计划,直到 2018 年 11 月才发布了第一份安全报告。
前不久,Uber 成立了自动驾驶安全与责任咨询委员会(SARA),关注这项技术在面向大众过程中产生的潜在危险。此外,今年 7 月中旬,Uber 还公布了业界第一个自动驾驶汽车安全框架,涵盖了自动驾驶系统测试以及功能安全等在内的多个安全环节,通过折叠框架图的形式展现出 Uber 在车辆安全测试上的细节。
事故之后,Uber 或许对自动驾驶有了新的思考,而无论是自身安全机制的持续改善还是增设外部审查机构避免矫枉过正,这些近似亡羊补牢之举对整个行业朝着正确的方向推进,大有裨益。
2018 年底,Uber 自动驾驶测试重启。在一篇官方发布的博客文章里,Uber 高级技术部门(Advanced Technology Group,简称 ATG)埃里克·梅霍夫(Eric Meyhofer)详细介绍了 Uber 新实施的安全保障措施,例如针对安全手动驾驶和监控系统的培训计划,该系统可在驾驶员将视线移开道路时发出提醒。「我们花了几个月的时间在封闭道路上测试,并完成了漫长的内部审查。」梅霍夫强调称。
Waymo 自动驾驶测试正逐步进入真正「无人」阶段,无疑它同样面临着很大的安全风险。而进行到这个阶段,技术已经不再是桎梏自动驾驶迈向商业化量产的单一因素,技术之外似乎要更关注有关「人」的问题。强调安全怎么都不为过。
责任编辑:王训魁
题图来源:WIRED