MIL模型在环测试
1. 第三方软件联合仿真兼容性声明
软件 | 兼容版本 | 备注 |
---|---|---|
Matlab | 2018a 以及之后的版本 | 2015-2018 的版本需要进行版本转换,更早的版本不建议使用 |
Carmaker | 9.0 | 其余版本未测试 |
CarSim | 2017,2018,2019 | 其余版本未测试 |
通过案例教学帮助用户学习和理解联合其他应用进行联合仿真测试。
2. Matlab 联合仿真
本教程以 AEB 算法为例演示 Simulink 如何接入 SimOne 运行联合仿真。
2.1 视频教程
2.2 首次接入步骤
如果首次接入 Simulink 运行联合仿真,请完成以下步骤。
2.2.1 找到内置 Simulink 算法
打开 算法管理 界面,在算法列表里找到内置算法 Simulink 算法 ,勾选算法名称左边的框,选中该算法。
2.2.2 进入 Simulink 参数设置
鼠标右键 点击内置的 Simulink 算法,选择 参数设置 。
进入 Simulink 参数设置弹窗,如下。
2.3 运行联合仿真
2.3.1 选择运行模式
SimOne 提供自动运行及手动运行联合仿真。
-
手动运行模式 :每次联合仿真前配置好 Matlab,打开需要测试的 Simulink 工程, 用户手动点击 Simulink 的运行按钮进行单个用例的联合仿真 。 (适用于: SimOne 和 Simulink 不一定在同一台电脑上)
-
自动运行模式 :每次联合仿真前配置好 Matlab,打开需要测试的 Simulink 工程, SimOne 将自动连续运行已打开的(鼠标最近激活)Simulink 工程进行联合仿真。 ( 适用于: SimOne 和 Simulink 在同一台电脑上,如不在同一台电脑上,想要使用【自动运行】则需要自己写程序同时监控 SimOne 和 Simulink ,不在SimOne 自带功能范畴之内。 )
2.3.2 编辑测试用例
2.3.2.1 打开用例库,新建标准用例。
-
进入用例编辑器后,可使用 默认地图 - 三车道路口 ,拖入 主车。
-
主车世界坐标为 X: 300 Y: -6.5 Z: 0,坐标仅供参考,用户可自定义主车位置。
-
在同车道距离主车 120 米处摆放一个静态障碍物 水马 01 坐标为 X:420 Y:-5.5 Z:0 ,最后点击编辑器左上角 保存 用例。
2.3.2.2 启动并配置 Matlab
注意
【手动运行】模式及【自动运行】模式都需按以下步骤配置。
注意
若在1.3.1选择打开指定路径的 Simulink 工程,SimOne 将自动启动该工程,可跳过此步骤。
启动本地 Matlab,随跟以下步骤完成 Matlab 与 SimOne 的通信。
-
点击设置路径,按照下图序号,选择 添加并包含子文件夹 将 matlab 目录切换到 SimOneAPI/Matlab/sfunction_R2018a/SimOneModule ,点击 保存 。
-
将左侧当前文件夹定位至 SimOneAPI/Matlab/sfunction_R2018a/SimOneModule 。
-
创建 bus 信号,在命令行窗口运行
Simulink.importExternalCTypes('SimOneIOStructBus.h')
;
如下图所示,右边工作区的 bus 信号说明创建成功。
-
创建通信连接,在命令行窗口运行
matlab.engine.shareEngine
。
-
如下图打开 SimOne 提供的 AEB 样例,
SimOneAPI/Matlab/sfunction_R2018a/Examples/AEB/AEB_Test_module.slx
-
设置 Simulink 仿真 Sample Time,在 Simulink 工程中点击 Simuliation 选择 Model Configuration Parameters,将 Solver selection 的 Type 设置成 Fixed-step。
注意
若采用帧同步模式,则需要将 Fixed-step 的 size 设置成与 SimOne 运行频率相同或相近的时间,例如 SimOne 60Hz 时,设置为 1/60;
若不采用帧同步模式,则需要将 Fixed-step 的 size 设置成略大于 SimOne 运行频率,例如 SimOne 60Hz,Simulink 100Hz 时,设置为 1/100。
2.3.2.3 自动连续运行联合仿真
-
回到 SimOne 用例库,选择 Step 5 保存的用例,右键复制粘贴。
-
同时选中复制两个用例,点击运行,主车类型保持 用例设置 即可。
-
打开 任务管理 -> 正在测试 列表点击摄像头按钮,打开观察者视窗。
-
可看到 Simulink 工程开始自动运行,第一个用例以碰撞失败后,第二个用例自动启动。
2.4 一键启动功能
一键启动是在同一台电脑上通过 MatlabEngine 方式启动 Simulink,并自动生成算法框架的功能。
-
点击右侧属性面板 一键启动 Simulink 开发环境 按钮,程序将自动打开 Matlab,并新建有 SimOne 开发模块的 Simulink 工程文件,请耐心等待。
-
车辆控制默认选择 控制信号 ,表示通过油门、刹车、方向盘来控制车辆; 坐标 则是通过坐标输入来挪动车辆,用户按需选择。
-
启动完成后,如下图所示,在此工程完成算法对接即可。
3. CarMaker 联合仿真
3.1 操作步骤
-
在 SimOne 中将主车资源库中的 CarMaker 拖入主车编辑视窗;
-
运行 SimOne 测试,CarMaker 将自动启动;请勿操作 CarMaker;
-
系统正常运行后,能看到 SimOne 中的主车运动;打开 CarMaker 的 Movie 窗口,也能看到 CarMaker 里面车辆的运动;
-
连续运行 SimOne,不需要在 CarMaker 中进行任何操作;CarMaker 的 TestRun 会自动运行和停止;
-
如果需要替换 CarMaker 中的主车模型,请打开 Dynamic Interface 项目后,选择指定的主车模型。
-
所有测试用例运行结束后,手动关闭 CarMaker。
3.2 CarMaker 和 SimOne 使用同一个地图
动力学接入时默认运行的 CarMaker TestRun 使用的是一个大平面地图。如果 SimOne 使用的地图有高低起伏,则动力学接入将忽略这些路面高度信息。 在 CarMaker 中导入和 SimOne 中同样的 OpenDriveOpenDrive 地图,修改 TestRun,则能是动力学匹配和地图/地面高度完全匹配。
具体操作和注意事项如下:
-
CarMaker8 中打开我们提供的 Dynamic_Interface 项目,打开 TestRun“TestRun”,编辑场景,导入 SimOne 案例中使用的 OpenDriver 地图;添加 route 并放置主车;
-
CarMaker 中打开 Session Log 窗口,运行 TestRun。Log 窗口将输出车辆的坐标;
-
打开 SimOne 的案例编辑器,将主车位置坐标设置为和 CarMaker 一样;
-
和普通案例一样,运行测试,可以看到 CarMaker 里面的车辆和 SimOne 的车辆运行在同样的道路上;
注意
如果主车开出道路边界,CarMaker 将终止测试。
CarMaker 中主车的 Route 有终点,尽量将终点设置为车辆不会到达的位置,否则车辆运行时遇到该位置,CarMaker 也将结束测试。
4. CarSim 联合仿真
4.1 CarSim 配置与运行
-
在 CarSim 中配置完成车辆模型并运行之后,CarSim 会针对当前配置的模型产生
.par
文件。 -
如下图所示,通过 CarSim 主界面上的 View -> Open Results Folder for this Run in Windows 可以打开储存该
.par
文件的文件夹, -
保存该文件夹中的
LastRun_all.par
文件,它对应当前的车辆参数。
4.2 CarSim Solver DLL 配置
在 CarSim 中配置完成车辆模型并点击运行之后,CarSim 会针对当前配置的模型产生*
.sim
* 文件, 该文件位于安装 CarSim 时所指定的数据目录中,例如
/CarSim2019.0_Data/simfile.sim
,该文件中包含 VEHICLE_CODE 信息,例如
“VEHICLE_CODEi_i”
。
对于 CarSim2018 及以上的版本 :
-
CarSim Solver DLL 位于 CarSim 安装目录下的
Programs\CarSim2019.0_Data\simfile.sim
文件夹 -
请将该文件夹下的* carsim_64.dll *复制到 SimOne 程序包的
Core\Windows\ThirdParty2019\CarSim\CarSim_Prog\Programs\solvers\Default64
目录下。 -
根据 simfile.sim 中的 VEHICLE_CODE 字段进行重命名,例如,VEHICLE_CODE 字段为 i_i,则重命名为 i_i.dll。
对于 CarSim2017 :
-
64 位的 CarSim Solver DLL 位于 CarSim 安装目录下的*
Programs\solvers\Default64
* 文件夹下 -
根据* simfile.sim 中的 VEHICLE_CODE 字段将相应的 dll 复制到 SimOne 程序包的
Core\Windows\ThirdParty\CarSim\CarSim_Prog\Programs\solvers\Default64\carsim2017
* 目录下。例如, VEHICLE_CODE 字段为 i_i,则复制 i_i.dll 。
4.3 SimOne 动力学接入
-
使用 CarSim 动力学接入,需要打开 SimOne 的主车编辑器页面,在页面下方的 动力学 一栏选择 CarSim 并使用鼠标拖入主车编辑视窗,如下图所示。
-
右上角将显示 CarSim 接入的参数设置:
-
通过版本下拉框选择相应的 Carsim 版本,“2017”对应 CarSim2017 版本,“2018 或更新” 对应 CarSim2018 及以上版本。
-
单击 浏览 导入 3.1.1 中介绍的.par 文件,然后保存该主车。
-
4.4 仿真前的准备
-
在运行 SimOne 进行仿真之前,需要启动 CarSim License 服务。
-
可以运行 cslm.exe 或者启动 CarSim 软件。
注意
CarSim2019 车辆模型的制动系统配置不能是压强。需要选择制动压力。
5. TruckSim 联合仿真
5.1 TruckSim 配置与运行
-
在 TruckSim 中配置完成车辆模型并运行之后,TruckSim 会针对当前配置的模型产生
.par
文件以及.sim
文件。 -
.sim
文件位于 TruckSim 的数据目录中,例如*/TruckSim2016.1_Data/simfile.sim
* ,该文件包含 FILEBASE 信息,例如FILEBASE C:\Users\Public\Documents\TruckSim2016.1_Data\Runs\Run_f02bf0b3-4066-447e-bb5e-40a929b281c7
-
据此可以得到当前模型的 par 文件为
C:\Users\Public\Documents\TruckSim2016.1_Data\Runs\Run_f02bf0b3-4066-447e-bb5e-40a929b281c7_all.par
5.2 修改 .par 文件
simfile.sim
包含 VEHICLE_CODE 信息,需要将该信息写入上述
.par
文件。
例如,例如 simfile 中包含 “VEHICLE_CODEs_s”,则在 .par 文件中新添加一行“VEHICLE_CODEs_s”,如下图,然后保存该文件。
5.3 TruckSim Solver DLL 配置
-
simfile.sim
文件包含 VEHICLE_CODE 信息,例如“VEHICLE_CODE s_s”。 -
64 位的 TruckSim Solver DLL 位于 TruckSim 安装目录下的
\Programs\solvers\default64
文件夹。 -
根据
simfile.sim
中的 VEHICLE_CODE 字段将相应的 dll 复制到 SimOne 程序包的Core\Windows\ThirdParty\CarSim\CarSim_Prog\Programs\solvers\Default64\trucksim2016
目录下。 -
例如,VEHICLE_CODE 字段为 s_s,则复制 s_s.dll;
5.4 SimOne 动力学接入
-
同 Carsim 联合仿真 第三步 介绍的编辑方式,通过版本下拉框选择 “TruckSim2016”。
5.5 仿真前的准备
-
在运行 SimOne 进行仿真之前,需要启动 TruckSim License 服务
-
可以运行 vslm.exe 或者启动 TruckSim 软件。