一、前言
SCANeR内置多种编程语言的接口,可以通过仿真软件及自定义脚本进行软件在环调试。我们可以从SCANeR中抓取或回注车辆动力学、传感器目标列表等信息,也可以在SCANeR中新建一个系统变量并在脚本中进行修改,用于触发SCANeR内置的Scipt脚本。本文使用Simulink与SCANeR进行软件联调。
二、环境配置
2.1 软件安装
安装Visual Studio 2019、 Matlab2019b,或者安装Matlab2019b+MinGw64.
2.2 环境配置
1. 更新SCANeR版本或者第一次安装时需要进行以下步骤:
打开Matlab,将路径设置为SCANeR安装盘的以下位置:
安装盘 :\AVSimulation\SCANeRstudio_2023\APIs

运行setupSCANeR.m脚本,将SCANeR API模块添加到Simulink中

2. 每次开机后要进行Simulink与SCANeR的联调时:
必须,注意是必须运行此脚本:setSCANeRPath.m
(路径还是 安装盘:\AVSimulation\SCANeRstudio_2023\APIs)

三、Simulink工程搭建
3.1 查看API库是否导入成功
新建Simulink工程,打开Library Browser:

可以看到SCANeR API、SCANeR AFS、Callas等库已经正常载入

3.2 搭建一个可以读取SCANeR车辆信息的工程
3.2.1 添加Controller模块
在库中打开SCANeR API找到Controller,将其拖入Simulink工程:

这个模块的功能是让SCANeR将我们的Simulink脚本识别为一个SCANeR模块,一个Simulink工程必须有且仅能有一个Controller模块。
现在双击Controller模块进行编辑,以下三个选项很关键,如果填写错误将不能进行联调:
1. Configuration: SCANeR当前的配置名称
2. Process Name: SCANeR中添加的Simulink模块名称,下一步会提到
3. Frequency: Simulink模块的运行频率

3.2.2 在SCANeR中新建一个Simulink模块
现在我们回到SCANeR,点击Configuration>Add Process>在Process中填入Simulink模块名称,填什么都行,但是不能重名,且必须与Simulink的Controller设置的一致。

比如说有两个Simulink工程,那需要在SCANeR中新建两个对应的模块,工程1对应的SCANeR模块起名叫Test1, 相应的在工程1的Controller的Process Name一项就应该设为Test1; 工程2对应的SCANeR模块起名叫Test2, 相应的在工程1的Controller的Process Name一项就应该设为Test2。
3.2.3 运行Simulink工程及SCANeR联调
将Stop Time设为inf,点击Run 运行

此时在SCANeR中可以看到我们命名为TEST的模块自动激活了

此时再激活所需要的别的模块就可以开始仿真了,注意此种方式永远是先运行Simulink脚本再启动SCANeR仿真。关闭时也是先停止仿真再停止Simulink模型

3.2.4 添加IVehicleUpdate_Input模块
我们可以通过SCANeR API>Network Inputs>Ivehicle>IVehicle_VehicleUpdate_Input这个模块来读取SCANeR中的车辆信息:

双击这个模块可以更改要读取的车辆ID, 默认为0号车辆。SCANeR中的车辆ID可以在事件树的Vehicle一项中查看。


这个Input模块的部分输出口含有不止一个信息,需要连接一个demux块用于解析,以下图为例,我们可以链接一个六端口的demux到Pos:Double[6]这个输出口,读取车辆的xyz位置、Heading、Pitch、Roll。

每个接口对应的内容可以点击Help查看:


3.3 搭建一个可以控制SCANeR主车的工程
把主车的Driver Process改成Simulink模块

在Simulink中添加ModelCabin_CabToModel_Output模块
- GearBoxAutoMode 0为空挡,2为倒挡, 9为1挡,10为2挡。。
- Ignition 0为熄火,2为ON

油门刹车踏板、方向盘转角等控制指令建议通过以下两个Corrective模块给进去,而不是在上面的模块中直接改变状态,通过加乘的方式更贴合实车的控制方式。


运行simulink脚本、运行仿真后即可在Simulink工程中进行控制。
本文介绍了如何通过Simulink控制SCANeR中的主车,详细阐述了环境配置、Simulink工程搭建过程,包括设置Controller模块、创建Simulink模块、读取车辆信息和控制车辆动作的方法。
1454





