如何用MATLAB/Simulink快速构建一个低成本的驾驶员在环系统

来源:公众号“汽车电子与软件”
2020-05-20
3966

为什么要构建驾驶员在环系统?

一则,L4之前的汽车都是需要驾驶员的,对这些汽车的智能驾驶算法或控制器进行测试,其中一个测试环节就可以是驾驶员在环测试。二则是好玩,可以搭一个这样的系统来自娱自乐。

根据不同的需求,可以搭建不同级别的驾驶员在环系统,逐一来介绍。

1、Demo版

MATLAB/Simulink提供了一个可用于驾驶员在环的基础demo模型。

网址:https://www.mathworks.com/help/vdynblks/ug/scene-interrogation-reference-application.html

这个模型简单明了,如下图。

左上角是驾驶操纵控件,通过操纵这些控件可以去控制转向、油门、刹车等。这些控件模块来自Simulink--->Dashboard工具箱。如下图

可以将这些控件模块与模型中参数关联,从而更方便地调节参数。

因为是基础demo,所以车辆模型做了很大的简化。

3D场景部分,渲染引擎用的是Unreal Engine。MathWorks结合游戏引擎Unreal Engine构建高保真度的驾驶场景,Automated Driving Toolbox提供了与Unreal Engine场景交互的摄像头、激光雷达、毫米波雷达等传感器模型以及车辆模型。

该demo中,默认的3D场景是密歇根大学的MCity,我改成了大型停车场的场景,同时也把车型换了。

关于怎么结合MATLAB和Unreal Engine去构建驾驶场景,可以参看我知乎的文章。(后面会在本微信发表)

卿颜:MATLAB结合Unreal Engine构建用以自动驾驶仿真测试的逼真驾驶场景zhuanlan.zhihu.com

另外,还在车身上放了一个摄像头(下面视频左下角的图像就是该摄像头产生的),仅做显示用,不做处理。

以上是Simulink模型部分,除此之外,因为需要运行Unreal Engine的3D场景,所以我们需要准备一个高性能的电脑。Unreal Engine对电脑性能的最低要求:

Graphics card (GPU) — Virtual reality-ready with 8 GB of on-board RAM

Processor (CPU) — 2.60 GHz

Memory (RAM) — 12 GB

实际体验下来,如果想要获得不错的体验,电脑性能要远高于这个配置,尤其是GPU。我工作电脑的GPU是NVIDIA GeForce MX150,基本凑活着能跑Unreal的场景,但运行时间稍微长一点,场景显示会卡顿。公司有一个专门用来跑场景的游戏本——英特尔(Intel) NUC8I7HVK4 酷睿I7-8809G冥王峡谷(运行的时候会显示一个骷髅头……,如下图)。

GPU是AMD RX Vega M GH,性能挺强的,很流畅。


这套系统All in Simulink,不需要别的设备,简单明了,能清晰地呈现驾驶员在环系统的架构。

2、游戏版

demo版有两个肉眼可见的不足:

1、没有真实的车辆操纵设备,驾驶体验欠缺

2、车辆模型比较简单,无法较好地呈现车辆的特性

让我们来做个升级:增加游戏手柄+提高车辆复杂度。

游戏手柄,采用的是HORI FPS PLUS。

手柄接口是USB的,直接插到电脑上即可。

手柄上有很多操作按键,要将这些按键信号读到Simulink中。Simulink提供了手柄的驱动模块(罗技手柄也适用),驱动模块就是Simulin 3D Animation工具箱的Joystick Input。

Joystick Input的输出Axes和Buttons包含了很多个信号,需要预先标定下手柄按键和这些信号的对应关系。标定方式很简单,把Joystick Input拖到Simulink模型中,按下手柄的某个按键,看Joystick Input的哪个输出信号有变化。标定结果如下

车辆模型,在MATLAB中找一个合适的参考模型,比如这个

网址:https://www.mathworks.com/help/vdynblks/ug/double-lane-change-reference-application.html

需要对这个模型做些调整,比如将变步长改成定步长、将驾驶员模型替换成Joystick Input、调整3D场景等。

整个架构如下图

涉及的MATLAB工具箱有:

Automated Driving Toolbox——用以构建3D场景,实现Simulink与Unreal场景的交互。

Vehicle Dynamics Blockset和Powertrain Blockset——用以构建车辆模型。

一切ready之后,就可以愉快地玩起来了。


3、入门版

以上两个版本,纯属自娱自乐。车辆模型跑在电脑中,实时性无法保证;游戏手柄与真实的驾驶台相去甚远。我们再来做个升级,让车辆模型跑在实时仿真硬件中,游戏手柄用罗技G29代替。

罗技G29是一个入门级的驾驶模拟器,接口是USB的,有方向盘有踏板。

同样的,G29也需要一个驱动模块将信号接入到Simulink。Joystick Input依然适用。另外,Simulink提供了专门的G29驱动模块——Steering Wheel Read,在Simulink Real-Time工具箱。

对G29和Steering Wheel Read进行标定。

实时仿真硬件一般都不便宜,考虑到要降低成本,特意选了办公室一个最便宜的实时仿真硬件,如下图。这个设备原本是做RCP用的,跑控制算法;结果试了下跑MATLAB参考车辆模型时算力也绰绰有余。

需要注意的是,demo版和游戏版的场景、车辆模型都是运行在电脑中的。在入门版中,我们将车辆模型转移到实时仿真硬件中,但场景相关部分仍然运行在上位机电脑中,原因在于一则实时仿真硬件一般都没有强大的GPU去支持运行3D场景,二则实时仿真硬件中的实时操作系统不一定支持3D场景软件。

上位机电脑和实时仿真硬件的连接如下图。

罗技G29的USB接口插到上位机电脑上。上位机电脑和实时仿真平台用两根网线连接。

蓝色网线是用以将Simulink车辆模型下载到实时仿真平台中,并进行实时在线调参、观测等

黄色网线是实现两者之间其他信号的通讯,比如车辆位姿、滚阻风阻

整套设备是这样的:

入门版的架构如下图。

实时仿真平台和上位机PC中各跑了一个Simulink模型,前者是跑车辆模型,后者主要是跑场景相关模型。入门版中,Unreal构建的场景在Simulink中是以接口的形式呈现的,所以场景包含在上位机PC的Simulink模型中。图中信号流:

①、②:罗技G29的接口是USB的,插在上位机PC后,PC中的Simulink模型可以接收到驾驶员操纵信号(转向、油门、刹车等),PC再通过网口的UDP通讯把操纵信号传输给实时仿真平台。

③:上位机PC将场景中的滚阻风阻等信息通过UDP发送给实时仿真平台中的车辆模型,实时仿真平台基于驾驶操纵信号、滚阻风阻等信息、车辆模型等等去计算车辆的状态

④:实时仿真平台将计算出来的车辆状态(主要是位置、姿态)发送给上位机PC,上位机PC将当前位置、姿态的车辆在场景中渲染出来。

下图是完整的模型及信号流动。

接下来,又可以愉快地玩耍了。G29方向盘带反馈,驾驶体验杠杠的。


MathWorks官网有视频专门介绍这种类型的驾驶员在环。

网址:

https://www.mathworks.com/videos/building-real-time-driver-in-the-loop-simulators-1542313377351.html

4、升级版

游戏版有一个不足:场景软件是可以输出传感器的检测结果的,而实时仿真平台中主要运行车辆模型,没有运用到这些检测结果。

升级版中,我们可以引入传感器融合、决策控制算法。架构如下图。

升级版相比入门版,主要的改动是实时仿真平台不仅运行车辆模型,还运行了传感器融合、决策控制算法。值得注意的是,这样一来,计算量会增加不少,所以需要把实时仿真平台也升级成性能更强的硬件。

另外,升级版中,多增加了一个信号流动⑤,这是上位机PC将传感器模型检测结果发送给实时仿真平台,这个检测结果是object list级别的,不是图像、激光雷达点云等。

升级版中多涉及了一个工具箱:

Sensor Fusion and Tracking Toolbox——用以传感器融合和目标跟踪。

5、实战1版

接下来,升级到更加专业的、更接近实际状态的实战版本。架构如下图。

罗技G29只是入门级的驾驶模拟器,我们将它升级成专业的驾驶模拟器或者驾驶操纵平台。

实时仿真平台(HIL设备)只运行车辆模型

另增加原型控制器(RCP设备),用以运行融合决策控制算法。这主要是应用在前期阶段,我们还没开发出自己的控制器,用原型控制器来代替。

驾驶操纵信号直接进入原型控制器;原型控制器计算得到的控制信号通过CAN发送给实时仿真平台

6、实战2版

以上所有版本,没有包含感知算法,因此没法做Perception-in-loop的测试验证。Perception-in-loop的测试验证应该类似以下框架。

因此,实战2版加入了感知算法。实战2版中,用NVIDIA Drive PX2或Xavier代替实战1版中的原型控制器。

信号流⑤是上位机PC发送给NVIDIA Drive PX2/Xavier的图像、激光雷达点云等数据。NVIDIA Drive PX2/Xavier处理的是更加原始的数据,而不是object list级别的数据。

为了让场景软件更流畅地合成图像、点云等,推荐给上位机PC的GPU做一个升级。

7、实战3版

最终,我们希望将真实的控制器纳入到整个闭环中,如下图。

要想把模拟的传感器信号接入到域控制器,需要各种传感器模拟设备,比如视频注入设备、视频暗箱、雷达模拟器等等。

实战1~3版本中,驾驶操纵平台已经可有可无,取决于验证的自动驾驶功能级别。


收藏
点赞
2000