C++算法接入 ¶
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
2.2 算法示例程序生成 ¶
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 创建用例 ¶
-
新建用例 ,选择 标准用例 ,填入 用例名称 。
2.3.2 编辑用例,加载算法主车 ¶
-
选择 地图 和 主车预设 ,可设置主车的 速度 为 10m/s。
-
拖入对手元素,尽量与主车保持一定距离,可设置其 速度 为 0 m/s ,然后点击 保存 用例。
2.3.3 运行用例,验证控制算法 ¶
-
点击 运行用例 ,将 默认控制器 和 自驾控制器 设置为 API 算法 ,然后点击 创建 ,运行用例。
-
进入用例之后用例仿真运行时间不会变化, 横纵向算法显示为 loading… ,此时用例在 等待接入算法状态 。
-
保证 AEB.exe 在用例运行前打开 ,若成功接入则在渲染视窗中会 展现算法效果 (例如 接入 AEB 算法后主车会在对手元素后一段距离减速至 0 m/s),且 横纵向算法 也会以此改变。
2.4 前端算法管理(可选) ¶
可将不同的算法进行前端管理,方便调用,参见 SIL软件在环测试 。
3. 上手教程 Ubuntu ¶
注意
从源代码编译
Linux 安装包附随带有 API 使用示例: SimOneAPI.tar.gz
3.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
-
添加环境变量 。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/SimOneApi库目录 (比如/SimOne/SimOneAPI/lib/Linux64)
3.2 生成算法工程 ¶
-
在 SimOne 的安装包中找到算法示例包 SimOneAPI.tar.gz 。
-
进入 SimOne 安装目录 /SimOne/ 执行
tar -xvf SimOneAPI.tar.gz解压算法示例包。
-
进入 SimOne 安装目录中的 /SimOne/SimOneAPI/ADAS/Bulid ,执行命令
bash gen_make_release.sh生成工程目录 。
-
在此目录再次执行 命令
bash rebuild_release.sh命令 生成可执行文件 ,并在 /SimOne/ SimOneAPI/ADAS/bin 目录当中查看 可执行文件 AEB 。
-
添加 SimOneAPI 环境变量,需要根据安装位置改变。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/SimOneApi库目录 (比如/SimOne/SimOneAPI/lib/Linux64)
-
执行算法,如
./AEB。
3.3 创建案例 ¶
-
案例库 新建 文件夹 ,点击 新建案例 。
-
选择 标准案例 ,然后点击 下一步 。
-
输入 案例名称 ,点击 创建 案例。
-
点击 主车预设 ,拖入 API 控制主车 ,拖入视窗。
-
点击 保存 和 运行案例 并 创建任务 。
-
查看算法接入状态,接入 纵向横向控制器 都显示 AEB 证明算法已经被成功接入,此时控制台打印信息已经发生改变。