首页 > 其他分享 >Robot Operating System——使用VSCode调试ROS2代码

Robot Operating System——使用VSCode调试ROS2代码

时间:2024-08-23 10:55:26浏览次数:10  
标签:CMake VSCode sudo Robot System ros2 Debug cmake 调试

大纲

工欲善其事必先利其器。直接使用GDB调试代码毕竟不是很方便,我们将探索如何使用VSCode调试ROS2的代码。

我们以《Robot Operating System——创建最简单项目的步骤》的代码为基础,讲解如何配置和调试。

安装插件/组件

VSCode插件

在VSCode的插件页面,我们在远程开发环境中安装CMake Tools和C/C++。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

调试组件

然后在远程环境(Linux)中安装必须的调试组件

sudo apt-get update
sudo apt-get install build-essential gdb

自定义cmake命令

由于ROS2在编译运行前,都要通过下面命令初始化环境

source /opt/ros/jazzy/setup.bash

而CMake Tools没有设置该行为的机会,我们只能自定义一个文件,然后通过它来代理cmake的执行。

 sudo vim ~/ros2-cmake.sh

然后填入以下内容

#!/bin/bash

# 检查是否提供了至少一个参数
if [ "$#" -lt 1 ]; then
    echo "Usage: $0 <cmake-arguments>"
    exit 1
fi

# Source 环境设置脚本
source /opt/ros/jazzy/setup.bash

# 运行传递进来的 cmake 命令
cmake "$@"

保存文件后,我们赋予其执行权限。

sudo chmod +x ~/ros2-cmake.sh

然后将其软链接到/usr/bin目录下

sudo ln -s ~/ros2-cmake.sh /usr/bin/ros2-cmake

后面我就可以使用ros2-cmake来编译我们的ROS2相关的工程了。

配置CMake Tools

新增CMakePresets.json

我们在CMakeLists.txt同级目录下新增CMakePresets.json,其内容如下

{
    "version": 3,
    "cmakeMinimumRequired": {
        "major": 3,
        "minor": 10,
        "patch": 0
    },
    "configurePresets": [
        {
            "name": "Debug",
            "hidden": false,
            "description": "Debug build",
            "generator": "Unix Makefiles",
            "binaryDir": "${sourceDir}/build/",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug",
                "CMAKE_EXPORT_COMPILE_COMMANDS": "YES"
            },
            "environment": {
                "CC": "gcc",
                "CXX": "g++"
            }
        },
        {
            "name": "Release",
            "hidden": false,
            "description": "Release build",
            "generator": "Unix Makefiles",
            "binaryDir": "${sourceDir}/build/",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Release"
            },
            "environment": {
                "CC": "gcc",
                "CXX": "g++"
            }
        }
    ]
}

修改默认的cmake

Ctrl+P打开命令输入创建,输入并选择

> CMake:Open CMake Tools Extension Settings

在这里插入图片描述
定位到Workspace下,并找到CMake: Cmake Path,将其值改成ros2-cmake。这样只有我们测试的工程的cmake被修改,而不会影响到整个实例。
在这里插入图片描述

编译Debug版

Ctrl+P唤出命令输入框,输入并选择

> CMake:Select Configure Preset

在这里插入图片描述
然后选择Debug
在这里插入图片描述
这一步会触发编译
在这里插入图片描述

配置测试环境

修改./bashrc文件

 sudo vim ~/.bashrc

在其末尾新增一行,输入source /opt/ros/jazzy/setup.bash
在这里插入图片描述
这样启动的测试环境也将准备好环境。

启动测试

我们先在main函数中下断点
在这里插入图片描述
然后在侧边栏CMake Tools的PROJECT OUTLINE下找到我们要调试的文件,然后右击它,选择Debug
在这里插入图片描述
然后我们看到代码中断到断点处
在这里插入图片描述

总结

  1. 需要配置CMakePresets.json文件。
  2. 需要自定义cmake命令,用于编译链接。
  3. 需要修改当前用户shell打开时的环境,用于调试。

参考资料

标签:CMake,VSCode,sudo,Robot,System,ros2,Debug,cmake,调试
From: https://blog.csdn.net/breaksoftware/article/details/140907777

相关文章

  • SpringBoot 用的 spring-jcl 打印日志,与 LoggingSystem 有鸡毛关系?
    开心一刻现实中,我有一个异性游戏好友,昨天我心情不好,找她聊天我:我们两个都好久没有坐下来好好聊天了她:你不是有女朋友吗我:人家不需要我这种穷人啊她:难道我需要吗前情回顾从源码分析SpringBoot的LoggingSystem→它是如何绑定日志组件的从源码的角度讲述了SpringBoot......
  • 多模态学习之论文阅读:《Systematic comparison of deep-learning based fusion strate
    《Systematiccomparisonofdeep-learningbasedfusionstrategiesfor multi-modal ultrasoundindiagnosisof liver cancer》 -2024.10 NEUROCOMPUTING 影响因子7.9(一)多模态数据构成研究设计了“病变配对”方法来构建数据集,包括B模式超声、剪切波弹性成像(SWE)和......
  • 从源码分析 SpringBoot 的 LoggingSystem → 它是如何绑定日志组件的
    开心一刻今天心情不好,想约哥们喝点我:心情不好,给你女朋友说一声,来我家,过来喝点哥们:行!我给她说一声我:你想吃啥?我点外卖哥们:你俩定吧,我已经让她过去了我:???我踏马让你过来!和她说一声哥们:哈哈哈,我踏马寻思让她过去呢前情回顾SpringBoot2.7霸王硬上弓Logback1.3→不甜但解渴......
  • VSCode打开HBuilderX创建的uniapp项目
    要在VisualStudioCode(VSCode)中打开由HBuilderX创建的UniApp项目,您可以按照以下步骤操作:目录1.打开VSCode2.打开项目文件夹3.安装所需插件4.配置项目5.启动开发服务6.开发和调试7.其他工具1.打开VSCode确保您的VSCode已经安装并配置好。如果......
  • CVSS(Common Vulnerability Scoring System)打分规则解读
    CVSS(CommonVulnerabilityScoringSystem)提供了一种根据漏洞的主要特征进行打分,反映其严重性的方法。CVSS已成为被广泛使用的标准。下面是CVSS3.1版本计算器的界面截图,本文对BaseScore的打分标准做解读,并提供一些建议。同时会对每个维度选项做翻译。 AttackVector攻击向......
  • VSCode配置python项目
    一、项目的目录结构推荐的Python项目目录结构根目录*README.md:项目描述、安装说明和用法*requirements.txt:项目依赖项(freeze<requirements.txt生成;install-r.vscode/requirements.txt安装)*.gitignore:用于版本控制的忽略文件源代码目录*__init__.py:空文件,指示目录......
  • VSCode深度配置,学会这些至上提升50的效率
    看完本文,你将让你的VSCode打字流畅度提升114倍不同工程使用各自的项目配置、插件更加美观的自定义窗口更加智能代码提示、替换更加清晰的代码块结构,能一目了然删掉那些标题党推荐的无用插件,使用VSCode自带的功能自定义代码颜色,VSCode主题现况概要作者......
  • VSCode系列 - 如何用VSCode搭建C++高效开发环境(2)
    1.插件的用法1.1.C/C++1.1.1.插件介绍1.1.2.插件配置1.2.Clang-Format1.3.cpp-check-lint1.3.1.cpplint1.3.2.cppcheck1.3.3.插件的使用1.4.C/C++AdvancedLint1.4.1.插件介绍1.4.2.插件配置1.5.BracketPairColorizer1.5.1.插件介绍1.......
  • VSCode系列 - 如何用VSCode搭建C++高效开发环境(1)
    VSCode是笔者用过的最好用的开发工具,没有之一。笔者14年的码龄生涯中,先后用过Eclipse、IntelliJIDEA、WebStorm、PyCharm、VisualStudio(2010/2013/2015)、NetBeans、SublimeText等,但自从用VSCode之后,就再没换过其他工具,一直用到现在有5年多的时间。1.本文目标这篇文......
  • Ros2 Moveit2 - Robot Model and Robot State
    RobotModelandRobotState 在本节中,我们将向您介绍用于在MoveIt中使用运动学的C++API。RobotModel和RobotState类RobotModel 和 RobotState 类是提供对机器人运动学访问权限的核心类。RobotModel 类包含所有链接和关节之间的关系,包括从URDF加载的关节限制属......