在VSCode中配置ROS开发环境

环境:Ubuntu18.04 + ROS Melodic 时间:2022年

一、在VSCode中安装插件

安装以下插件:

1. C/C++

2. ROS

3. Cmake

4. CMake Tools

5. Code Runner

二、创建ROS工作空间

mkdir ~/ros_learning # 创建工作空间
cd ~/ros_learning
mkdir src
cd src
catkin_init_workspace # 初始化工作空间
cd ..
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=1

上述最后一行的命令可在build文件夹下生成compile_commands.json文件。

三、在VSCode中配置ROS工作环境

1. 初始化,创建功能包并添加需要编译的C++文件

使用VSCode打开ros_learning文件夹。打开时若有此提示,可直接选择Yes。

对于以下提示,由于我们的CMakeLists.txt是存放于src文件夹中的,因此可忽略。

 

此时文件目录如下。

 

 

右键src选择Create Catkin Package

创建功能包,命名为hello_ros,回车后,添加依赖roscpprospy

此时的src文件夹:

继续在src/hello_ros/src目录下添加一个cpp文件,命名为helloROS.cpp注意:文件名如果不加“cpp”,该文件在左侧目录下仍会显示为一个C++文件的图标,但此时该文件不是C++文件,无法正常运行。在创建文件时一定要加上cpp的后缀。),内容如下:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

#include "ros/ros.h"
#include "std_msgs/String.h"

int main(int argc, char** argv)
{
    ros::init(argc, argv, "talker");
    ros::NodeHandle n;
    ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
    ros::Rate loop_rate(10);
    int count = 0;
    while(ros::ok())
    {
        std_msgs::String msg;
        std::stringstream ss;
        ss << "hello ROS !" << count;
        msg.data = ss.str();
        ROS_INFO("%s", msg.data.c_str());
        chatter_pub.publish(msg);
        ros::spinOnce();
        loop_rate.sleep();
        count++;
    }
    return 0;
}

helloROS.cpp中,可见无法找到头文件。

因此,下面需对json文件进行配置。

2. 配置c_cpp_properties.json

  • c_cpp_properties.json:用于配置编译器环境,包括启动器代号、位数(这些是自定义的)、编译选项、启动设置、编译模式等。
c_cpp_properties.json的详细介绍: https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference

按F1,找到C/C++:编辑配置(JSON)。如果你在“三、1”中点击了Yes,也可以在文件目录的.vscode下找到c_cpp_properties.json

将其内容修改为

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/opt/ros/melodic/include"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json"
        }
    ],
    "version": 4
}

3. 配置launch.json

  • launch.json:VSCode用于调试的配置文件,比如指定调试语言环境,指定调试类型等等。

按F5启动调试,会生成launch.json,修改其内容如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
            {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/devel/lib/hello_ros/helloROS", // 表示可执行程序所在的路径,此处按实际情况修改。其中,${workspaceRoot}表示VScode加载的文件夹的根目录,
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
        }
    ]
}

4. 配置tasks.json

  • tasks.json:用于编译。 按F1,找到任务:配置任务,创建tasks.json文件,修改其内容如下:
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "catkin_make", //代表提示的描述性信息
            "type": "shell",  //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
            "command": "catkin_make",//这个是我们需要运行的命令
            "args": ["-DCMAKE_EXPORT_COMPILE_COMMANDS=1"],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
            "group": {"kind":"build","isDefault":true},
            "presentation": {
                "reveal": "always",//可选always或者silence,代表是否输出信息
                "panel": "new"
            },
            "problemMatcher": "$msCompile"
        },
    ]
}

5. 编辑CMakeLists.txt

C++是一种编译语言,在运行之前需要将代码编译为可执行文件,如果使用Python等解析语言编写代码,则不需要进行编译,可以省去此步骤。 ROS中的编译器使用的是CMake,编译规则通过功能包中的CmakeLists.txt文件设置,使用catkin命令创建的功能包中会自动生成该文件(在“三、1”中已完成),已经配置多数编译选项,并且包含详细注释。 一个CMakeLists.txt对应于一个功能包(hello_ros),故CMakeLists.txt中涉及的路径都是在hello_ros的基础之上,无需绝对路径。

Cmake命令的介绍可参考官方文档: https://cmake.org/cmake/help/v3.0/manual/cmake-commands.7.html#

修改src/hello_ros/CMakeLists.txt文件,向其中添加以下内容:

catkin_package(
  CATKIN_DEPENDS
)
# 头文件路径
include_directories(
include
  ${catkin_INCLUDE_DIRS}
)
# 生成可执行文件
add_executable(helloROS src/helloROS.cpp) # 此处按实际情况修改
# 链接库
target_link_libraries(helloROS ${catkin_LIBRARIES}) # 此处按实际情况修改
  • add_executable:用于设置需要编译的代码和可执行文件。第一个参数为期望生成的可执行文件名称,后边的参数为参与编译的源码文件(cpp),如果需要多个代码文件,则可在后面依次列出,中间使用空格进行分割。
  • target_link_libraries:用于设置链接库。很多功能需要使用系统或第三方的库函数,通过该选项可以配置执行文件链接的库文件,其第一个参数与add_executable相同,是可执行文件的名称,后面依次列出需要链接的库。若未使用其他库,添加默认链接库即可。

以上编译内容会帮助系统生成可执行文件,放置在<workspace>/devel/lib/<package name>下。

四、结果测试

Ctrl+Shift+B进行编译,可以看到与catkin_make一样的编译过程。 新开一个终端,运行roscore启动Master节点。 按F5运行编译生成的可执行文件。可在终端中看到输出。

至此,配置完成。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值