SIL软件在环测试 ¶
注意
本教程只涉及 算法管理 部分,算法接入具体内容参考 开发者手册 中的 算法接入 。
如果涉及 Simulink、Carmaker、CarSim、TruckSim 等联合仿真内容,请参考 联合仿真 。
如何进行算法管理 ¶
算法在本地打包为可执行程序后可接入 SimOne,可支持 .exe / .zip /Docker 镜像包 格式文件。
注意
SimOne 协作版 本地客户端 和 云客户端 导入算法的操作不同。
-
本地客户端 面向算法研发人员进行本地算法调试使用,需要准备. exe 格式算法的 执行脚本 。
-
云端 面向云端大规模并发测试使用,支持 exe 程序包、Docker 镜像 两种接入方式。
A、exe 程序包 :需要上传包含. exe 格式算法以及 库依赖文件 等的. zip 文件 。
B、Docker 镜像 :需要准备算法镜像包 以及 对应镜像仓库地址。
1. 算法添加 ¶
1.1 本地端 ¶
-
在左侧导航栏打开 算法管理 界面,点击左上角的 新建算法 ,出现弹窗。
-
选择算法接入方式: 本地脚本、驾驶模拟器、SimOneDriver 控制、API 算法、simulink 算法 。
-
本地脚本 方式:输入 算法名称 、 算法版本 、 启动脚本和结束脚本的文件路径 。点击脚本文件路径旁的 测试 ,如果没有报错,则为有效路径,再点击 创建 。
注意
如果点击 测试 后,文件下方出现红色小字 “ 文件不存在,请检查 ”,则说明在该路径上找不到此文件,需要重新填写。
-
驾驶模拟器、SimOneDriver 控制、API 算法、simulink 算法等 方式:输入 算法名称 。点击 创建 即可创建一个新的算法。
1.2 云端 ¶
1.2.1 云端–程序包 ¶
注意
云端支持两种上传算法.zip 文件的方式: 编译型 和 解释型 。
-
编译型 上传的.zip 文件中需要包括. exe 格式算法 ,和 SimOneAPI.dll、HDMapModule.dll、SSD.dll 三个库依赖文件 。
-
解释型 上传的.zip 文件中需要包括. exe 格式算法 、算法的 启动和结束脚本 和 SimOneAPI.dll、HDMapModule.dll、SSD.dll 三个 库依赖文件 。
-
在左侧导航栏打开 算法管理 界面,点击左上角的 新建算法 ,出现弹窗。
-
选择算法接入方式: 程序包 。
-
点击 浏览 或将 .zip 文件拖入上传区域。
-
填写 算法名称 和 算法版本 。
-
选择 运行环境 (Windows 系统或 Linux 系统)。
-
选择 语言类型 , 解释型 上传的文件中包含算法的执行脚本, 编译型 则不包含。用户按需选择即可。
-
填写 程序运行入口 , 解释型 填写**.exe** 算法 文件的名称及后缀, 编译型 填写 执行脚本 文件名称及后缀。
-
点击 创建 ,可以看到添加的算法出现在算法列表中。
1.2.2 云端–Docker 镜像 ¶
-
在左侧导航栏打开 算法管理 界面,点击左上角的 新建算法 ,出现弹窗。
-
选择算法接入方式: Docker 镜像 。
-
填写 算法名称 和 算法版本 。
-
选择 运行模板 :当前内置运行模板约定了 Docker 镜像中相关基础配置信息。正式项目需要客户与运维人员进行对接适配调整。
-
填写 docker 镜像地址 :针对用户算法打包生成 docker 镜像包,填写其对应的镜像管理平台 tag 地址,如:
images.5lvr.local:5000/gwm/algo/driving:202504080022_20。(镜像仓库由用户自己提供并管理。需提供镜像仓库可访问账号信息,由运维人员统一配置在 SimOne 后台系统中) -
点击 创建 ,可以看到添加的算法出现在算法列表中。
注意
Docker 镜像算法制作要求:
## 算法镜像要求
### 0. 安装系统依赖
- dumb-init
- curl
### 1. 内置准备脚本(prepareAll.sh)
案例启动前会被调用,可以做一些准备工作,比如启动roscore,脚本在准备工作完成后退出,架构等待脚本退出后开始启动案例
```bash
#!/bin/bash
...
```
### 2. 内置启动脚本(startAll.sh)
案例启动时会被调用,可以初始化运行环境,启动算法需要的一个或者多个进程,并且会随着案例结束(通过SimOneAPI感知)而退出,例子如下:
```bash
#!/bin/bash
#以下两行环境变量定义必须照抄
export SIMONE_SERVER_ADDR=$SIMONE_BRIDGE_IO_ADDR
export SIMONE_SERVER_PORT=$SIMONE_BRIDGE_IO_PORT
#以下是算法相关的启动,脚本最后需要阻塞在对接SimOneAPI的进程上,并且该进程的实现必须在接收到SimOneAPI案例结束的信号时退出进程
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/AEB
cd /tmp
/AEB/AEB
#如果需要使用streaming api,需要把UDP的端口设置成环境变量SIMONE_STREAMING_API_PORT对应的值,IP设置成0.0.0.0
```
### 3. 内置结束脚本(killAll.sh)
案例结束会被调用,可以强制清理所有算法相关的进程和资源文件,避免影响下次运行,例子如下:
```bash
#!/bin/bash
#清理所有的数据和进程,保持一个干净的环境为下次运行做准备
pkill -9 AEB
```
注意:
1. 三个脚本必须带可执行权限,可以是空实现,开头必须指定默认shell解析器
2. 脚本的路径可以用户自己定义,在对接时进行适配
2. 算法更新 ¶
2.1 本地端 ¶
在 算法管理 界面,选中一个算法,点击 鼠标右键 ,可查看算法右键功能,选择 编辑或参数设置 即可编辑修改算法对应的相关参数设置内容。
针对不同的算法对接方式,其编辑/参数设置界面展示的内容存在一些差异:
2.1.1 本地脚本算法 ¶
2.1.2 驾驶模拟器算法 ¶
2.1.3 SimOneDriver 算法 ¶
2.1.4 API 算法 ¶
2.1.5 Simulink 算法 ¶
2.2 云端_算法版本管理 ¶
在云端算法管理中,面向不同的算法接入方式,支持不同的能力:
-
针对 exe 程序包 和 Docker 镜像 的算法接入方式,支持 算法版本 管理,用户可选择算法,点击 鼠标右键 ,选择 添加版本 为算法新增一个版本。
-
针对 SimOneDriver 控制 的算法接入方式,不支持算法版本管理,用户可选择算法,点击 鼠标右键 ,选择 参数设置 调整算法的相关参数信息。
2.2.1 exe 程序包算法 ¶
添加算法版本时,在算法编辑界面中,针对 接入方式、运行环境、语言类型 不允许用户修改。
2.2.2 Docker 镜像算法 ¶
添加算法版本时,在算法编辑界面中,针对 接入方式、运行模板 不允许用户修改。
2.2.3 SimOneDriver 算法 ¶
针对 SimOneDriver 控制 的算法接入方式,不支持算法版本管理,仅支持算法控制参数设置。