IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 在VSCode中配置ROS开发环境 -> 正文阅读

[开发工具]在VSCode中配置ROS开发环境

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

一、在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运行编译生成的可执行文件。可在终端中看到输出。
在这里插入图片描述
至此,配置完成。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 11:06:31  更:2022-01-24 11:08:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:17:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码