ROS学习笔记(二)在VScode上启动ros编译C++程序

前提准备

1.这里需要提下载好Terminator终端,作用是可以在一个窗口里开启多个终端运行。

具体安装方法这里有:1.4.1 安装终端 · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

2.在ubuntu环境下安装VScode:我用的方法是先从网站上下载好Linux版本的vscode再拖到ubuntu 的下载文件中进行安装。

这里是vscode官网下载地址:Download Visual Studio Code - Mac, Linux, Windows

一、创建ROS工作空间

mkdir -p xxx_ws/src(必须得有 src) **创建一个带有src子文件的工作文件夹**
cd xxx_ws **进入工作文件夹**
catkin_make **构建使用 Catkin 构建系统的 ROS 工作空间**

 其中这里我补充一下关于catkin_make的定义与用法:

当你在 ROS 工作空间的根目录下运行catkin_make时,系统会:

  1. 查找工作空间中的 ROS 包。
  2. 编译这些包中的代码(C++、Python 等)。
  3. 链接它们的依赖关系。
  4. 最终生成可以执行的程序或库。

工作原理:

  • catkin_make 会自动在工作空间的 build/ 目录下生成编译文件。
  • 构建后的二进制文件会放在 devel/ 目录中。

常用场景:

  • 在 ROS 项目开发中,如果你对代码或包进行了修改,运行 catkin_make 可以重新编译项目,使改动生效。

二、在工作空间文件夹下启动vscode

在工作文件夹底下输入以下代码,会在工作文件夹下打开vscode:

code .

 三、vscode 中编译 ros

先编译一次当前文件,再进行一下步骤

快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build

点击配置设置为默认,修改.vscode/tasks.json 文件(复制粘贴以下代码就行啦):

{
// 有关 tasks.json 格式的文档,请参见
    // https://go.microsoft.com/fwlink/?LinkId=733558
    "version": "2.0.0",
    "tasks": [
        {
            "label": "catkin_make:debug", //代表提示的描述性信息
            "type": "shell",  //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
            "command": "catkin_make",//这个是我们需要运行的命令
            "args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
            "group": {"kind":"build","isDefault":true},
            "presentation": {
                "reveal": "always"//可选always或者silence,代表是否输出信息
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

在使用 ROS 和 Visual Studio Code (VSCode) 进行开发时,修改 .vscode/tasks.json 文件是为了方便在 VSCode 中集成构建过程,例如通过按快捷键直接运行 catkin_make 命令,而无需每次切换到终端手动输入命令。具体解释如下:

  1. "label": "catkin_make:debug"

    • 这是任务的名称,用于在 VSCode 任务列表中标识它。你可以将其命名为任何有意义的名字,例如 "catkin_make" 用于调试模式。
  2. "type": "shell"

    • 这个字段表示命令是在 shell 中执行的。因为 ROS 的构建命令 catkin_make 通常是在 Bash 等 shell 环境中运行的,所以这里选择 "shell" 类型。
  3. "command": "catkin_make"

    • 这个字段表示你希望执行的命令。在 ROS 项目中,catkin_make 是用于编译整个 ROS 工作空间的常用命令。
  4. "args": []

    • 这里可以添加 catkin_make 的命令行参数。比如你可以添加参数 -DCMAKE_BUILD_TYPE=Debug 来生成调试信息,或添加其他参数来定制构建过程。当前设置为空数组意味着执行 catkin_make 不带任何参数。
  5. "group": {"kind":"build","isDefault":true}

    • 这部分定义了任务的分类。"build" 表示这是一个构建任务,"isDefault": true 表示这是默认构建任务,按下 Ctrl+Shift+B 时会自动运行。
  6. "presentation": {"reveal": "always"}

    • 这个字段控制任务运行时的输出行为。"reveal": "always" 表示在执行任务时,VSCode 会始终显示任务的输出面板,方便你查看构建的详细信息。另一种选择是 "silent",意味着只有在错误发生时才显示输出。
  7. "problemMatcher": "$msCompile"

    • 这个字段用于将构建中的问题(如编译错误)与 VSCode 的问题窗口匹配。在这里使用了 VSCode 提供的标准问题匹配器 $msCompile,它会捕捉编译器输出中的错误和警告信息,直接在编辑器中高亮显示对应的代码行,方便你快速定位和修复问题。

为什么要修改 tasks.json

修改 .vscode/tasks.json 文件的主要目的是:

  • 自动化构建流程:将构建任务集成到 VSCode 环境中,避免每次手动输入 catkin_make
  • 提高开发效率:通过 VSCode 快捷键或任务面板快速运行编译,同时可以看到输出和错误信息。
  • 可视化错误和警告:通过 problemMatcher,错误信息能直接在编辑器中关联到代码,方便调试和修改。

一定要记住,在每次修改完文件的时候一档要记得保存!!!

四、创建 ROS 功能包

选定 src 右击 ---> create catkin package

 

点击完会出现以下弹窗👇,接着就是给你的功能包取个名字 

 

回车完会让你添加改功能包底下的依赖,一般会用到以下几个,输入完回车就好(千万不要输错,输错后面会执行错误):

roscpp rospy std_msgs

 出现以下页面代表创建成功,接着需要按下ctrl +shift+B编译(因为之前配置好了catkin_make,所以可以直接快捷键执行!)看看有没有报错。

编译完无错误代表成功创建啦~(如下图)接着我们就可以基于功能包的基础上创建cpp文件了!

 

五、在功能包src下新建cpp文件(复制粘贴以下代码即可)

这里的代码会涉及到一些cpp的语法,但是很简单,当作c来看也可以。 

/*
    控制台输出 HelloVSCode !!!

*/
#include "ros/ros.h"

int main(int argc, char *argv[])
{
    setlocale(LC_ALL,"");
    //执行节点初始化
    ros::init(argc,argv,"HelloVSCode");

    //输出日志
    ROS_INFO("Hello VSCode!!!哈哈哈哈哈哈哈哈哈哈");
    return 0;
}

输入完编译一下未报错,表示正常~(这里包含头文件那里有提示先不用管 。

我遇到的问题是中文输出会出现乱码,在函数里面添加以下任意一个语段就好:

setlocale(LC_CTYPE, "zh_CN.utf8");
setlocale(LC_ALL, "");

 接下来要去修改一下配置文件,图片里有指出改哪里~

修改完,你会发现cpp文件里面的包含库文件语句就不报错啦~ 

六、最后的配置工作

点开这里的cmake文件:

 我们需要修改这两个地方,并且修改完记得把语段前后的注释给删去:

修改完相应的文件名之后,可以开始编译(以后都是ctrl+shift+b)啦~ 

七、准备执行

7.1 新建bash终端,输入roscore启动ros终端

7.2 再新建一个bash终端输入如下,就可以输出内容啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值