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

目录

  • 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
    在这里插入图片描述

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 timedef 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.rhkb.cn/news/283520.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【每日一问】IOS手机上Charles证书过期怎么办?

1、如何查看证书是否过期? 设置>通用>VPN与设备管理 2、在Charles中重置证书 步骤1&#xff1a;重置证书 Help>SSL Proxying>Reset Charles Root Certificate… 步骤2&#xff1a;在浏览器中&#xff0c;下载证书 首先&#xff0c;手机连上代理&#xff0c;然…

JavaScript 权威指南第七版(GPT 重译)(二)

第四章&#xff1a;表达式和运算符 本章记录了 JavaScript 表达式以及构建许多这些表达式的运算符。表达式 是 JavaScript 的短语&#xff0c;可以 评估 以产生一个值。在程序中直接嵌入的常量是一种非常简单的表达式。变量名也是一个简单表达式&#xff0c;它评估为分配给该变…

阿里云2核4G云服务器ECS和轻量应用服务器价格表

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

面试算法-82-不同路径

题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f; …

律师如何看待项目管理中的技术风险

大家好&#xff0c;我是不会魔法的兔子&#xff0c;是一枚北京的执业律师&#xff0c;创建[项目管理者的法小院儿]&#xff0c;持续从法律的角度分享项目管理中的风险问题及预防&#xff0c;让项目管理者能够提早发现与解决项目执行过程中的风险&#xff0c;同时欢迎大家一起交…

【C语言】数据在内存中的存储(包含大小端字节序问题)~

一、前言 我们在刚开始学习C语言的时候&#xff0c;就接触到了很多数据的不同类型。我们也知道&#xff0c;数据是存储在一块内存空间的&#xff0c;且我们只知道数据的类型决定着&#xff0c;该数据在内存中所占内存空间的大小&#xff0c;且超过一个字节的数据在内存中存储的…

手撕算法-接雨水

描述 分析 i位置能积累的雨水量&#xff0c;等于其左右两边最大高度的最小值。为了能获取i位置左右两边的最大高度。使用动态规划。两个dp数组&#xff1a; leftMaxrightMax 其中 leftMax[i] 代表i位置左边的最大高度rightMax[i] 代表i位置右边的最大高度 初始状态&#x…

Nacos源码流程图

1.Nacos1.x版本服务注册与发现源码 流程图地址&#xff1a;https://www.processon.com/view/link/634695eb260d7157a7bc6adb 2.Nacos2.x版本服务注册与发现源码 流程图地址&#xff1a;https://www.processon.com/view/link/634695fb260d7157a7bc6ae0 3.Nacos2.x版本GRPC…

Visual Studio 2013 - 高亮设置括号匹配 (方括号)

Visual Studio 2013 - 高亮设置括号匹配 [方括号] 1. 高亮设置 括号匹配 (方括号)References 1. 高亮设置 括号匹配 (方括号) 工具 -> 选项… -> 环境 -> 字体和颜色 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

React - 实现菜单栏滚动

简介 本文将会基于react实现滚动菜单栏功能。 技术实现 实现效果 点击菜单&#xff0c;内容区域会自动滚动到对应卡片。内容区域滑动&#xff0c;指定菜单栏会被选中。 ScrollMenu.js import {useRef, useState} from "react"; import ./ScrollMenu.css;export co…

网络原理(5)——IP协议(网络层)

目录 一、IP协议报头介绍 1、4位版本 2、4位首部长度 3、8位服务器类型 4、16位总长度 5、16位标识位 6、3位标志位 7、13位偏移量 8、8位生存空间 9、8位协议 10、16位首部检验和 11、32位源IP地址 12、32位目的IP地址 二、IP协议如何管理地址&#xff1f; 1、动…

python 空间距离计算

目录 python 空间距离计算 已知两点&#xff0c;画三角形 批量矩阵计算 python 空间距离计算 要在空间中找到一个点&#xff0c;使其位于点 b 和 c 之间的连线上&#xff0c;并且与点 b 的距离等于点 a 到点 b 的距离的2倍。 import numpy as npif __name__ __main__:a …

链路聚合的应用场景

STP&#xff1a;聚合后计算 物理端口的速率叠加 链路聚合、端口聚合&#xff0c;链路捆绑 把多根链路逻辑捆绑在一起&#xff0c;当STP进行拓扑计算时此时会按照聚合后链路计算链路聚合物理链路速率的叠加最多可以用8个链路同时捆绑 1.提升带宽 2.增加网络的高可用性&#…

【计算机网络】基本概念

基本概念 IP 地址端口号协议协议分层封装分用客户端服务器请求和响应两台主机之间的网络通信流程 IP 地址 概念&#xff1a;IP 地址主要是用于唯一标识网络主机、其他网络设备&#xff08;如路由器&#xff09;的网络地址。简单来说&#xff0c;IP地址用来唯一定位主机。格式&…

ky10.aarch64安装Jenkins

参考地址&#xff1a;《安装部署 Jenkins》 前言 有war包和rpm两种安装方式&#xff0c;如果是长期使用更加推荐rpm的安装方式&#xff0c;可以更好的管理Jenkins&#xff1b; 我此次安装jenkins主要用于测试和简单的个人使用&#xff0c;所以选择更轻便的war安装。 1 下载J…

校招应聘流程讲解

在整个应聘流程中&#xff0c;记得保持积极的态度、认真准备面试&#xff0c;同时也要对自己的能力和经验有清晰的认识&#xff0c;这样才能在竞争激烈的校园招聘中脱颖而出&#xff0c;成功获得心仪的工作机会. 1. 校招资源获取 想要参加校招&#xff0c;首先需要获取校招资…

Mac上玩《赛博朋克2077》mac电脑怎么玩这个游戏

X用户crushovitz_b最近发现&#xff0c;在《赛博朋克2077》游戏主菜单页面&#xff0c;将鼠标停在版本号选项卡上面足够长时间&#xff0c;就会发现游戏当前的版本号由2.12变为了2.0.77&#xff0c;这是对游戏标题2077的致敬彩蛋。 《赛博朋克2077》的叙事总监兼续集副总监Pawe…

【漏洞复现】科立讯通信指挥调度平台editemedia.php sql注入漏洞

漏洞描述 在20240318之前的福建科立讯通信指挥调度平台中发现了一个漏洞。该漏洞被归类为关键级别,影响文件/api/client/editemedia.php的未知部分。通过操纵参数number/enterprise_uuid可导致SQL注入。攻击可能会远程发起。 免责声明 技术文章仅供参考,任何个人和组织使…

吴恩达机器学习笔记 二十七 决策树中连续值特征的选择 回归树

还是猫狗分类的案例&#xff0c;假如再增加一个特征weight&#xff0c;该值是一个连续的值&#xff0c;如何在决策树中使用该特征&#xff1f; 如下图所示&#xff0c;尝试不同的阈值&#xff0c;如 weight<9 , 此时左边有四个样本&#xff0c;都为猫&#xff0c;右边有六个…

【c++入门】引用,内联函数,auto

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本节我们来到c中一个重要的部分&#xff1a;引用 目录 1.引用的基本概念与用法1.1引用特性1.2使用场景1.3传值、传引用效率比较1.4引用做返回值1.5引用和指针的对…