自动驾驶仿真的挑战

当前已经有越来越多的组织机构认识到自动驾驶仿真的重要性。但想让仿真充分发挥价值,依然面临着许多挑战。解决其中的大部分挑战也构成了自动驾驶仿真工程师的日常工作。

Reality gap

Gap1:仿真对物理现实的表现是不充分的。举个典型例子,在针对感知系统进行测试时表现得尤为明显,是否需要保证渲染图像/点云和现实世界的高度一致性?由仿真合成的图像/点云等用于训练对应的自动驾驶系统是否能有效提高性能?

保持高度一致性需要非常高的成本。为了规避较高成本,目前也有一部分相关研究工作。典型的如百度的AADS(虚实结合)、谷歌的SurfelGAN(以GAN为代表的一系列工作)等。

Gap2:考虑所有相关的物理现象很有挑战性。举部分典型例子,简单车辆模型如果没有包含轮胎模型,在较高速度下如何考虑转向以及加减速等行为?如何建模随机过程(如信号噪声)并将这些模型作为一个整体集成到仿真中?如何将V2X仿真与物理地形仿真集成在一起?

解决这些问题,要开源节流。例如,感知渲染做不好,从工程的角度,可以考虑把仿真重心放在决策规划和控制上,而感知测试的重心可暂时放在回放型仿真上,这算节流。或者仿真工程师可在已有的gap下,通过数据处理分析,以及一些交叉验证手段来覆盖掉gap,这算开源

总的来说,若系统在仿真环境和实际运行环境之间的表现差异太大,必须仔细分析造成差异的关键矛盾。如果该矛盾在短期内因为客观原因不能解决,则需果断调整重心。仿真非常有用,但不是测试过程的万能药,为了仿真而仿真是没什么意义的。

Complexity & Lack & Business

复杂性表征在两个方面。其一,自动驾驶软件本身的多样性;其二,单个仿真软件的功能复杂性以及针对特定系统和特定软件开发仿真接口的复杂性

当前的自动驾驶仿真软件确实很多了。VTD、Prescan、51Simone、Panosim、CARLA、Airsim、Lgsvl、DeepDrive、Carsim、CarMaker、rFPro;甚至Matlab/Simulink、GTA-5、Gazebo都可用于自动驾驶仿真。每个仿真软件都有自己的优缺点,如果面对具体测试需求不断切换要使用的模拟器,无疑会增加很多学习成本。此外,面向同一被测系统,针对不同自动驾驶仿真软件,往往需要开发不同的仿真接口,这也需要较高的时间成本。如此之多的仿真套件也不利于工程师日常维护,进而在开展工程级别的大规模仿真测试会有较多掣肘。

如果有一款足够完美的自动驾驶仿真软件是不是就一劳永逸了呢?话虽如此,但实际情况没这么简单。

首先,从功能来说,目前很难说有一款公认的足够完美的自动驾驶仿真软件。大部分软件都还不能同时支持以下列举的全部功能:

  1. 由于可能破坏物理引擎的稳定性无法提供高于实时的模拟速度;
  2. 不支持高效的无GUI运行(headless execution)模式进而影响自动化测试等;
  3. 建模基于复杂多维真实交通行为的动态场景时需要较高数据成本以及专业知识;
  4. 构建大规模真实、异构静态场景时需要较高时间成本;
  5. 适配多种场景语言(或者说,将场景编码为场景语言)时,需要较高的时间成本;
  6. 不支持多agent联合仿真以及跨多台机器仿真会话有效分发;
  7. 不支持大规模场景(整个市区级)(此需求合理性有待讨论);
  8. 其他待补充

不可否认,对有些自动驾驶仿真领域的深耕玩家而言,以上功能都已直接间接得开发成熟。但在实际进行研发时,还必须考虑软件使用的经济成本、所用数据安全性、仿真与基础架构的契合度(与数据闭环的契合度)。

因此部分机构还是会去独立开发完善一个仿真系统。此时,以上提到的相应功能开发也正是自动驾驶仿真工程师可能的部分日常工作。

Reproducibility

可复现性,某种角度上也叫仿真结果的确定性,包括两个方面,由仿真到现实的可复现性和仿真本身的可复现性。需要注意的是,前者是可复现性的重点和难点,需要通过精心处理Reality gap 解决,这里只是说说相对容易被忽略的后者。

MIL、SIL、HIL、VIL,无论是哪种仿真系统,仿真结果都可能存在一定噪声。表现在采用同一组场景,重复运行多次,评价指标值会出现一定的波动。自动驾驶系统作为CPS系统的一种,相应的仿真结果出现波动是正常的。由于波动出现的原因受众多较难追溯的因素影响(线程不稳定性、信息传输帧率、指标本身的高度非线性),因此需要精确建模噪声并定量分析的可能性较小。一种可行方法是通过多次运行实验,采用平均值等统计处理手段尝试定性解决这个问题。

在一定程度上保障了系统的可复现性,就可以知道对代码所做的更改是否修复了问题,进而有利于测试自动化和CI,规避假阴性和假阳性的结果。

在可复现性的相关方面,商业仿真软件应有更大的优势。

CI

在CI中集成仿真是大势所趋。但其会受到以下特性影响。

模拟器可靠性。CI的挑战之一是仿真软件本身的可靠性。在自动化中使用仿真软件时,可能有意外的崩溃、时间和同步问题。

接口稳定性。自动驾驶仿真软件接口的稳定性会对自动化过程产生重大影响,因为不一致的、不稳定的、脆弱的仿真软件接口可能会导致客户端应用程序出现故障。这里需要做大量的工程工作,来不断开发并维护仿真接口。

0%