案例教学 - 软件在环测试
通过案例教学帮助用户学习和理解如何进行软件在环测试。
如何接入被测算法
本地算法接入
运用MATLAB研发的算法在本地打包为可执行程序后可接入51Sim-One,可支持.exe/.zip格式文件
具体流程如下:
导入算法
用户在本地将算法打包为可执行程序,将可执行程序与算法依赖的文件打包成.zip文件(略)。
启动51Sim-One,打开资源库/控制器文件夹(标1),点击导入(标2)。

选择“从本地上传控制算法”。(标3)

点击浏览或将.zip文件拖入上传区域(标4)
控制器名称(标5)将自动填写。
选择控制级别(标6)自动驾驶指apollo这类高级别算法,SimOneDriver+辅助驾驶指ADAS这类需要人类驾驶员的算法。用户按需选择即可。
选择51SimOne的运行环境(标7),此示例在windows环境下运行。
程序运行入口(标8)内容需填写上传的可执行程序的名称及后缀,且须保持一致,否则测试将无法成功启动该算法。
点击创建(标9),等待上传,上传成功后控制系统出现在文件夹。
创建成功后,在资源库主车预设文件夹(标1)新建一辆主车(标2)。

双击新建的主车预设(标3)进入主车编辑器,从资源库拖拽安装该控制系统(标4)。

运行测试选择该主车即可。
本地接入的算法覆盖更新流程
打开资源库/控制器文件夹,右键点击需要更新的控制系统,选择更新

在弹出的更新窗口,点击浏览或将可执行程序拖入上传区域,依次填写控制系统名称,选择运行环境、填写程序运行入口。
算法级别无法更改,若需更改请重新接入算法。(标2)

点击更新,等待更新覆盖
控制系统更新成功后,运用更新前算法的主车也将自动被更新
Simulink联合仿真
本教程以AEB算法为例演示Simulink如何接入51Sim-One运行联合仿真。
视频版教学:
首次接入步骤
如果首次接入Simulink运行联合仿真,请完成以下步骤
Step 1 新建主车预设
打开51Sim-One,新建一辆主车,资源库(标1) > 主车预设(标2) > 点击新建主车预设(标3),双击主车图标(标4)进入主车编辑器。

也可打开任意已有的主车预设完成以下步骤。
Step 2 添加simulink控制器
进入主车编辑器后,从主车资源库 > 控制器文件夹(标5)拖拽simulink控制器至主车完成安装。

Step 3 一键启动simulink开发环境 (标7)
如已对接过算法,可忽略此步骤。
打开SimOne右下角托盘的Agent 配置,点击停止按钮,结束进程,然后打开安装目录下的StartAll脚本
点击右侧属性面板“一键启动simulink开发环境”按钮,稍等几分钟后,程序将自动打开Matlab,并新建有51Sim-One开发模块的simulink工程文件,请耐心等待。
车辆控制默认选择控制信号,表示通过油门、刹车、方向盘来控制车辆;坐标则是通过坐标输入来挪动车辆,用户按需选择。
启动完成后,如下图所示,在此工程完成算法对接即可。

运行联合仿真
Step 4 启动并配置Matlab
手动运行模式及自动运行模式都需按以下步骤配置。
若step4选择打开指定路径的Simulink工程,51Sim-One将自动启动该工程,可跳过此步骤。
启动本地Matlab,随跟以下步骤完成Matlab与51Sim-One的通信。
点击设置路径,按照下图序号,选择“添加并包含子文件夹”将matlab目录切换到SimOneAPI/Matlab/sfunction_R2018a/SimOneModule ,点击保存。

将左侧当前文件夹定位至SimOneAPI/Matlab/sfunction_R2018a/SimOneModule。

创建bus信号,在命令行窗口运行Simulink.importExternalCTypes(‘SimOneIOStructBus.h’); 如下图所示,右边工作区的bus信号说明创建成功
Simulink.importExternalCTypes('SimOneIOStructBus.h');

创建通信连接,在命令行窗口运行matlab.engine.shareEngine
matlab.engine.shareEngine

如下图打开51Sim-One提供的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设置成略大于51Sim-One运行频率(100Hz),例如0.01

Step 4 选择运行模式(标8)
51Sim-One提供自动运行及手动运行联合仿真。
Step 5 选择控制级别(标9)
控制级别分为SimOneDriver+辅助驾驶与自动驾驶,请按需选择。
SimOneDriver+辅助驾驶
适用于L2及以下级别,仅控制单向的算法。
自动驾驶
适用于可控制横、纵双向的算法。
本教程使用自动运行模式,运行工程选择已打开的simulink工程。
Step 6 保存主车预设
点击左上角保存按钮并退出主车编辑器。
Step 7 编辑测试案例
打开案例库,新建标准案例2.0
(标1)首先在测试案例库点击“新建”
(标2)选择新建的测试案例库文件夹
(标3)点击“新建案例”

(标4)在“选择案例类型”界面选择“标准案例2.0”
(标5)点击下一步

(标6)填写案例名称为“test”
(标7)点击创建,页面自动跳转至案例编辑器,这样就完成了新建案例。

进入案例编辑器后,可使用默认地图-三车道路口,从主车预设文件夹拖入step6保存的主车预设。
主车世界坐标为X:300 Y:-6.5 Z:0 ,坐标仅供参考,用户可自定义主车位置。
在同车道距离主车120米处摆放一个静态障碍物 水马01 坐标为X:420 Y:-5.5 Z:0 ,最后点击编辑器左上角保存案例。

Step 8 启动并配置Matlab
若step4选择打开指定路径的Simulink工程,51Sim-One将自动启动该工程,可跳过此步骤。
启动本地Matlab,随跟以下步骤完成Matlab与51Sim-One的通信。
点击设置路径,按照下图序号,选择“添加并包含子文件夹”将matlab目录切换到Sim-One/SimOneAPI/Matlab/sfunction_R2018a/SimOneModule ,点击保存。
Step 9 自动连续运行联合仿真
回到51Sim-One案例库
选择step7保存的案例,右键复制粘贴。
同时选中复制两个案例,点击运行,主车类型保持“案例设置”即可。(step6保存的主车预设)
打开任务管理-正在测试列表点击摄像头按钮,打开观察者视窗。

可看到simulink工程开始自动运行,第一个案例以碰撞失败后,第二个案例自动启动。