近期,MathWorks新发布了一个自动驾驶场景构建工具——RoadRunner,该工具操作简便、功能强大、素材丰富,极大地提升了场景构建的效率和质量。RoadRunner的推出使得MathWorks在自动驾驶仿真测试领域如虎添翼,让用户在搭建驾驶员在环系统时更加游刃有余。本文将介绍,如何基于MATLAB(MathWorks)、RoadRunner(MathWorks)、UE4(虚幻引擎,Epic Games)和Speedgoat(Speedgoat)打造一个专业的、高性价比的驾驶员在环系统。
1. 综述
从感知、融合、规划到控制,不同用户专注的算法并不一样,因此仿真测试的需求也因人而异,用户可基于本文打造满足对应需求的驾驶员在环系统。以测试融合、规划和控制算法为例,我们来详细说明借助上述的四个工具如何搭建驾驶员在环系统。
系统组成如上图,硬件主要包括:
- 上位机电脑,运行场景和传感器模型。接收车辆模型计算出来的车辆位置和姿态,根据位姿将车辆渲染在UE4场景中。并将传感器模型结果发送给量产控制器或Speedgoat原型控制器。
- 驾驶操纵平台,模拟驾驶员对车辆的操纵。
- 量产控制器或Speedgoat原型控制器,运行融合、决策、控制算法。基于传感器检测结果、驾驶员操作信号、车辆状态信息等,计算得到车辆控制信号,通过CAN发送给Speedgoat实时仿真平台。
- Speedgoat实时仿真平台,运行车辆模型。基于车辆控制信号、地形路面信息等,计算得到车辆位置和姿态,并发送给上位机电脑。
软件主要包括:
- MATLAB R2020a,主要相关的工具箱如下表
- RoadRunner,用以构建驾驶场景
- UE4(Unreal Engine 4.23),加载RoadRunner构建的场景文件,运行及渲染场景,与Simulink交互
- Speedgoat驱动库,以Simulink工具箱的形式呈现,提供IO、CAN、UDP等的Simulink驱动模块
以上硬件及软件如何使用,下文将逐一介绍。
2. 车辆模型及Speedgoat实时仿真平台
2.1 车辆模型
在车辆建模方面,MathWorks提供了Powertrain Blockset和Vehicle Dynamics Blockset。两个工具箱都提供了丰富的模块,以Vehicle Dynamics Blockset为例,它包含了动力总成(PowerTrain)、传感器(Sensors)、转向系(Steering)、悬架(Suspension)、车身(Vehicle Body)、场景(Vehicle Scenarios)、轮系(Wheels and Tires)等。
对于自动驾驶仿真测试而言,车辆动力学是车辆模型中非常重要的一部分。MathWorks提供了3自由度、7自由度和14自由度的车辆动力学参考模型,用户可以参考使用。
基于Powertrain Blockset和Vehicle Dynamics Blockset,用户可以灵活构建整车模型。除此之外,MathWorks也提供了一些可供用户参考使用的整车模型。用户可以在MathWorks整车模型的基础上进行参数化,从而快速得到一个接近真实车辆的驾驶员在环整车模型。
2.2 Speedgoat实时仿真平台
用于自动驾驶仿真测试的车辆模型往往比较复杂,需要强有力的仿真平台来支持实时运行。本系统中运行车辆模型的是来自Speedgoat公司的高性能实时仿真平台——Performance Real-Time Target Machine。Simulink车辆模型可一键编译、下载、运行到Speedgoat实时仿真平台。
Speedgoat是MathWorks的联营公司,由MathWorks前员工创立,致力于提供专门针对Simulink环境的实时系统。Speedgoat实时系统基于MathWorks的Simulink Real-Time工具箱,实现与MATLAB/Simulink无缝衔接。
Performance Real-Time Target Machine是一款高性能的实时仿真平台,规格参数如下。
3. 自动驾驶算法及Speedgoat原型控制器
自动驾驶算法是驾驶员在环系统的被测对象,本文不做深入探讨。值得一提的是,MathWorks近年来新开发的工具箱——Sensor Fusion and Tracking Toolbox,为用户提供了丰富的传感器融合与目标追踪算法。
本系统中,运行自动驾驶算法的原型控制器是Speedgoat的Baseline Real-Time Target Machine.
4. 驾驶操纵平台
驾驶操纵平台可供驾驶员进行驾驶操作,输出转向、油门、刹车等信号。驾驶操纵平台主要可以分为两类:1、实车的转向油门刹车系统;2、罗技等公司提供的简化操纵平台。对于前者,操纵信号通过IO或者CAN进行传输,只要控制器中有对应接口即可直接接收这些信号。对于后者,这些简化操纵平台的接口一般是USB口,需要先用Simulink的相关驱动模块接收USB信号。我们以罗技G29为例,介绍驾驶操纵信号如何进入Simulink模型。
Simulink 3D Animation工具箱的Joystick Input模块支持接收罗技G29的USB信号。Joystick Input的输出Axes和Buttons包含了很多个信号,需要预先标定下方向盘、油门、刹车和这些信号的对应关系。标定方式很简单,将罗技USB插到电脑上,把Joystick Input拖到Simulink模型中,进行驾驶操作,看Joystick Input的哪个输出信号有变化,即可确认对应关系。
5. 驾驶场景
驾驶场景构建和模拟是自动驾驶仿真测试中的重要环节,也很大程度上影响着仿真测试的效果。针对不同的仿真测试需求,MathWorks提供了两套方案。两套方案的具体情况,请见下图。
第一套方案采用的场景表达工具是MathWorks自己开发的Driving Scenario Designer,可以构建“方块式”驾驶场景,适用于对融合、规划和控制算法的测试。第二套方案采用的场景表达工具是Epic Games开发的虚幻引擎UE4(Unreal Engine 4.23),也适用于对感知算法进行测试。RoadRunner构建的场景,既可以导出到Driving Scenario Designer,又可以导出到UE4。
考虑到驾驶员在环对驾驶体验有一定要求,所以在驾驶员在环系统中采用的场景表达工具是UE4。
5.1 RoadRunner
RoadRunner 是一个交互式编辑器,可用于针对自动驾驶系统仿真和测试设计三维场景。您可以创建区域特定的道路标志和标记以自定义道路场景。您可以插入标志、信号、护栏和道路损坏,以及绿化、建筑物和其他三维模型。RoadRunner 还提供工具,用于设置和配置交叉路口处的交通信号配时、相位和行车路径。
RoadRunner 支持激光雷达点云、航拍图像和 GIS 数据的可视化。您可以使用 OpenDRIVE 导入和导出道路网络。使用 RoadRunner 构建的三维场景可导出为 FBX、glTF、OpenFlight、OpenSceneGraph、OBJ 和 USD 格式。导出的场景可在自动驾驶仿真器和游戏引擎中使用,包括 CARLA、Vires VTD、NVIDIA DRIVE Sim、LGSVL、百度 Apollo、Unity 和虚幻引擎 (Unreal Engine)。
知乎视频www.zhihu.com5.2 UE4
RoadRunner构建的场景可以导出成FBX文件,Unreal Engine加载该文件,复现场景并做逼真的渲染。RoadRunner与UE4结合,既实现了方便快捷地构建场景,又实现了对场景的高保真度模拟。同时,Simulink的自动驾驶工具箱Automated Driving Toolbox提供了与Unreal Engine场景交互的摄像头、激光雷达、毫米波雷达等传感器模型。
5.3 UE4与Simulink联合仿真
UE4与Simulink的联合仿真,主要借助于自动驾驶工具箱Automated Driving Toolbox的Simulation 3D Scene Configuration模块。
该模块对于场景来源(Scene source)有三个选项:Default Scenes,Unreal Executable和Unreal Editor。前者使用的是MathWorks提供的自带参考场景,后两者可使用用户自定义的场景。Unreal Editor和Unreal Executable正好对应使用自定义场景进行联合仿真的两种模式。
1) Unreal Editor。这种模式下,Unreal Editor加载RoadRunner构建的场景后,直接与Simulink联合仿真。在联合仿真的过程中,Unreal Editor一直是开启并运行状态。在测试早期,用户可能需要根据测试需求不断调整场景设置,那么便适用于这种模式。
2) Unreal Executable。当测试场景基本固定之后,用户可以在Unreal Editor中将场景打包成一个可执行的文件,并在Simulation 3D Scene Configuration模块中加载该文件,实现与Simulink的联合仿真。这种模式下,联合仿真过程中不再需要打开Unreal Editor,场景是以一个独立窗口的形式来呈现及运行的,可以减少对电脑资源的消耗。
6. 驾驶员在环系统示例
就如之前所述,根据不同的仿真测试需求,驾驶员在环系统呈现的形式是多种多样的。本节展示简单系统和复杂系统两个示例。
6.1 简单驾驶员在环系统
该系统中不带自动驾驶功能,驾驶员操控一个非智能轿车模型。
知乎视频www.zhihu.com6.2 自动紧急制动(AEB)的仿真测试平台
该系统中,Speedgoat Baseline Real-Time Target Machine运行AEB算法(算法参考自MATLAB的AEB demo),Speedgoat Performance Real-Time Target Machine运行车辆模型(模型参考MATLAB的示例模型)。
该系统运行视频如下。
知乎视频www.zhihu.com