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


🔥 更多精彩专栏

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

相关推荐
m0_609000425 分钟前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
开MINI的工科男1 小时前
深蓝学院-- 量产自动驾驶中的规划控制算法 小鹏
人工智能·机器学习·自动驾驶
AI大模型知识分享2 小时前
Prompt最佳实践|如何用参考文本让ChatGPT答案更精准?
人工智能·深度学习·机器学习·chatgpt·prompt·gpt-3
张人玉4 小时前
人工智能——猴子摘香蕉问题
人工智能
草莓屁屁我不吃4 小时前
Siri因ChatGPT-4o升级:我们的个人信息还安全吗?
人工智能·安全·chatgpt·chatgpt-4o
小言从不摸鱼4 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
AI科研视界4 小时前
ChatGPT+2:修订初始AI安全性和超级智能假设
人工智能·chatgpt
霍格沃兹测试开发学社测试人社区5 小时前
人工智能 | 基于ChatGPT开发人工智能服务平台
软件测试·人工智能·测试开发·chatgpt
小R资源5 小时前
3款免费的GPT类工具
人工智能·gpt·chatgpt·ai作画·ai模型·国内免费
artificiali8 小时前
Anaconda配置pytorch的基本操作
人工智能·pytorch·python