乐于分享
好东西不私藏

Apollo v10 源码编译避坑指南|跑通 PNC 仿真全流程

Apollo v10 源码编译避坑指南|跑通 PNC 仿真全流程

一、主要内容

前一篇介绍了如何基于源码搭建本地开发环境(见:一篇上手:本地搭建 Apollo 开发环境(零基础可用))。本篇在此基础上,介绍如何基于源码编译启动 Apollo 10 新仿真工具 DreamView Plus,并跑通 PNC 仿真。

二、主要问题

Apollo 10 默认采用包管理模式,即便下载的是源码,其文件组织与编译工具仍会沿用包管理模式。编译过程一般没有问题,但编译完成后使用 DreamView Plus 时,会报各种错误,例如 monitor 启动失败、planning 启动失败等。

三、本篇贡献

  1. 通过修改环境变量,解决启动阶段各种文件找不到的问题,从而跑通 PNC 仿真。
  2. 增加文件操作日志,打出具体报错位置,感兴趣的同学可借此提升调试能力。
  3. 提供关闭所有服务的脚本,避免某些情况下节点未完全关闭导致下次运行异常。
  4. 清理本地工作目录:编译之后会产生许多修改或新增文件,删除不需要的,通过 gitignore 忽略需要保留的。
  5. 所有修改均在分支 ‎feature/v10_dev,链接:
    https://github.com/ApolloAuto/apollo/compare/master...ahuer2435:apollo:feature/v10_dev

四、板端操作

  1. 下载代码,并切到 ‎feature/v10_dev 分支(具体参考 一篇上手:本地搭建 Apollo 开发环境(零基础可用) 第四步):
cd apollogit pullgit checkout feature/v10_dev
  1. 进入 docker,下载地图:
bash docker/scripts/dev_into.sh buildtool map get sunnyvale_big_loop

默认代码仓库自带两个地图,但没跑起来,这里重新下载了 sunnyvale_big_loop。

  1. 编译:
buildtool build -j 16 -m 0.7

-j 指定使用 16 个 core,-m 指定使用全部内存的 70%。不限制 CPU 和内存时,编译容易卡死。首次编译建议全编,后续调试可通过 -p 指定目录或模块。

  1. 启动 DreamView Plus:
bash scripts/bootstrap.sh start_plus

如图

所示。

五、DreamView Plus 操作

  1. 打开 DreamView Plus:浏览器访问 http://localhost:8888/

  2. 启动 PNC 仿真:按步骤选择:

  • 模式:PnC
  • 操作:Sim_Control
  • 资源:按图示选择
  • 模块:开启 Planning

如图 

 所示,然后点击「路由编辑」。

六、路由编辑

按图示顺序设置起点和终点,注意方向,需要结合地图实际车道线。如图

所示,设置好后点击「保存编辑」。

七、运行

点击下图

标记 1 处的「开始」按钮。运行过程中,红色线代表 Routing 线(标记 2 处)。在终端执行:

cyber_node list

如图所示

可以看到当前运行的节点,包括 planning。

八、修改

feature/v10_dev 分支本次共有四笔修改,如下图所示

  1. 修改环境变量,修改后可跑通 PNC 仿真。
  2. 增加文件 log,方便调试问题。
  3. 增加关闭节点脚本,对应脚本:‎kill_all.sh。
  4. 增加 gitignore,清理工作空间。

有余力的同学可按需 cherry pick。

九、小结

本篇主要基于 Apollo v10 源码,使用 Apollo 仿真工具 DreamView Plus 跑通了 PnC 仿真。

相关学习资料