跳转至

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 算法示例程序生成

2.2.1 方式一:执行脚本

通过运行 .bat / .sh 脚本自动生成工程并启动算法,适合快速验证。

注意

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

2.2.1.1 生成工程目录

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

注意

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

(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/SimOneAPI/lib/Release 目录中

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

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

2.2.1.4 执行算法

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

2.2.2 方式二:Visual Studio

使用 Visual Studio 2017 手动打开并编译工程,适合需要调试或自定义算法的场景。

注意

进入 Visual Studio 执行生成工程操作

2.2.2.1 生成算法工程

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

注意

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

(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 工程,编译模式切换为 ReleaseDebug

注意

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/SimOneAPI/lib/Win64。

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

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

2.3 用例编辑运行

2.3.1 创建用例

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

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

(1)选择 地图主车预设 ,可设置主车的 速度10m/s

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

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

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

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

(3)保证 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

(2)添加环境变量。

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

3.2 生成算法工程

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

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

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

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

(5)添加 SimOneAPI 环境变量,需要根据安装位置改变。

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

(6)执行算法,如 ./AEB

3.3 创建案例

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

(2)选择 标准案例,然后点击 下一步

(3)输入 案例名称,点击 创建 案例。

(4)点击 主车预设,拖入 API 控制主车,拖入视窗。

(5)点击 保存运行案例创建任务

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