SCANeR&Simulink联调:通过Simulink控制主车

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

一、前言

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工程中进行控制。

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值