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

目录

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

0 专栏介绍

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

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


1 Ubuntu下安装VSCode

1.1 基本安装

步骤如下:

  • 通过国内源下载VSCode

  • 将压缩包解压并移动到usr/local目录

    shell 复制代码
    sudo mv VSCode-linux-x64 /usr/local/
  • 获取运行权限:

    shell 复制代码
    sudo chmod +x /usr/local/VSCode-linux-x64/code
  • 安装VSCode,注意此处只能用普通用户权限

    shell 复制代码
     /usr/local/VSCode-linux-x64/code
  • 创建软链接:

    shell 复制代码
    sudo ln -s /usr/local/VSCode-linux-x64/code /usr/local/bin/vscode

    之后在任意位置可通过终端输入vscode启动软件

1.2 将VSCode添加到侧边栏

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

shell 复制代码
cd /usr/share/applications
sudo vim vscode.desktop

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

在该桌面文件中添加

shell 复制代码
[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

3 VSCode运行ROS2环境步骤

3.1 安装编译依赖项

  • 创建虚拟环境,原理可看Anaconda安装与Python虚拟环境配置保姆级图文教程(附速查字典)

    shell 复制代码
    conda create -n ros2 python=3.10
  • 切换到虚拟环境

    shell 复制代码
    conda activate ros2
  • 安装colcon构建系统

    shell 复制代码
    pip install -U colcon-common-extensions
  • 安装其他依赖项

    shell 复制代码
    pip install catkin_pkg numpy lark setuptools==58.2.0
    conda install -c conda-forge gcc=12.1.0

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

shell 复制代码
mkdir -p xxx_ws/src
cd xxx_ws
colcon build

3.3 启动VSCode与配置

shell 复制代码
cd xxx_ws
vscode .

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

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内容替换为:

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++版本

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

cpp 复制代码
#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版本

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

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工程环境


🔥 更多精彩专栏

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

相关推荐
tinker3 分钟前
OSX M1 平台 gazebo 安装记录(失败)
机器人
Lx35210 分钟前
智能体失控预案:开发者的道德红绿灯
人工智能
齐尹秦12 分钟前
CSS 创建与使用学习笔记
人工智能·python·tensorflow
rocksun14 分钟前
为何云原生基础设施对于GenAI而言不可或缺
人工智能·云原生
fbbmore14 分钟前
LlamaIndex+Ollama构建《劳动法》问答机器人
人工智能·ollama
前端飞天猪15 分钟前
Day2:零基础玩转AI换脸、配音与动作模仿
人工智能·设计
_一条咸鱼_16 分钟前
AI 大模型 RAG 原理的深度剖析与源码解读
人工智能
不剪发的Tony老师17 分钟前
PandaAI:一个基于AI的对话式数据分析工具
人工智能·数据挖掘·数据分析
IT古董17 分钟前
【漫话机器学习系列】192.独热编码(One-Hot Encoding)
人工智能
rocksun17 分钟前
Agentic Workflow对微服务开发者意味着什么
人工智能·微服务