汽车自动驾驶仿真测试蓝皮书
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 自动驾驶仿真测试的基本概念和关键技术

自动驾驶仿真技术是计算机仿真技术在汽车领域的应用,它比传统ADAS仿真系统更为复杂,对系统在解耦和架构上的要求非常高。类似其他通用仿真平台,它必须尽可能真实,而对仿真系统进行分析和研究的一个基础性和关键性的问题就是将系统模型化。通过数学建模的方式将真实世界进行数字化还原和泛化,建立正确、可靠、有效的仿真模型是保证仿真结果具有高可信度的关键和前提。仿真技术的基本原理是在仿真场景内,将真实控制器变成算法,结合传感器仿真等技术,完成对算法的测试和验证。

一个完整的自动驾驶仿真平台,需要包括静态场景还原、动态案例仿真、传感器仿真、车辆动力学仿真、并行加速计算等功能,并能够较为容易地接入自动驾驶感知和决策控制系统。只有算法与仿真平台紧密结合,才能形成一个闭环,达到持续迭代和优化的状态。

在某种意义上,自动驾驶车辆(AV)仿真不同于传统的车辆仿真,除车辆本身以外,车辆运行的“环境”在评估其应对所有驾驶状况的方式时也是不可或缺的。自动驾驶的“环境”相当丰富(有时甚至是拥挤的),包括其他车辆、行人、动物,当然也包括道路、人行道、建筑物,乃至气候条件[7]

一个完整的自动驾驶仿真软件从逻辑上包括诸多模块,针对每个模块都有一些需要解决的关键仿真问题。

1.3.1 高精地图

高精地图是自动驾驶车辆开发的关键功能。高精地图不仅旨在提供车辆环境的实时反馈,实现对车辆位置的精确定位,一旦建立了环境的基础,还可以将标志、交通信号灯、行车道之间的距离、交通流向等添加到地图上,从而可以在虚拟环境中模拟车辆、行人和其他动态特征环境。环境的动态特征可以从现实世界的车辆日志中生成。

1.3.2 静态环境模块

静态环境模块指构建、维护静态场景的模块,由许多3D模型组成,这些模型用于静态对象,如建筑物、植被、交通标志、基础设施、道路类型、车道标记及行人携带的设备/物品。在该模块中需要现实环境,进行保证真实度的建模,以代表真实的世界,其主要特点是能够自动化构建大规模静态场景。为了对适当模拟环境条件建模,许多模型需要合并。这些模型的广度、保真度和多样性无疑取决于要使用仿真工具解决的问题的类型。例如,如果用户希望测试整个软件堆栈,包括与感知相关的算法,那么仿真环境需要包括现实车辆、行人、交通标志等的视觉表现形式上的多样性[8]

1.3.3 动态场景模块

动态场景的生成包括两个方面:一是微观的行人、车辆、天气等行为;二是宏观的交通流场景构建。实际上目前基于真实统计数据进行仿真很大的一个缺陷是缺少实时互动和相互关联。在仿真测试过程中,真实场景库中车辆按实测轨迹行驶,无法与自动驾驶车辆互动,导致主车周边的车辆行为其实是“不真实”的,会对测试效果产生不利影响。可能的解决办法是对其他车辆增加智能,比较简单的方式就是增加规则,如发现前面有车辆就减速、遇到红灯就停车。复杂点的方式就是对其他行为建模,这样每一个车辆都是一个智能体。也就是说,对行为的建模可以有两种方式:一种是基于规则的方式,一种是基于模型的方式。其中,基于模型进行建模的方式是未来的趋势,伯克利大学推出了多主体的强化学习框架流[9],也就是说,仿真器中的每一个车辆和行人都可以被训练为一个智能体,这样就可以完全模拟更加真实的场景,并且和环境产生互动。通过各种仿真模型和现实交通数据实现虚拟交通是重构详细交通流的有前景的方法[10]。其核心目标是通过无论是主观设计的测试场景—用交通事故的数据构造一些场景,还是与真实场景进行组合,或者通过算法增加危险场景的比重,来实现基于尽可能完整的测试场景对于真实交通流下的车辆仿真进行简化和分解。这一部分的一个主要挑战是测试场景的泛化能力,如在测试场景中当前车辆的车速可能是30km/h,也可能是60km/h,还可能是90km/h,如何做到对应的场景可以在一定的范围内自动生成对应的参数,来应对真实场景中无穷的场景组合,是目前一个较难的问题。

1.3.4 传感器模块

传感器使汽车自动驾驶能够感知其环境,从而发现并分类障碍物,预测速度,协助精确定位车辆周围的环境。传感器是连接外界环境和被测车辆的媒介。从仿真角度来讲,不管是哪种传感器,理论上都可以从以下3个不同的层级仿真。第一个层级是对物理信号进行仿真,第二个层级是对原始信号进行仿真,第三个层级是对传感器目标进行仿真。物理信号仿真,就是直接仿真传感器接收到的信号。例如,摄像头直接仿真摄像头检测到的光学信号;雷达直接仿真声波和电磁波信号。原始信号仿真是把传感器探测单元拆掉,因为在控制电控嵌入式系统中有专门的数字处理芯片,可以直接仿真数字处理芯片的输入单元。传感器目标仿真,即传感器感知和决策如果是分为两个不同层级的芯片来做,那么可以将传感器检测的理想目标直接仿真到决策层算法输入端。这种目标级输入信号一般是CAN总线输入信号,或者其他通信协议格式输入信号。比如,差分GPS和IMU可以通过串口通信来仿真。一般来说,通过软件仿真的方式达到目标级仿真,提供真值是比较容易做到的,而原始信号,尤其是物理信号的仿真,因为需要使用大量的仿真设备而相对比较复杂[11]

1.3.5 动力学模块

动力学模块是在车辆仿真中发展最早和最为完善的部分,车辆模型包括自主系统的动力特性和配置。车辆动力学可以包括各种自由度、运动控制、质心和惯性特性、悬架、制动、加速/减速等。传统的商业仿真软件在这个领域已经非常成熟,一般将车辆模型参数化,包括车体模型参数化、轮胎模型参数化、制动系统模型参数化、转向系统模型参数化、动力系统模型参数化、传动系统模型参数化、空气动力学模型参数化、硬件I/O接口模型参数化,根据实际测试车辆的动力学模块配置合适参数。使用这些复杂车辆参数,可以保证车辆的仿真精度更高,使被控对象更接近于真实的对象。同时,它还有一个较好的作用是在制作自动驾驶系统开发时可能涉及一些转向、制动、线控系统开发,这种系统也需要被控对象模型。有了这些被控对象模型后,我们就可以把真实的线控制动、线控转向系统和自动驾驶系统集成到大系统中共同做仿真测试。这样测试的目的和意义主要是为了独立验证整个线控系统,同时还可以验证自动驾驶系统与线控系统的交互。就自动驾驶仿真而言,一个关键的问题是虚拟汽车必须还能够像在现实世界中一样在仿真中表现刹车、加速等动作;在高速公路或崎岖不平的道路上行驶时,应表现出和现实中相同的车辆动力学特性。

1.3.6 数据管理模块和大规模并行计算

仿真工具的主要目的之一是生成数据,用于测试、验证性能指标等。仿真工具的一个不错的功能是可以收集用于未来用例的仿真数据,以及用于离线培训、测试。例如,真实感来自模拟的标记数据可用于训练和测试机器学习技术,可以减少对现实世界数据收集的需求。在有了丰富的交通场景库、准确的传感器仿真模型和车辆动力学仿真模型后,如何通过仿真平台加速自动驾驶算法测试和验证的迭代周期,这一问题可以通过纯软件方式的并行计算架构实现。

此外,仿真平台除借助传感器仿真、车辆动力学仿真,通过纯软件的方式接入自动驾驶感知和决策控制系统形成闭环测试之外,集成部分硬件系统的验证测试也是系统开发与验证不可或缺的一部分。通过仿真环境,结合部分硬件系统的计算结果进行测试,可以使软件和硬件的兼容性和功能完整性得以验证,用较低的成本测量验证子系统模块功能安全性。局部子系统的全方位测试验证,可以方便、有针对性地达到系统辨识和错误追踪定位的目的。[1]在自动驾驶仿真系统解耦架构的基础上,作为自动驾驶系统的感知部分,包括摄像头、激光雷达、毫米波雷达、超声波雷达、GPS/IMU、V2X等,该部分的性能决定了自动驾驶车辆能否适应复杂多变的交通环境。针对不同的传感器,硬件在环会根据不同的传感器和环境因素来部署。前面我们提到的传感器仿真中的物理信号仿真和原始信号仿真,都与硬件在环相关。