ROS2从入门到精通0-3:VSCode 搭建 ROS2 工程环境

news/2025/2/21 14:58:15

目录

  • 0 专栏介绍
  • 1 Ubuntu下安装VSCode
    • 1.1 基本安装
    • 1.2 将VSCode添加到侧边栏
  • 2 VSCode集成相关插件
  • 3 VSCode运行ROS2环境步骤
    • 3.1 安装编译依赖项
    • 3.2 创建工作空间和源码空间
    • 3.3 启动VSCode与配置
  • 4 测试工程环境
    • 4.1 C++版本
    • 4.2 Python版本

0 专栏介绍

本专栏旨在通过对ROS2的系统学习,掌握ROS2底层基本分布式原理,并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。

🚀详情:《ROS2从入门到精通》


1 Ubuntu下安装VSCode

1.1 基本安装

步骤如下:

  • 通过国内源下载VSCode
  • 将压缩包解压并移动到usr/local目录
    sudo mv VSCode-linux-x64 /usr/local/
    
  • 获取运行权限:
    sudo chmod +x /usr/local/VSCode-linux-x64/code
    
  • 安装VSCode,注意此处只能用普通用户权限
     /usr/local/VSCode-linux-x64/code
    
  • 创建软链接:
    sudo ln -s /usr/local/VSCode-linux-x64/code /usr/local/bin/vscode
    
    之后在任意位置可通过终端输入vscode启动软件

1.2 将VSCode添加到侧边栏

进入application文件夹并新建桌面文件

cd /usr/share/applications
sudo vim vscode.desktop

根据应用取名***.desktop,该方法适用于其他应用。

在该桌面文件中添加

[Desktop Entry]
Encoding=UTF-8
Name=VSCode
Comment=VSCode
Exec=/usr/local/VSCode-linux-x64/code
Icon=/usr/local/VSCode-linux-x64/resources/app/resources/linux/code.png
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;

对于其他应用,主要修改四个项目

  • Name
  • Comment
  • Exec
  • Icon

前两个随便描述,Exec为应用程序可执行文件的路径;Icon为应用程序图标的路径。

2 VSCode集成相关插件

主要包含:

  • C/C++ Microsoft
    在这里插入图片描述

  • C++ Intellisense austin
    在这里插入图片描述

  • CMake Tools Microsoft
    在这里插入图片描述

  • Python Microsoft
    在这里插入图片描述

  • ROS Microsoft
    在这里插入图片描述

ROS2_83">3 VSCode运行ROS2环境步骤

3.1 安装编译依赖项

  • 创建虚拟环境,原理可看Anaconda安装与Python虚拟环境配置保姆级图文教程(附速查字典)
    conda create -n ros2 python=3.10
    
  • 切换到虚拟环境
    conda activate ros2
    
  • 安装colcon构建系统
    pip install -U colcon-common-extensions
    
  • 安装其他依赖项
    pip install catkin_pkg numpy lark setuptools==58.2.0
    conda install -c conda-forge gcc=12.1.0
    

3.2 创建工作空间和源码空间

mkdir -p xxx_ws/src
cd xxx_ws
colcon build

3.3 启动VSCode与配置

cd xxx_ws
vscode .

新建.vscode目录,添加配置文件tasks.json,内容替换为:

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

即可通过快捷键ctrl + shift + B调用编译

编译后.vscode文件夹中会产生

  1. c_cpp_properties.json: 与C/C++运行头文件、库文件配置有关
  2. settings.json: 与Python解释器有关

c_cpp_properties.json内容替换为:

{
  "configurations": [
      {
          "browse": {
              "databaseFilename": "",
              "limitSymbolsToIncludedHeaders": true
          },
          "includePath": [
              "/opt/ros/humble/include/**",
              "/usr/include/**",
              "/usr/lib/**",
              "/usr/local/include",
              "${workspaceFolder}/**"
          ],
          "name": "ROS2",
          "defines": [],
          "compilerPath": "/usr/bin/g++",
          "cStandard": "gnu17",
          "cppStandard": "c++17",
          "intelliSenseMode": "linux-gcc-x64"
      }
  ],
  "version": 4
}

4 测试工程环境

4.1 C++版本

测试代码(暂时不用管什么意思)

#include "rclcpp/rclcpp.hpp"

class HelloWorldNode : public rclcpp::Node
{
    public:
        HelloWorldNode() : Node("node_helloworld")
        {
            while(rclcpp::ok())
            {
                RCLCPP_INFO(get_logger(), "Hello World");
                sleep(1);
            }
        }
};

int main(int argc, char * argv[])                               
{
    rclcpp::init(argc, argv);                        
    rclcpp::spin(std::make_shared<HelloWorldNode>()); 
    rclcpp::shutdown();                               
    return 0;
}

配置CMakeLists.txtpackage.xmlctrl + shift + B调用编译与测试

在这里插入图片描述

4.2 Python版本

测试代码(暂时不用管什么意思)

#!/usr/bin/env python3 
# -*- coding: utf-8 -*-

import rclpy                                 
from rclpy.node import Node                     
import time

def main(args=None):                             
    rclpy.init(args=args)                        
    node = Node("node_helloworld")             
    
    while rclpy.ok():                           
        node.get_logger().info("Hello World")    
        time.sleep(0.5)                        
    
    node.destroy_node()                       
    rclpy.shutdown()                            

配置setup.cfgsetup.pypackage.xmlctrl + shift + B调用编译与测试

在这里插入图片描述

至此完成VSCode搭建ROS2工程环境


🔥 更多精彩专栏

  • ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

http://www.niftyadmin.cn/n/5451579.html

相关文章

开发组合:PHP+MySQL 同城社区小程序源码 同城便民信息发布系统源码 源码开源可二开含搭建教程

同城便民信息发布系统源码在提升信息发布效率、促进商家宣传、增强用户互动、实现信息聚合与分类管理、个性化定制与扩展以及数据统计与分析等方面发挥着重要作用。 今天小编给大家分享一个同城社区小程序源码、同城便民信息发布系统源码&#xff0c;开发组合PHPMySQL&#xf…

【OJ】vector刷题

个人主页 &#xff1a; zxctscl 如有转载请先通知 题目 1. 136.只出现一次的数字1.1 分析1.2 代码 2. 118.杨辉三角2.1 分析2.2 代码 3.137. 只出现一次的数字 II3.1 分析3.2 代码 4. 260.只出现一次的数字 III4.1 分析4.2 代码 1. 136.只出现一次的数字 1.1 分析 如果某一个数…

C++(7): std::list的使用

std::list 容器介绍及用法 1. std::list std::list是 C 标准模板库&#xff08;STL&#xff09;中的一个顺序容器适配器&#xff0c;它提供了双向链表的数据结构。与 std::vector 不同&#xff0c;std::list 不存储连续的元素&#xff0c;因此它可以高效地在中间插入和删除元…

关于《海岛奇兵》中n点能量可造成最大伤害的计算

最近在玩海岛奇兵, 里面有 武器A, 第n次使用消耗(10 6 * (n - 1))点能量并造成18315伤害; 武器B, 第n次使用消耗 (3 2 * (n - 1))点能量并造成8124伤害, 就想着能不能写一个程序计算一下, 当有x点能量时, 可造成的最大伤害是多少? 分别使用AB武器各多少次? 讨论: https://…

蓝桥杯-子矩阵

""" 题目来源 https://www.lanqiao.cn/problems/3521/learning/?page1&first_category_id1&name%E5%AD%90%E7%9F%A9%E9%98%B5 """ import os import sys from collections import deque# 请在此输入您的代码 n, m, a, b map(int, inpu…

Linux系统下的网络大门:代理安装与配置指南

为了让Linux服务器用户能够更有效地下载GitHub或者其他海外资源&#xff0c;加速网络访问体验&#xff0c;我提供以下详细的步骤来安装和配置Clash——一款强大且灵活的跨平台代理工具&#xff0c;以便利用代理服务器优化网络连接速度。 1.下载项目 对应的github网址链接为&a…

数字后端概念——FinFET/Nanosheet FET

FinFET/Nanosheet FET的概念 3nm后&#xff0c;芯片该何去何从&#xff1f; 3nm后&#xff0c;芯片该何去何从&#xff1f; 解决以上问题的有效办法是将电源/接地线埋入基板&#xff0c;即BPR&#xff08;Buried Power Rails&#xff09;。利用BPR方法&#xff0c;可将Track数…

机器学习揭秘:解锁从理论到实践的每一步!

机器学习揭秘&#xff1a;解锁从理论到实践的每一步&#xff01; 机器学习&#xff1a;从理论到实践的完整指南引言第一部分&#xff1a;机器学习概念定义与重要性历史背景 第二部分&#xff1a;机器学习步骤数据收集数据预处理特征工程模型选择训练模型模型评估参数调优模型部…