《动手学ROS2》3.2ROS2工作空间介绍

2023-05-16

本系列教程作者:小鱼
公众号:鱼香ROS
QQ交流群:139707339
教学视频地址:小鱼的B站
完整文档地址:鱼香ROS官网
版权声明:如非允许禁止转载与商业用途。
公众号

3.2 ROS2工作空间介绍

大家好,我是小鱼~上一节小鱼给大家介绍了一下节点,运行一个节点的时候使用的是

ros2 run 包名字 可执行文件名字

那你有没有想过,我们想找到一个节点(可执行文件),就必须要先知道它在哪个包,那问题就来了,想要找到某个包,该去哪里找?

答案就是:工作空间

注意:一个工作空间下可以有多个功能包,一个功能包可以有多个节点存在

1. 工作空间

小鱼定义:工作空间是包含若干个功能包的目录,一开始大家把工作空间理解成一个文件夹就行了。这个文件夹包含下有src。所以一般新建一个工作空间的操作就像下面一样:

mkdir: 创建一个目录,mkdir -p :递归创建目录,即使上级目录不存在,会按目录层级自动创建目录

mkdir -p turtle_ws/src
cd turtle_ws/src

是不是觉得就像创建一个目录(其实就是创建一个目录)

2.功能包是什么

功能包可以理解为存放节点的地方,ROS2中功能包根据编译方式的不同分为三种类型。

  • ament_python,适用于python程序
  • cmake,适用于C++
  • ament_cmake,适用于C++程序,是cmake的增强版

后面小鱼会带你一起手把手创建功能包~

3.功能包获取的两种方式

3.1 安装获取

安装一般使用

sudo apt install ros-<version>-package_name

安装获取会自动放置到系统目录,不用再次手动source。

3.2 手动编译获取

手动编译相对麻烦一些,需要下载源码然后进行编译生成相关文件。

什么时候需要手动编译呢?一般我们能安装的功能包都是作者编译好程序将可执行文件上传到仓库中,然后我们才能够通过apt进行安装,如果作者还没来得及测试上传,或者忘记了测试上传,就会找不到对应的包,这时候就需要手动编译安装了。

另外一种就是我们需要对包的源码进行修改,这个时候也需要自己编译修改。

手动编译之后,需要手动source工作空间的install目录。

下一节学习完编译器colcon小鱼会通过实例带大家一起下载编译安装功能包~

4.与功能包相关的指令 ros2 pkg

create       Create a new ROS2 package
executables  Output a list of package specific executables
list         Output a list of available packages
prefix       Output the prefix path of a package
xml          Output the XML of the package manifest or a specific tag

1.创建功能包

ros2 pkg create <package-name>  --build-type  {cmake,ament_cmake,ament_python}  --dependencies <依赖名字>

2.列出可执行文件

列出所有

ros2 pkg executables

列出某个功能包的

ros2 pkg executables turtlesim

image-20210915172702101

3.列出所有的包

ros2 pkg list

4.输出某个包所在路径的前缀

ros2 pkg prefix  <package-name>

比如小乌龟

ros2 pkg prefix turtlesim

5.列出包的清单描述文件

每一个功能包都有一个标配的manifest.xml文件,用于记录这个包的名字,构建工具,编译信息,拥有者,干啥用的等信息。

通过这个信息,就可以自动为该功能包安装依赖,构建时确定编译顺序等

查看小乌龟模拟器功能包的信息。

ros2 pkg xml turtlesim 

5.总结

介绍完工作空间和功能包,接下来就可以讲讲ROS2的编译工具colcon,下一讲我们就开始对代码动手了~

作者介绍:

我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚
初中学习编程,高中开始接触机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)
目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小智,一起交流技术,学习机器人

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《动手学ROS2》3.2ROS2工作空间介绍 的相关文章

  • rplidar使用

    rplidar的使用 新上手的激光雷达 xff0c 第一次使用 根据网上的教程 xff0c 先搭建环境跑起来 安装rviz sudo apt get install ros kinetic rviz 通过apt get安装rviz xff0
  • 全国一等奖,H题:用电器分析识别装置

    大家好 xff0c 我是张巧龙 xff0c 今天继续给大家带来电赛题目 xff1a 用电器分析识别装置 01 视频展示 全国一等奖 21年电赛H题 xff1a 用电器分析识别装置 02 方案设计 2 1 系统总体方案 通过对赛题的仔细分析研
  • jetson-tx2-nx用户空间无法导出gpio

    1 想要导出gpio xff0c 结果如下 xff0c 导出失败 xff0c 显示gpio忙 2 查看占用状态 xff0c 发现这个脚被用成了其他功能 3 如果没有第二步的那个目录 xff0c 则执行以下语句 xff0c mount t d
  • cmake添加已编译的.a静态库

    在main下新建一个lib文件夹 将编译好的xxx a放入lib文件夹 打开main下的CMakeLists txt 添加下面两条代码 add prebuilt library prebuilt 34 lib xxx a 34 libm t
  • Android设备上直接运行C/C++程序,无需ROOT!!!

    在Android开发过程中难免和JNI NDK打交道做混合开发 xff0c 按一般方式当交叉编译完成得到so库后 xff0c 我们将so库集成到Android项目里 xff0c 打包成apk安装到手机上验证运行效果 但当我们想快速在手机上验
  • ecplice在导入现有工程时提示:某些项目因位于工作空间目录中而被隐藏

    无论是写java还是Android xff0c ecplice都是很不错的选择 xff0c 但是有时在导入工程时提示 xff1a 某些项目因位于工作空间目录中而被隐藏 xff0c 项目 和 下一步 为不可选 此类原因无非有二 xff08 1
  • CAN扩展帧过滤器设置

    纪要 CAN xff08 Controller Area Network xff09 总线是一种广泛应用于工业控制和汽车电子领域的串行通信协议 在CAN总线中 xff0c 节点间通过CAN总线发送和接收消息 每个CAN帧包含一个标准或扩展标
  • error while loading shared libraries: libQtGui.so.4: cannot open shared object file:

    qt4编写的界面在mini6410上运行失败 xff0c 总是提示错误 xff1a error while loading shared libraries libQtGui so 4 cannot open shared object f
  • 第十一课:树莓派L298N电机实验

    第一课 什么是树莓派 第二课 基于树莓派的10个经典项目 第三课 购买您的第一个树莓派 第四课 如何安装树莓派系统 第五课 树莓派C语言编程手册 第六课 树莓派led控制 第七课 树莓派按键控制 第八课 树莓派PWM 脉宽调制
  • 从旋转矩阵计算欧拉角

    旋转矩阵和欧拉角之间的正向转换关系比较好推理 xff0c 而逆向变换就显得不是那么容易了 这篇博客介绍由旋转矩阵计算欧拉角的方法 xff0c 参考了一篇Paper xff1a Computing Euler angles from a ro
  • aiohttp 异步http请求-1.快速入门 get 请求示例

    前言 在 python 的众多 http 请求库中 xff0c 大家最熟悉的就是 requests 库了 xff0c requests 库上手非常容易 xff0c 适合入门学习 如果平常工作中对发请求不追求效率和并发的情况下 xff0c r
  • Flask 学习-67.钩子函数before_request 和 before_first_request 的使用

    前言 学过pytest框架的肯定知道什么叫钩子 xff08 hook xff09 函数 钩子函数的作用是在程序运行的过程中插入一段代码做一些事情 四个钩子 请求钩子是通过装饰器的形式实现 xff0c Flask支持如下四种请求钩子 xff1
  • 30岁自学嵌入式找工作,可行吗?前景怎么样?

    大家好 xff0c 我是张巧龙 xff0c 在知乎上看到一个问题 xff1a 30岁自学嵌入式找工作 xff0c 可行吗 xff1f 看看一个高赞回答 xff1a 注 xff1a 以下内容不代表本公众号观点 xff0c 仅供参考 不可行 嵌
  • 0基础在ROS系统中实现RRT算法(四)URDF集成gazebo并搭建gazebo仿真环境

    小白一枚 xff0c 毕设突发奇想加入了ROS的内容 xff0c 不知道自己还能不能毕业 以下均为通过看视频 xff0c 翻博客等整理而成的笔记 xff0c 并非我的原创 可能会出现一些报错的修改或者简单的代码是我自己做的 哈哈 Gazeb
  • 如何在vscode中优雅的编写C语言

    如何在vscode中优雅的编写C语言 各位好 xff0c 我认为vscode编辑器在windows环境下除了Pycharm外是最方便的IDE了 xff0c 但在初学C语言时很少有人的第一个C语言软件使用的是vscode来编译与运行 xff0
  • Unity 使用RVO2(orca)算法

    RVO算法官方下载 https github com snape RVO2 CS git 官方版本的RVO只支持增加移动代理和障碍物 xff0c 不支持删除移动代理和障碍物 不太符合实际应用 我拓展了删除移动代理与障碍物的方法 示例项目 x
  • 51单片机串口通讯UART

    1 串行通信的的基本知识 在实际的工业生产 xff0c 或者生活中 xff0c 计算机的CPU要与外部的设备之间进行信息的交流 xff0c 数据的交换 xff0c 所有的这些信息交换均可称为通信 通信的方式有两种 xff0c 分别为串行通信
  • 库函数开发与寄存器开发

    在以前 8 位机时代的程序开发中 xff0c 一般直接配置芯片的寄存器 xff0c 控制芯片的工作方式 xff0c 如中断 xff0c 定时器等 配置的时候 xff0c 常常要查阅寄存器表 xff0c 看用到哪些配置位 xff0c 为了配置
  • Arduino修改Serial接收缓冲区大小

    看到网上有资料说 xff0c 直接添加以下宏定义就可以了 xff1a span class token macro property span class token directive keyword define span SERIAL
  • RT-Thread nmealib库WH-GN100模块设置仅支持北斗

    RT Thread nmealib库主页 在nmea thread init函数的末尾 xff0c 添加以下代码块 xff0c 发送配置指令 xff0c 仅使用北斗卫星 xff0c 即可配置成仅GPS卫星工作模式 span class to

随机推荐

  • C#中字符串判断为空或者空格

    最近遇到这个问题 xff0c 来大概说一下C 中字符串判断为空或者空格这个问题 xff08 1 xff09 字符串为空null xff0c 怎么讲就是内存中没有放东西 xff0c 比如新创建的字符串就为空null xff0c string
  • 【冷知识】火车票座位分布知识点

    最近到了每年过年 xff0c 春运火车高峰期的时候了 xff0c 有的人想知道自己具体的位置在哪里 xff08 比如硬座是不是靠窗的 xff0c 座位的大小号排序等 xff09 xff0c 现在来讲讲这方面的知识点 xff0c 个人整理 列
  • QT中的自定义信号以及自定义函数

    信号与槽函数是QT的一大创新 xff0c 通过自定义信号与槽函数可以实现自己想实现的功能 标准的信号与槽写法如下 xff1a connect amp button amp QPushButton clicked this amp QWidg
  • 如何摆放PCB元器件?(建议收藏)

    PCB设计 xff0c 既是科学也是艺术 其中有非常多关于布线线宽 布线叠层 原理图等等相关的技术规范 xff0c 但当你涉及到PCB设计中具有艺术特质元器件布局问题时 xff0c 问题就变得有趣起来了 事实上 xff0c 关于元器件摆放限
  • 【MFC开发(6)】复选框按钮控件Check Box

    1 新建复选框 直接拖拽即可 xff0c 设置名字可修改caption内容 2 设置默认选中 复选框可多选 xff0c 所以可以给很多复选框按钮进行选中 xff0c 代码如下所示 xff0c 放在dlg初始化函数中实现 获取多选框香蕉的指针
  • 【MFC开发(15)】进度条控件Progress Control

    1 进度条控件的常用方法 首先给控件添加一个变量 在dlg初始化函数钟进行方法的实现 进度条显示区域 设置进度条的范围 m progress SetRange 0 100 设置进度条当前的位置 m progress SetPos 75 获取
  • 【MFC开发(16)】树形控件Tree Control

    1 树形控件的属性配置 xff08 1 xff09 Check Boxes xff1a 默认为false xff0c 如果选择为true的话每个节点前面会带有一个方框 xff08 2 xff09 Edit Labels xff1a 默认为f
  • 【MFC开发(17)】高级列表控件List Control

    1 介绍 ListCtrl 高级列表控件也是我们平时编程过程中很常用的一个控件 xff0c 一般涉及到报表展示 记录展示之类的 xff0c 都需要ListCtrl 高级列表控件 例如 xff1a 任务管理器啊 xff0c 文件列表啊 xff
  • STM32L4单片机连接语音模块NVC的源码

    这周写了一下STM32L4的语音模块 xff0c 使用的语音芯片是NVC系列芯片 xff0c 提供一下代码给以后需要的朋友们 xff0c 不喜勿喷 头文件NVC h ifndef NVC H define NVC H 音源 define S
  • oled显示模块ssd1306

    管脚定义 GND 电源地 VCC xff1a 供电电源3 3v 5v都可以 D0 xff1a 串行输入时钟CLK D1 xff1a 串行输入数据 RES xff1a 复位 DC xff1a 控制输入数据 命令 xff08 高电平1为数据 低
  • 上位机串口数据检验方式(一)——校验和

    最近还是在写上位机软件 xff0c 还是有一堆问题 xff0c 因为是第一次做这个东西 xff0c 有些东西只能到论坛上来查 xff0c 最近做到了数据通信 xff0c 刚开始没有想到数据协议这些东西 xff0c 现在涉及到了 xff0c
  • c#上位机开发(三)——串口通信上位机开发1

    今天主要做一个跟市面上差不多的稍微简单点的上位机软件 xff0c 效果如下图所示 1 功能概述 xff08 1 xff09 端口扫描 xff0c 主要是扫描出可用的端口用来连接 xff08 2 xff09 波特率的选择 xff0c 使用一个
  • 使用python执行外部命令subprocess

    1 使用python执行外部命令subprocess subprocess模块是Python自带的模块 xff0c 无须再另行安装 xff0c 它主要用来取代一些旧的模块或方法 xff0c 如os system os spawn os po
  • #Qt on android#使用Qt 获取GPS信号

    注意事项 xff1a 1 Qt版本一定要大于等于5 3 xff0c 因为低于5 3的版本对于android系统来说并不能成功获取gps信号 2 环境正确搭建 xff0c 一定要注意 xff01 构建 xff08 build xff09 的系
  • 2023年TI杯全国大学生电子设计竞赛通知正式发布

    关于组织2023年 全国大学生电子设计竞赛的通知 xff08 电组字 2023 01号 xff09 各赛区组织委员会 各有关高等学校 xff1a 全国大学生电子设计竞赛 xff08 以下简称全国竞赛 xff09 组委会在认真总结往届电子设计
  • HTTPClient调用https请求,通过基本认证用户名密码(Basic Auth)

    本文来源是Apache官网例子 xff1a httpcomponents client ClientAuthentication java at 4 5 x apache httpcomponents client GitHub 之前找过很
  • c中结构体数据对齐问题

    1 为什么需要数据对齐 提升CPU读取数据的效率 CPU每次都是从以4字节 xff08 32位CPU xff09 或是8字节 xff08 64位CPU xff09 的整数倍的内存地址中读进数据的 xff08 例如32位的只能0x000000
  • js打开新窗口的方法总结

    Window open 方法 完整代码 window span class token punctuation span span class token function open span span class token punctu
  • 一文详解堆栈(二)——内存堆与内存栈

    前言 xff1a 我们经常听见一个概念 xff0c 堆 xff08 heap xff09 和栈 xff08 stack xff09 xff0c 其实在数据结构中也有同样的这两个概念 xff0c 但是这和内存的堆栈是不一样的东西哦 xff0c
  • 《动手学ROS2》3.2ROS2工作空间介绍

    本系列教程作者 xff1a 小鱼 公众号 xff1a 鱼香ROS QQ交流群 xff1a 139707339 教学视频地址 xff1a 小鱼的B站 完整文档地址 xff1a 鱼香ROS官网 版权声明 xff1a 如非允许禁止转载与商业用途