C++算法接入

注意

本教程以 AEB 算法为例进行介绍,别的算法也可使用本教程进行接入。

C++接口信息请先查看 C++_Python 接口语言支持

1. 文件定义

序号 文件(上图蓝框文件表示为 Windows) 解释
1 src 文件夹 放示例代码
2 CMakeLists.txt 使用 CMake 构建工具配置和生成项目构建系统的脚本
3/7 gen_vs_proj.bat /gen_make_debug.sh/gen_make_release.sh 生成算法工程的执行文件
4 build 文件夹 生成的算法工程文件夹
5/8 build_debug.bat /build_debug.sh/rebuild_debug.sh Windows /Linux 环境下(重新)生成 debug 可执行算法程序的执行文件
build_release.bat /build_release.sh/rebuild_release..sh Windows /Linux 环境下(重新)生成 release 可执行算法程序的执行文件
6 built_in_controller.bat /built_in_controller.sh Windows /Linux 环境下生成控制器的执行文件

2. 上手教程 Windows

2.1 环境准备

Visual Studio 2017、CMake

注意

Visual Studio 2017 安装资源 👉 vs_Community.exe ;

包含以下几个包即可👇

2.2 算法示例程序生成

注意

接入算法方式一:(点击下方跳转)

执行脚本生成工程和启动算法

注意

接入算法方式二:(点击下方跳转)

进入vs执行生成工程操作

2.2.1 接入算法方式一

注意

执行脚本生成工程和启动算法

2.2.1.1 生成工程目录

1.进入算法工程目录: 【SimOne-安装路径】/SimOne/SimOneAPI/ADAS/Build

注意

【SimOne-安装路径】/SimOne/SimOneAPI/Turial 也适用本教程。

2.鼠标左键双击执行 gen_vs_proj.bat 脚本,生成 build 目录。

2.2.1.2 生成可执行算法程序

1. 【SimOne-安装路径】/SimOne/SimOneAPI/ADAS/bin/Release 中有准备好的生成示例,可以进行查看。

注意

如果要生成新的算法程序可以按照后续步骤操作,会 新生成 exe 程序替换原有的 exe

也可以修改 Release 文件夹名称,则会 重新生成所有内容

2.鼠标左键双击执行 build_release.bat 脚本,生成可执行算法程序。

3.查看生成出来的可执行算法程序,位于 【SimOne-安装路径】/SimOne/SimOneAPl/lib/Release 目录中

2.2.1.3 为可执行算法程序添加依赖库

将生成的算法可执行程序拷贝至依赖库目录里面 【SimOne-安装路径】/SimOne/SimOneAPl/lib/Win64。

2.2.1.4 执行算法

点击任意一个算法示例即可执行。


2.2.2 接入算法方式二

注意

进入vs执行生成工程操作

2.2.2.1 生成算法工程

1.进入算法工程目录: 【SimOne-安装路径】/SimOne/SimOneAPI/ADAS/Build

注意

【SimOne-安装路径】/SimOne/SimOneAPI/Turial 也适用本教程。

2.鼠标左键双击执行 gen_vs_proj.bat 脚本,生成 build 目录。

3.生成算法 Visual Studio 工程: 【SimOne_安装路径】/SimOne/SimOneAPI/ADAS/Build/build/ADASSample.sln

2.2.2.2 编译

1.用 Visual Studio 2017 打开 ADASSample 工程,编译模式切换为 Release Debug

注意

Debug 模式会生成在 Debug 目录,Release 生成在 Release 目录

2.选择 ALL_BUILD 设为启动项目

3.可按照如下方式查看相关算法的示例,并自行进行修改。

4.可选择 ALL_BUILD 点击 生成 ,也可选择单独的算法(如 AEB) 点击 生成

注意

如果之前生成过可以点击 重新生成

5. 【SimOne-安装路径】/SimOne/SimOneAPI/ADAS/bin 文件夹下生成算法可执行文件 Release

2.2.2.3 为可执行算法程序添加依赖库(参考方式一)

将生成的算法可执行程序拷贝至依赖库目录里面 【SimOne-安装路径】/SimOne/SimOneAPl/lib/Win64。

2.2.2.4 执行算法(参考方式一)

点击任意一个算法示例即可执行。

2.3 用例编辑运行

2.3.1 创建用例

  1. 新建用例 ,选择 标准用例 ,填入 用例名称

2.3.2 编辑用例,加载算法主车

  1. 选择 地图 主车预设 ,可设置主车的 速度 为 10m/s。

  1. 拖入对手元素,尽量与主车保持一定距离,可设置其 速度 0 m/s ,然后点击 保存 用例。

2.3.3 运行用例,验证控制算法

  1. 点击 运行用例 ,将 默认控制器 自驾控制器 设置为 API 算法 ,然后点击 创建 ,运行用例。

  1. 进入用例之后用例仿真运行时间不会变化, 横纵向算法显示为 loading… ,此时用例在 等待接入算法状态

  1. 保证 AEB.exe 在用例运行前打开 ,若成功接入则在渲染视窗中会 展现算法效果 (例如 接入 AEB 算法后主车会在对手元素后一段距离减速至 0 m/s),且 横纵向算法 也会以此改变。

2.4 前端算法管理(可选)

可将不同的算法进行前端管理,方便调用,参见 SIL软件在环测试


3. 上手教程 Ubuntu

注意

从源代码编译

Linux 安装包附随带有 API 使用示例: SimOneAPI.tar.gz

3.1 环境准备

  1. 准备好 C++库,用户需安装好 cmake 和 clang 编译器。

sudo apt-get install uuid-dev libx11-dev libxrandr-dev libsdl2-dev libx11-dev clang libc++-dev abi++-dev libc++1
  1. 添加环境变量 。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/SimOneApi库目录 (比如/SimOne/SimOneAPI/lib/Linux64)

3.2 生成算法工程

  1. 在 SimOne 的安装包中找到算法示例包 SimOneAPI.tar.gz

  1. 进入 SimOne 安装目录 /SimOne/ 执行 tar -xvf SimOneAPI.tar.gz 解压算法示例包。

  1. 进入 SimOne 安装目录中的 /SimOne/SimOneAPI/ADAS/Bulid ,执行命令 bash gen_make_release.sh 生成工程目录

  1. 在此目录再次执行 命令 bash rebuild_release.sh 命令 生成可执行文件 ,并在 /SimOne/ SimOneAPI/ADAS/bin 目录当中查看 可执行文件 AEB

  1. 添加 SimOneAPI 环境变量,需要根据安装位置改变。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/SimOneApi库目录 (比如/SimOne/SimOneAPI/lib/Linux64)

  1. 执行算法,如 ./AEB

3.3 创建案例

  1. 案例库 新建 文件夹 ,点击 新建案例

  1. 选择 标准案例 ,然后点击 下一步

  1. 输入 案例名称 ,点击 创建 案例。

  1. 点击 主车预设 ,拖入 API 控制主车 ,拖入视窗。

  1. 点击 保存 运行案例 创建任务

  1. 查看算法接入状态,接入 纵向横向控制器 都显示 AEB 证明算法已经被成功接入,此时控制台打印信息已经发生改变。