Ubuntu 20.04 安装 Apollo 8.0&vscode仿真调试

1 背景

        在上一篇博文中介绍了Autoware的仿真,其中各模块的算法大家可以做些了解,但是和主流自驾公司还是有些区别,而且Apollo的算法相对来说还是更贴近量产方案的,因此本篇主要介绍Apollo最新版本8.0的安装调试。(本篇依然以PNC的角度进行仿真)

2 安装

        系统环境依赖:Ubuntu20.04 + Docker + VSCode + Apollo8.0

        这里就不去安装nvidia的显卡驱动了,调试Planning模块用处不是特别大,如果是感知模块的同学,可以考虑安装。

        2.1 安装docker

             仍然是参考官方文档,有详细介绍。
                https://docs.docker.com/engine/install/ubuntu/
                https://docs.docker.com/engine/install/linux-postinstall/

        2.2 安装vscode

             直接官网下载安装即可:Visual Studio Code

        2.3 下载Apollo8.0代码

            因为笔者这里下载了最新的全量源码,所以在编译完成时的空间占用较多,且较为耗时,网上也有安装部分模块的文档,可以参考。(默认是master分支,可以切到release-8.0分支)

git clone https://github.com/ApolloAuto/apollo.git

        2.4 启动docker容器

             进入工作目录,然后启动docker

 cd ~/apollo

 bash docker/scripts/dev_start.sh 

        2.5 启动vscode绑定Apollo的docker

            (1)在vscode的左侧栏中可以找到Apollo的container,Attach即可进入Apollo的工程,在vscode下面的命令窗口可进行下一步编译操作(推荐使用这种方式,个人体验后认为后续Debug调试更方便一些);

            (2)也可在vscode外面的命令窗口进入docker环境(对于比较喜欢命令行的同学也可使用这种方式Debug)

 bash docker/scripts/dev_into.sh

        2.6 进入docker后,执行编译命令

sudo bash apollo.sh build

        这个环节耗时比较久,第一次全量编译,会把整个Apollo工程都编译,后续可选编某一个模块,如planning模块的编译:

sudo bash apollo.sh build planning

3 仿真

        3.1 启动DreamView

                在docker中执行命令:

bash scripts/bootstrap.sh

                在浏览器中网址栏输入:http://localhost:8888

        3.2 DreamView配置

(1)配置Tasks

        如上图所示,选择左侧竖栏标签“Tasks”,然后在右上角工具栏配置车型和地图场景,在下方的“Others”栏中选择“Sim Control”。

(2)配置Module Controller

         如上图所示,选择左侧竖栏标签“Module Controller”,然后在下方的“Modules”栏中选择“Routing”和“Planning”。

(3)配置Route Editing

        如上图所示,选择左侧竖栏标签“Route Editing”,在地图中先后选择起点和终点,然后点击上方的“Send Routing Request”。

        随后会在图形界面出现换道的轨迹,并且车也会进行自动驾驶。

        到此,完成了planning模块的仿真链路,后续如果换地图场景,可下载选配。

4 Debug调试

4.1 gdb命令调试        

网上大部分都是老版本的debug调试,编译成功后会直接生成planning的可执行文件(老版本是有planning.cc的文件),从8.0的版本来看,编译完成后不再会生成planning整个模块的可执行文件,而是通过cyber里的mainboard来进行调度动态库的形式来运行程序。最终还是参考官方文档来进行debug的操作。(https://github.com/ApolloAuto/apollo/blob/r8.0.0/docs/14_Others/%E4%BB%A3%E7%A0%81%E5%AE%9E%E8%B7%B5/how_to_debug.md)

        修改完代码且顺利编译后,在Docker内部使用gdb调试指令即可,主要操作如下:

# set break point
b modules/planning/tasks/optimizers/path_optimizer.cc:46
# run
r
# display break point
info b
# delete break point
d num
# continue
c
# one step run
n
# step into
s
# exit gdb debug
q

4.2 VScode中打断点debug

        主要注意以下两点:

        (1)编译时选择debug模式;

        (2)写好launch.json文件;

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb)Launch Apollo Planning",
            "type": "cppdbg",
            "request": "launch",
            "program": "/apollo/bazel-bin/cyber/mainboard/mainboard",
            "args": [
                "-d",
                "/apollo/modules/planning/dag/planning.dag"
            ],
            "stopAtEntry": false,
            "cwd": "/apollo",  //${workspaceFolder}
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "-enable-pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

        最终呈现的效果如下:

5 总结

        本篇文章主要参考了Apollo社区的安装使用文档以及项目中自带的debug帮助文档进行调试,vscode在这里扮演命令窗口和查看代码工具的功能。本篇文章并没有介绍如何在vscode中打断点进行debug的教程,其实原理是一样的,通过启动mainboard来加载planning模块,后续也会更新进来。

        总体来说,Apollo的planning模块相对还是比较全的,对于即将从事或者已经从事自动驾驶行业的同学来说,使用这套工具来进行开发和优化自己想做的内容还是比较合适的。

  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能汽车人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值