(ROS)在VSCode上对C++程序进行配置

  在学习ROS,我选择的IDE是vscode,虽然对于新手不是很友好,其难点在于对一些文件的配置比较繁琐,下面就是ROS运行C++程序的基本流程的框架。(本人也是新手小白,仅供学习和参考)。

1. 创建工作空间:

mkdir -p ${file_name}/src

在终端新建一个文件夹file_name,文件夹下面有src名称的文件夹

 

进入该新建的工作空间,对其进行编译

cd ${file_name}
catkin_make

编译完成后,可以可视化其工作目录,如下图。 

 

 2. 进入该工作空间,启动vscode

cd ${file_name}
code .

 3. 配置编译ROS

按住快捷键 ctrl + shift + B,选择catkin_make:build的设置进入,修改里面的内容,将一下的代码复制并替换进去。,注意在任何时候都不要忘记保存你当前所修改的文件,否则程序下一次的执行不会对你的修改有所反应。

修改完成后,次快捷键是用来对你的程序进行编译,在ROS中,你需要频繁对你的代码进行编译

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"
        }
    ]
}

 4.创建ROS功能包

找到src文件夹,鼠标右键,选择 Create Catkin Package(创建catkin功能包)

 在弹窗中,第一个输入是功能包的名称,第二个输入就是你功能包的依赖

 

 一般来说,ROS里面添加的依赖就是 roscpp, rospy, std_msgs 这三个,前两个就是你所用来写代码的编程语言,后面的一个是ROS里面用来通讯的。

  创建好后,你可以看见项目的目录下面新增了一个名称为 windows 的功能包

c++文件就是在windows文件夹下的src中进行存放的。 我们新建一个c++文件开始编写。如果include在这里报错,就在c_cpp_properties.json文件中把 c++14 改为 c++17。

我使用的是ubuntu20.04

 

 记得保存。

5.配置 CMakeLists.txt

找到windows下的CMakeLists.txt文件,修改里面的第136行和149-151行(解开注释,修改名称)

 add_executable(${PROJECT_NAME}_node src/windows_node.cpp)

对于这个代码,输入节点的映射名称和需要运行的c++文件名称。映射名称自己取。

即:映射名称 src/c++代码名称.cpp

一般来说,这两个名称应该是一样的,不一样也行。保证一样是因为在后面运行的时候,我们需要用到这个映射名称,保持名字统一有利于我们定位文件,不容易混杂混淆。

target_link_libraries(${PROJECT_NAME}_node

${catkin_LIBRARIES}

)

这里输入上面的映射名称

即:用映射名称替换${PROJECT_NAME}_node 

修改后如下:

 ​​​​​

 

 6.运行文件

在运行前,先快捷键编译一下程序。

 

在vscode的终端中输入roscore启动ROS核心

 

再新开一个终端输入

source ./devel/setup.bash

用来不断刷新。

再输入你的功能包名称+映射名称,就是刚刚在CmakeList文件中自己取的。这就是为什么刚刚在设置映射名称的时候要和c++文件名称进行统一的原因。以为以后如果你的项目大,节点多,会忘记你自己设置的映射名称是什么,统一后就没有这个顾虑了。

rosrun ${package_name} node_name.cpp

然后就是完美运行

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值