自动驾驶开发者说|框架|如何用vscode调试apollo?

论坛 期权论坛 期权     
吴宇   2022-5-23 22:35   6870   9
引言

apollo自动驾驶框架是优秀的开源工程。作为自动驾驶开发人员,无论是架构设计还是算法细节的完善,apollo都有很多值得学习的地方。但是按照官方提供的GDB环境配置来看,复杂导致实际的调试效率低下。本文带你快速用vscode搭建起一个debug环境,快速上手使用apollo!
1.安装环境

主机系统:18.04.5 LTS(Bionic Beaver)
运行内存:16G
显卡:NVIDIA GTX 2080 8G
apollo 6.02.前置安装

2.1 安装apollo的环境

这部分安装的相关教程可以参考官方文档,或者参考以下链接的文章
自动驾驶开发者说| 框架 |如何快准狠的安装apollo6.0? - 冯偲的文章 - 知乎
2.2 vscode 插件安装--Remote - Containers

Remote - Containers可以进入docker容器里,结合vscode使用可以实现容器内的代码修改和调试。在vscode扩展功能中可以搜索并安装。
2.3 启动Apollo环境

cd apollo/
bash docker/scripts/dev_start.sh 完成启动之后使用docker ps查看所有的apollo镜像完成启动



图1 apollo docker列表

3. 在vscode中进入容器

完成所有前置安装和准备工作后,我们可以通过Remote-Containers这个工具进入Apollo的docker中了。步骤如下:



图 2 Remote-Containers 使用

完成之后,在新弹出的vscode界面中的左下角会显示当前的docker容器信息。



图3 进入docker内的vscode界面

4. 进行Remote-Containers在容器内的配置

如图3 中在命令窗口中,选择Open Container Configuration File,打开容器配置文件,配置进入容器后的一些环境变量,用户等,参考配置如下:注意:"remoteUser"需要修改成远程调试的用户名。
{
        "extensions": [
                "BazelBuild.vscode-bazel",
                "DamianKoper.gdb-debug",
                "eamodio.gitlens",
                "GitHub.vscode-pull-request-github",
                "Gruntfuggly.todo-tree",
                "jeff-hykin.better-cpp-syntax",
                "mhutchie.git-graph",
                "MS-CEINTL.vscode-language-pack-zh-hans",
                "ms-vscode-remote.remote-containers",
                "ms-vscode-remote.remote-ssh",
                "ms-vscode-remote.remote-ssh-edit",
                "ms-vscode-remote.remote-wsl",
                "ms-vscode.cmake-tools",
                "ms-vscode.cpptools",
                "ms-vscode.cpptools-extension-pack",
                "ms-vscode.cpptools-themes",
                "ms-vsliveshare.vsliveshare",
                "twxs.cmake"
        ],
        "workspaceFolder": "/apollo",
        "remoteUser": "fc",
        "remoteEnv": {
                "HISTFILE": "/apollo/.dev_bash_hist"
        }
}

5. 开始调试

1. 进入Apollo的目录, 重新编译Apollo代码,生成可调式的可执行文件。
bash apollo.sh build_dbg2. 配置vscode的调试文件launch.json,参考如下
{
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "/apollo/bazel-bin/cyber/mainboard",
            "args": ["-d","/apollo/modules/perception/production/dag/dag_streaming_perception.dag"],
            "stopAtEntry": false,
            "cwd": "/apollo",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            // "preLaunchTask": "C/C++: g++ 生成活动文件",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}参数解释:
    "program":是可执行文件的的路径,在这个调试配置中,调用的是mainboard可执行文件,该可执行程序可以加载相关模块的dag文件,完成模块的启动和运行。
    "args" :设置可执行文件的输入参数 "-d"为mainboard的参数,表明输入dag文件式,"/apollo/modules/perception/production/dag/dag_streaming_perception.dag为需要调试的dag文件,这个文件可以根据你自己的需要更改。
3. 打断点,按下F5调试。



图4 调试界面


6. 总结:


上述步骤完成之后便可以深入浅出的学习和了解Apollo各个模块的详细设计了,祝你在自动驾驶的路上越走越远,也希望无人驾驶的那个时代更快到来。
往期回顾:
往期回顾:
自动驾驶开发者说| 仿真 | 如何利用开源的自动驾驶仿真环境?
自动驾驶开发者说|仿真|如何安装配置lgsvl-apollo联调环境?
自动驾驶开发者说|框架|如何找到apollo感知模块的爽点?
自动驾驶开发者说| 框架 |如何快准狠的安装apollo6.0?
自动驾驶开发者说|行业|如何看待特斯拉传感器的部署?
自动驾驶开发者说|行业|如何看待无人驾驶汽车的发展?
自动驾驶开发者说 | 数据集 | 如何使用KITTI数据?
自动驾驶开发者说 | 前沿|如何进行LiDAR-Camera(雷达-相机)的联合标定?
自动驾驶开发者说|前沿|如何用360度全景图来深度估计?
自动驾驶开发者说|前沿|如何进行多传感器的融合?
分享到 :
0 人收藏
萍水相逢,尽是他乡之客

9 个回复

倒序浏览
2#
哈斗  1级新秀 | 2022-5-23 22:36:27 发帖IP地址来自 中国
大佬你好,我在用vscode attach container时候报了这个错误:unable to find user ugv: no matching entries in passwd file。请问这个怎么解决啊?
3#
cfh7  1级新秀 | 2022-5-23 22:37:13 发帖IP地址来自 北京
在安装apollo环境的时候docker,可以先把你的密码和用户名配置到docker 群组中,另外,你看一下你的配置文件,remote user需要填写你自己的用户名,那个地方需要留意
4#
0ar8a6  1级新秀 | 2022-5-23 22:37:53 发帖IP地址来自 中国
忘了改remote user了,现在docker进不去,显示unable to find user fc : no matching entires in passwd file,请问该怎么改回来呢
5#
os72bt  1级新秀 | 2022-5-23 22:37:59 发帖IP地址来自 北京
教程里,有个remote的配置文件,在那个里面修改
6#
最慢开的花儿  1级新秀 | 2022-5-23 22:38:18 发帖IP地址来自 北京
但是那不是要vscode先attach到docker吗,我现在是attach之后,就报错,左下角显示链接断开
7#
uybc  1级新秀 | 2022-5-23 22:38:28 发帖IP地址来自 北京
可以了,非常感谢
8#
suqhm  1级新秀 | 2022-5-23 22:39:28 发帖IP地址来自 中国
老哥怎么搞的?
9#
吴宇  管理员  伦敦金丝雀码头交易员 | 2022-5-23 22:39:55 发帖IP地址来自 北京
您好 我现在vscode连接不了docker 打不开配置文件 请问应该怎么修改
10#
mldq9  1级新秀 | 2022-5-23 22:40:09 发帖IP地址来自 北京
为什么我编译后没有生成mainboard可执行文件文件呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:42876
帖子:3380
精华:36
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP