随着自动驾驶技术的发展,自动驾驶仿真的重要性越来越大。一是体现在上路之前可以通过仿真进行初步验证,二是体现在路上遇到问题时,可以通过仿真进行数据回放,改善算法模块性能。
平时常见的自动驾驶仿真主要是利用软件搭载测试场景,然而,随着data-driven技术的发展,如何利用庞大的道路数据提高仿真性能,成为一个有意思的话题。这两天读到一篇文章,分享一下。原文出处为国外一家公司官网,链接:使用重新模拟来验证 AV 堆栈以防脱离。
先简单介绍一下背景。
在早期测试期间,高级驾驶辅助系统 (ADAS) 和自动驾驶汽车 (AV) 工程团队主要使用联合仿真来测试他们的自动驾驶系统。随着 ADAS 和 AV 系统的成熟,需要更多的道路测试来验证车辆(自我)是否能够安全地处理在其操作设计域 (ODD) 中可能发生的大量可能事件。
平均接管率(自动驾驶汽车行驶一段距离平均接管的次数)通常作为一个评判性能的指标,但是当遇到危险情况,安全员接管车辆后,这个问题不能就这么过去了。因为安全员是凭借自我主观意识判断当前路况比较危险且需要接管,如果这个安全员比较保守,就有可能在算法做出决策前进行干预,所以就需要将这个事件进行回放,观察算法的实际表现情况,进而进行算法升级。
在道路测试期间,自我可能会遇到脱离(即,安全驾驶员脱离系统并接管车辆控制的事件)。ADAS 和 AV 工程师通常使用开环日志回放工具来回放脱离事件,了解安全驾驶员干预的原因,并在下一步道路测试之前修复感知、PNC等算法模块的问题。然而,开环日志回放工具无法确定是否真的需要接管,原因是如果安全驾驶员没有干预,自动驾驶车辆有可能也能够避免碰撞。除此之外,他们也无法显示变化的参数(例如,道路上的行人或由于不同天气条件导致的能见度降低)如何影响自动驾驶汽车性能。
接下来讲述如何利用数据回放和re-simulation来区分必要和非必要接管。原文表达略有晦涩,我做了简单调整。
一、开环日志回放(log-replay)&#x