SIL软件在环测试

注意

本教程只涉及 算法管理 部分,算法接入具体内容参考 开发者手册 中的 算法接入

如果涉及 Simulink、Carmaker、CarSim、TruckSim 等联合仿真内容,请参考 联合仿真

如何进行算法管理

算法在本地打包为可执行程序后可接入 SimOne,可支持 .exe / .zip /Docker 镜像包 格式文件。

注意

SimOne 协作版 本地客户端 云客户端 导入算法的操作不同。

  • 本地客户端 面向算法研发人员进行本地算法调试使用,需要准备. exe 格式算法的 执行脚本

  • 云端 面向云端大规模并发测试使用,支持 exe 程序包、Docker 镜像 两种接入方式。

A、exe 程序包 :需要上传包含. exe 格式算法以及 库依赖文件 等的. zip 文件

B、Docker 镜像 :需要准备算法镜像包 以及 对应镜像仓库地址。

1. 算法添加

1.1 本地端

  1. 在左侧导航栏打开 算法管理 界面,点击左上角的 新建算法 ,出现弹窗。

描述
  1. 选择算法接入方式: 本地脚本、驾驶模拟器、SimOneDriver 控制、API 算法、simulink 算法

  2. 本地脚本 方式:输入 算法名称 算法版本 启动脚本和结束脚本的文件路径 。点击脚本文件路径旁的 测试 ,如果没有报错,则为有效路径,再点击 创建

描述

注意

如果点击 测试 后,文件下方出现红色小字 “ 文件不存在,请检查 ”,则说明在该路径上找不到此文件,需要重新填写。

描述
  1. 驾驶模拟器、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 三个 库依赖文件

描述
  1. 在左侧导航栏打开 算法管理 界面,点击左上角的 新建算法 ,出现弹窗。

描述
  1. 选择算法接入方式: 程序包

  2. 点击 浏览 或将 .zip 文件拖入上传区域。

  3. 填写 算法名称 算法版本

  4. 选择 运行环境 (Windows 系统或 Linux 系统)。

  5. 选择 语言类型 解释型 上传的文件中包含算法的执行脚本, 编译型 则不包含。用户按需选择即可。

  6. 填写 程序运行入口 解释型 填写**.exe** 算法 文件的名称及后缀, 编译型 填写 执行脚本 文件名称及后缀。

  7. 点击 创建 ,可以看到添加的算法出现在算法列表中。

描述
1.2.2 云端–Docker 镜像
  1. 在左侧导航栏打开 算法管理 界面,点击左上角的 新建算法 ,出现弹窗。

描述 描述
  1. 选择算法接入方式: Docker 镜像

  2. 填写 算法名称 算法版本

  3. 选择 运行模板 :当前内置运行模板约定了 Docker 镜像中相关基础配置信息。正式项目需要客户与运维人员进行对接适配调整。

  4. 填写 docker 镜像地址 :针对用户算法打包生成 docker 镜像包,填写其对应的镜像管理平台 tag 地址,如: images.5lvr.local:5000/gwm/algo/driving:202504080022_20 。(镜像仓库由用户自己提供并管理。需提供镜像仓库可访问账号信息,由运维人员统一配置在 SimOne 后台系统中)

  5. 点击 创建 ,可以看到添加的算法出现在算法列表中。

注意

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.2 云端_算法版本管理

在云端算法管理中,面向不同的算法接入方式,支持不同的能力:

  • 针对 exe 程序包 Docker 镜像 的算法接入方式,支持 算法版本 管理,用户可选择算法,点击 鼠标右键 ,选择 添加版本 为算法新增一个版本。

    描述
  • 针对 SimOneDriver 控制 的算法接入方式,不支持算法版本管理,用户可选择算法,点击 鼠标右键 ,选择 参数设置 调整算法的相关参数信息。

2.2.1 exe 程序包算法

添加算法版本时,在算法编辑界面中,针对 接入方式、运行环境、语言类型 不允许用户修改。

描述
2.2.2 Docker 镜像算法

添加算法版本时,在算法编辑界面中,针对 接入方式、运行模板 不允许用户修改。

描述
2.2.3 SimOneDriver 算法

针对 SimOneDriver 控制 的算法接入方式,不支持算法版本管理,仅支持算法控制参数设置。

描述