通往2.4亿虚拟公里的道路:BMW 与Unity的自动驾驶之旅

宝马的自动驾驶(AD)技术在投入量产之前,需要虚拟行驶2.4亿公里。了解Unity如何帮助宝马每天增加里程数。在 我们的第一篇文章中,我们介绍了 宝马全自动驾驶和驾驶辅助系统 团队如何使用Unity开发用于模拟可视化和场景创建的自定义工具。凭借这些工具,宝马集团能够很好地应对 AD 开发中最艰巨的日常挑战。让我们来看看Unity提供重大帮助的几个领域。



通过将模拟与关键绩效指标(例如,持续与交通车辆保持安全距离)相结合,宝马可以评估其功能的实际完整性。随着 AD 功能的各个组件掌握基本场景,宝马可以在更复杂的情况下对整个 AD 系统进行大规模验证。
这些测试有多种形式:
- 小规模特征测试 ——这些测试是最常见的测试类型,它们使宝马能够快速评估其 AD 系统的各个部分,例如车辆轨迹规划。通常情况下,宝马团队每天会记录数万公里的虚拟里程,其中大部分都是短距离测试(从几百米到 1 公里),间隔不到一分钟。
- 大规模系统测试 ——这种类型的模拟不是针对特定功能进行一系列小型测试,而是旨在测试更广泛的 AD 系统。它以可以运行数小时的扩展场景形式呈现,并力求复制现实世界的场景;例如,德国城市慕尼黑和斯图加特之间的高速公路旅行。这些模拟更加复杂,通常涉及一个虚拟世界,其中包含移动车辆、行人和多变的天气条件,以及地图数据、作为感知算法输入的传感器模型、车辆轨迹规划、车辆动力学等等。
由于驾驶情况可以在模拟中根据需要重复,因此宝马每天都会进行测试,包括“夜间驾驶”。在使用基于 Unity 的场景编辑器设置测试后,开发人员可以在第二天早上查看结果,利用分析来准确查明功能失败的时间,并在Unity渲染的帧中调出准确的故障点。团队可以自动将这些问题情况提取为小规模场景,然后将其可视化,以更好地理解情况出现问题的原因。
例如,在这种情况下,一辆交通车辆突然切入,但主车没有立即减速,导致了险些发生事故。每次增量代码更新后都可以重播该场景,直到 AD 功能正确响应。
在这种情况下,最初出现故障后,改进可确保该车辆在有交通车辆突然并入其车道时能够正确制动。

为了使车辆达到较高的自动化水平,宝马的开发人员需要尽可能多地识别其 AD 功能的局限性。然而,下面视频中模拟的场景成本太高、难度太大或太危险,无法在现实世界中复制。
使用基于 Unity 的场景编辑器,开发人员可以设计边缘情况,例如交通车辆闯过停车标志。在虚拟世界的范围内发现这些极端情况更加经济高效且安全,同时还能提供可重复测试的机会。
宝马使用模拟来测试在现实驾驶环境中不太可能发生或风险太大的场景。这里显示了三种边缘情况:1) 在高速公路上,行人意外出现在本车车道上; 2) 交通车辆突然切入; 3) 在本车车道上停下的车辆。
Unity每天都用于帮助宝马集团的 1,800 名 AD 开发人员不断改进他们各自负责的代码。当他们对代码库进行更改以添加新功能或改进现有功能时,他们会在合并到主代码之前运行集成测试。
例如,专注于感知的开发人员可以使用基于 Unity 的场景编辑器设计车辆通过限速标志的多种场景。这些小规模测试在开发人员的电脑上进行模拟,并在运行时通过Unity live 进行可视化。
开发人员可以直观地验证他们的结果,并使用评估指标来确定改进或确认该功能已准备好合并到主功能中(即,车辆每次都会调整到发布的限制)。
开发人员可以同时测试并可视化其增量代码更新的结果。合并后,他们可以运行验收测试来识别由于他们的提交而导致的其他功能故障,反之亦然。例如,来自同行的合并可能会引入影响限速标志感知的错误。开发人员可以使用Unity进行可视化调试并轻松检查正在发生的事情,以便更快地解决问题。宝马的系统设置方式是,开发人员可以在驾驶功能和模拟代码中设置断点。AD 功能和模拟始终保持同步,因此团队可以逐行调试代码,并在调试时在两个世界之间切换。可视化也反映了同步性,允许同时检查代码和模拟世界。由于开发人员仍然可以在基于 Unity 的应用程序中移动和检查值,因此他们可以减少需要同时打开的工具数量,同时仍保持数据尽可能透明。所有这些要素确保最终为宝马自动驾驶汽车提供动力的生产代码符合其安全性和可靠性标准。
---
查看 Unity Industrial Collection 或在我们的白皮书中了解有关Unity用于 AD 模拟的更多信息:实时3D彻底改变汽车产品生命周期的五大方式。