【ROS2笔记二】使用colcon构建ROS2工作空间

2.使用colcon构建ROS2工作空间

2.1一个构建的示例

在ROS1中,我们使用catkin_makecatkin_tools、和catkin_make_isolated作为ROS的构建工具,但在ROS2中,我们使用colcon来作为构建工具,具体的原因可以参考该文档A universal build tool

首先我们需要先安装构建工具colcon

sudo apt install python3-colcon-common-extensions

catkin相比,删除了devel目录。下面举个例子使用colcon构建工具。

1.首先创建一个工作区的目录

cd 你想放置的位置
mkdir colcon_test_ws && cd colcon_test_ws

2.然后clone官方提供的示例源码

git clone https://github.com/ros2/examples src/examples -b humble

3.使用colcon进行构建

colcon build

使用这条语句进行构建的时候,允许我们更改src目录下的python文件而无需重新build

colcon build --symlink-install

构建完成后,我们会在src同级目录中看到buildinstalllog目录,接下来介绍一下ROS2中的工作空间workspace,相比于ROS1中的工作空间,ROS2中删除了devel目录,目前只存在

├── build
├── install
├── log
└── src
  • src用于存放ROS2包的源代码
  • build目录存放中间文件,对于每个包,将创建一个子文件,并在其中调用CMake
  • install目录是每个包的安装位置
  • log存放colcon调用的各种日志信息

4.运行节点

进入刚才创建的colcon_test_ws,先source一下资源

source ./install/setup.bash

这条命令的作用和ROS1中的source ./devel/setup.bash命令是一致的。

然后运行一个订阅者节点,再打开一个终端运行发布者节点

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
source install/setup.bash
ros2 run examples_rclcpp_minimal_publisher publisher_member_function

即可以看到订阅者显示发布者发布的消息了。

2.2构建你自己的ROS2 workspace

我们这里可以从头到尾构建一个自己的ROS2 workspace

1.首先建立自己的存放目录的位置

mkdir -p colcon_test02_ws/src && cd colcon_test02_ws

2.然后进行build

这里无需像ROS1中一样,先进行catkin_init,这里直接使用colcon进行build即可,

colcon build --symlink-install

出现结果:

Summary: 0 packages finished [0.39s]

然后出现了相应的目录,这样我们就可以在src文件中创建我们自己的功能包了,并编写我们自己的源代码文件了

├── build
├── install
├── log
└── src

Reference

d2lros2
ROS2 tutorial

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/807532.shtml

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

相关文章

数据知识产权登记前为何需要区块链存证_存储在国外的数据可以做数据资产登记证申请码

各地已公布的管理办法中,均把“数据区块链存证或公证”证明材料做为向各地数据知识产权登记部门提交登记申请表中必要材料之一。北京市数据知识产权登记管理办法要求:有下列情况之一的,不予登记:(三)登记前…

mashgrid函数到底有啥作用?好处究竟在哪?

在用matlab的时候经常看到mashgrid函数这个函数,但是即使看过很多遍其底层源码,也难以理解他到底好在哪,有啥具体作用。今天终于搞明白了,现在记录一下。 mashgrid函数到底有啥作用?好处究竟在哪? 先说结…

LeetCode-热题100:32. 最长有效括号

题目描述 给你一个只包含 ( 和 ) 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 1: 输入: s “(()” 输出: 2 解释: 最长有效括号子串是 “()” 示例 2: 输入&…

【SpringBoot】-- mapstruct进行类型转换时Converter实现类不能自动生成代码问题解决

问题描述 我的问题如下&#xff1a; 应该在红色区域生成对应的转换细节&#xff0c;但是这里只返回了一个空对象 问题解决 加入lombok-mapstruct-binding依赖,也要注意依赖引用顺序问题 <dependency><groupId>org.projectlombok</groupId><artifactId&…

uniapp项目引入组件

1、在项目新建文件uni_modules 2、通过uniapp官网查找组件 uni-app官网 3、下载组件 4、将下载好的组件放到步骤1创建的uni_modules目录下 5、在hbuilderX中重新运行小程序

LangFriend - 一款Long-Term Memory 的日历应用

文章目录 学术工作公司为什么要使用日记应用程序&#xff1f;定制总结 本文翻译整理自&#xff1a; https://blog.langchain.dev/langfriend/ (发布于2024 年 3 月 28 日) 在LangChain我们最感兴趣的概念之一就是内存。 每当我们对一个概念感兴趣时&#xff0c;我们都喜欢构建一…

理解 Nginx 的多站点配置:为每个网站单独配置

Nginx 是一个高性能的 Web 服务器&#xff0c;广泛用于托管和管理网站。它之所以受欢迎&#xff0c;部分原因在于它的灵活性和强大的配置能力。特别是对于管理多个网站&#xff0c;Nginx 提供了一种高效且组织良好的方法。让我们逐步了解如何使用 Nginx 配置多个网站&#xff0…

【Android】【root remount】【2】如何判断设备是否remount

前言 高版本的android设备&#xff0c;在remount之后&#xff0c;如果再进行ota升级&#xff0c;会产生异常&#xff0c;从而无法升级成功。 如何判断设备是否remount 当前已android 10 平台为例 当我们执行 adb remount 时&#xff0c;系统调用会调用到system/core/adb/dae…

1024编程

关于编程和信息学&#xff0c;常常有一些讨论&#xff1a;“课内数学好没用&#xff0c;小学奥数没学过不能先学信息学”。这个说法有道理吗&#xff1f; 其实&#xff0c;“小学奥数”不是必须&#xff0c;只要课内语文、数学学得不错&#xff0c;四年级左右就可以学信息学。我…

子域名是什么?有什么作用?

在互联网世界中&#xff0c;域名是我们访问网站的关键。每一个公司的网站都需要拥有自己的域名&#xff0c;其中有些大型公司的网站还不止一个域名&#xff0c;除了主域名外还拥有子域名。有些人感到非常困惑&#xff0c;不知道子域名是什么。其实子域名也就是平时所说的二级域…

不可错过的3D建模素材网站,让设计更加丰富多彩!

3D建模已经渗透到了各个行业和领域&#xff0c;从游戏设计、室内设计到建筑设计&#xff0c;3D模型的使用越来越广泛。然而&#xff0c;创建出优秀的3D模型就需要大量的优质3D建模素材。幸运的是&#xff0c;有一些网站提供了大量的高质量3D建模素材&#xff0c;这些都是我们设…

C语言 | Leetcode C语言题解之第20题有效的括号

题目&#xff1a; 题解&#xff1a; char pairs(char a) {if (a }) return {;if (a ]) return [;if (a )) return (;return 0; }bool isValid(char* s) {int n strlen(s);if (n % 2 1) {return false;}int stk[n 1], top 0;for (int i 0; i < n; i) {char ch pair…

AI 对话完善【人工智能】

AI 对话【人工智能】 前言版权开源推荐AI 对话v0版本&#xff1a;基础v1版本&#xff1a;对话数据表tag.jsTagController v2版本&#xff1a;回复中textarea.jsChatController v3版本&#xff1a;流式输出chatLast.jsChatController v4版本&#xff1a;多轮对话QianfanUtilChat…

西电B测介绍

西电B测是西安电子科技大学&#xff08;西电&#xff09;的一项重要的实验教学环节&#xff0c;主要涉及通信系统和计算机网络的综合设计实验。这一测试旨在加深学生对通信原理和计算机网络知识的理解&#xff0c;提升他们的实践能力和团队协作精神。以下是对西电B测的详细介绍…

c++的友元函数,详细笔记,细说三种友元用法

解释友元 友元用通俗易懂的话来说&#xff0c;就是&#xff1a;当有人来到你家里&#xff0c;他就只能呆在客厅里面&#xff0c;你是不可能让他来到你的卧室之中的。但是如果这个人是你的朋友&#xff0c;那么你是默许他可以进入你的卧室的。 此时呢&#xff1f;我告诉你&…

SpringBoot+Vue,轻松实现网页版人脸登录与精准识别

目录 1、技术介绍 2、技术原理 2.1、人脸检测 ①参考模板法 ②人脸规则法 2.2、人脸跟踪 2.3、人脸比对 ①特征向量法 ②面纹模板法 识别过程 案例 一、springboot后端项目 1&#xff0c;拉取项目后&#xff0c;导入相关依赖jar包 2&#xff0c;执行sql文件夹下面…

QT进阶------------------QPushButton(快速添加按钮与使用)

1、解决如何快速的添加按钮 在qt中&#xff0c;通常我们喜欢一个按钮添加一个信号与槽&#xff0c;但是这样写太过浪费时间。要是多个按钮那不是要写30个信号与槽&#xff0c;说实话&#xff0c;我不太喜欢这样。 在ui中&#xff0c;只要拖动按钮&#xff0c;会自动生成按钮的名…

智能运维场景 | 科技风险预警,能实现到什么程度?

[ 原作者&#xff1a;擎创夏洛克&#xff0c;本文略做了节选和改编 ] 每次一说到“风险预警”&#xff0c;就会有客户问我们能做怎样的风险预警。实际上在智能运维厂商来说&#xff0c;此风险非彼风险&#xff0c;不是能做银行的业务上的风险预警&#xff08;比如贷款风险等&a…

golang的引用和非引用总结

目录 概述 一、基本概念 指针类型&#xff08;Pointer type&#xff09; 非引用类型&#xff08;值类型&#xff09; 引用类型&#xff08;Reference Types&#xff09; 解引用&#xff08;dereference&#xff09; 二、引用类型和非引用类型的区别 三、golang数据类型…

深度学习500问——Chapter07:生成对抗网络(GAN)(1)

文章目录 7.1 GAN基本概念 7.1.1 如何通俗理解GAN 7.1.2 GAN的形式化表示 7.1.3 GAN的目标函数是什么 7.1.4 GAN的目标函数和交叉熵有什么区别 7.1.5 GAN的Loss为什么降不下去 7.1.6 生成式模型、判别式模型的区别 7.1.7 什么是mode collapsing 7.1.8 如何解决mode collapsing …