ROS学习(二)创建功能包

2023-05-16

在上一讲中我们已经创建好工作空间catkin_ws,我们要在其src文件中创建功能包。

文章目录

  • 一、创建功能包
  • 二、编译功能包
  • 三、查看功能包的依赖
    • 3.1一阶依赖
    • 3.2间接依赖
  • 四、定制功能包
    • 自定义package.xml文件
      • 4.1.1 描述标签
      • 4.1.2 维护者标签
      • 4.1.3 许可证标签
      • 4.1.4 依赖标签
      • 4.1.5 最终的package.xml

一、创建功能包

~$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs roscpp rospy

catkin_create_pkg 是一条创建功能包的命令;
beginner_tutorials 是功能包的名字(可自定义);
std_msgs roscpp rospy 这是功能包的依赖。
在这里插入图片描述
在这里插入图片描述
可以看到现在这个功能包中有四部分(功能包可不止这四部分哦)。

include:此目录包含了需要的库的头文件;

src:储存程序源文件的地方;

package.xml:这是功能包清单;

CMakeLists.txt:这是CMake的生成文件。

二、编译功能包

$ cd〜/ catkin_ws
$ catkin_make
$ soure  devel / setup.bash

三、查看功能包的依赖

3.1一阶依赖

较早使用catkin_create_pkg时,提供了一些软件包依赖项。 现在可以使用rospack工具查看这些一阶依赖项

$ rospack depends1 beginner_tutorials 

在这里插入图片描述
如您所见,rospack列出了运行catkin_create_pkg时用作参数的依赖项。 程序包的这些依赖项存储在package.xml文件中:

$ roscd beginner_tutorials
$ cat package.xml

在这里插入图片描述

3.2间接依赖

在许多情况下,依赖项也将具有其自己的依赖项。例如,rospy具有其他依赖性。

$ rospack depends1 rospy

在这里插入图片描述
一个包可以有很多间接依赖。幸运的是,rospack可以递归确定所有嵌套的依赖项。

$ rospack depends beginner_tutorials 

在这里插入图片描述

四、定制功能包

自定义package.xml文件

4.1.1 描述标签


   5   <description> beginner_tutorials package</ description>

将描述更改为您喜欢的任何内容,但按照惯例,第一句话应简短,同时涵盖程序包的范围。

4.1.2 维护者标签

   7   <!-- One maintainer tag required, multiple allowed, one person per tag --> 
   8   <!-- Example:  -->
   9   <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
  10   <maintainer email="user@todo.todo">user</maintainer>

这是package.xml的必需且重要的标记,因为它使其他人知道有关该软件包的联系人。至少需要一个维护者,但是如果您愿意,可以有很多。维护者的名称进入标签的主体,但还应填写一个电子邮件属性:

  7   <maintainer email="you@yourdomain.tld">Your Name</maintainer>

在这里插入图片描述

4.1.3 许可证标签

  12   <!-- One license tag required, multiple allowed, one license per tag -->
  13   <!-- Commonly used license strings: -->
  14   <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
  15   <license>TODO</license>

4.1.4 依赖标签

下一组标记描述了程序包的依赖性。依赖分成build_depend,buildtool_depend,exec_depend,test_depend。因为我们通过std_msgs,roscpp和rospy作为功能包的依赖,其将是这样的:

  27   <!-- The *_depend tags are used to specify dependencies -->
  28   <!-- Dependencies can be catkin packages or system dependencies -->
  29   <!-- Examples: -->
  30   <!-- Use build_depend for packages you need at compile time: -->
  31   <!--   <build_depend>genmsg</build_depend> -->
  32   <!-- Use buildtool_depend for build tool packages: -->
  33   <!--   <buildtool_depend>catkin</buildtool_depend> -->
  34   <!-- Use exec_depend for packages you need at runtime: -->
  35   <!--   <exec_depend>python-yaml</exec_depend> -->
  36   <!-- Use test_depend for packages you need only for testing: -->
  37   <!--   <test_depend>gtest</test_depend> -->
  38   <buildtool_depend>catkin</buildtool_depend>
  39   <build_depend>roscpp</build_depend>
  40   <build_depend>rospy</build_depend>
  41   <build_depend>std_msgs</build_depend>

除了默认的buildtool_depend on catkin之外,我们列出的所有依赖项都被添加为build_depend。在这种情况下,我们希望所有指定的依赖项都在构建和运行时可用,所以我们将为它们每个添加一个exec_depend标签:

  12   <buildtool_depend>catkin</buildtool_depend>
  13 
  14   <build_depend>roscpp</build_depend>
  15   <build_depend>rospy</build_depend>
  16   <build_depend>std_msgs</build_depend>
  17 
  18   <exec_depend>roscpp</exec_depend>
  19   <exec_depend>rospy</exec_depend>
  20   <exec_depend>std_msgs</exec_depend>

4.1.5 最终的package.xml

如您所见,没有注释和未使用标签的最终package.xml更加简洁:

   1 <?xml version="1.0"?>
   2 <package format="2">
   3   <name>beginner_tutorials</name>
   4   <version>0.1.0</version>
   5   <description>The beginner_tutorials package</description>
   6 
   7   <maintainer email="you@yourdomain.tld">Your Name</maintainer>
   8   <license>BSD</license>
   9   <url type="website">http://wiki.ros.org/beginner_tutorials</url>
  10   <author email="you@yourdomain.tld">Jane Doe</author>
  11 
  12   <buildtool_depend>catkin</buildtool_depend>
  13 
  14   <build_depend>roscpp</build_depend>
  15   <build_depend>rospy</build_depend>
  16   <build_depend>std_msgs</build_depend>
  17 
  18   <exec_depend>roscpp</exec_depend>
  19   <exec_depend>rospy</exec_depend>
  20   <exec_depend>std_msgs</exec_depend>
  21 
  22 </package>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS学习(二)创建功能包 的相关文章

  • CAN的ACK深入理解

    CAN信息发送成功后 xff0c 会有个应答间隙的 xff0c 在这个间隙内 xff0c 接收节点可以准备要回复的信息 xff0c 也就是把应答场填充为显性0 xff0c 在发送时其为隐性1 应答过程可能如下 xff1a 当信息传输到ACK
  • 二、Docker镜像使用和命令

    文章目录 Docker镜像使用和命令列出本机镜像查找镜像拉取镜像删除镜像删除所有镜像镜像的原理 Docker镜像使用和命令 镜像就是一个轻量级的 xff0c 可执行的独立软件包 xff0c 用来打包软件运行环境和基于运行环境开发的软件 xf
  • 阿里云ECS centos8连接可视化界面

    阿里云ECS centos8连接可视化界面 文章目录 阿里云ECS centos8连接可视化界面安装图形化界面安装VNC Server客户端设置界面为中文 安装图形化界面 使用以下命令安装图形桌面的软件包 yum groupinstall
  • DJI-OSDK开发

    DJI OSDK开发 一 简介 Onboard SDK xff0c 顾名思义就是跑在板子上的一套SDK接口 xff0c 通过串口与飞控进行通信 xff0c 通过调用这些接口 xff0c developer就可以实现对DJI A3 N3 M1
  • Linux 虚拟机centos /dev/mapper/cl-root 100% 解决方法

    1 在虚拟机中添加硬盘 一 添加新的磁盘 1 选择 虚拟机设置 并打开 xff0c 将光标定位在 硬盘 SCSI 选项上 xff0c 然后点击下方的 添加 按钮 2 点击下一步 3 选择SCSI 点击下一步 4 选择创建新虚拟机磁盘 xff
  • 解决ROS系统 rosdep update超时问题,省时又好用的方法,根本不需要修改什么文件这么麻烦

    直接使用小鱼提供的rosdepc 1 安装rosdepc wget http fishros com install O fishros amp amp bash fishros 2 输入数字3安装rosdepc 3 然后执行rosdepc
  • ubuntu安装kalibr,并进行相机和IMU(惯性测量单元)的内外参联合标定

    1 IMU内参的标定 参考我的另一篇博客 xff1a 4条消息 ubuntu安装imu utils xff0c 并进行IMU xff08 惯性测量单元 xff09 内参标定 xffe3 莫等闲 的博客 CSDN博客 https blog c
  • 华清远见电子词典

    1 服务器 include lt stdio h gt include lt sys types h gt include lt sys socket h gt include lt pthread h gt include lt sqli
  • 基于STM32F407的WIFI通信(使用的是ESP8266模块)

    基于STM32F407的WIFI通信 xff08 使用的是ESP8266模块 xff09 本次做的是WIFI通信所实现的功能是 xff1a 由单片机端向客户端发送数据 模式 xff1a STA模式 xff08 及连接路由器的方式 xff09
  • 腾讯云轻量级服务器Ubuntu系统搭建可视化界面

    前言 xff1a 以云服务器的方式搭建Linux workstation对比在电脑本地安装虚拟机的优势在于 xff0c 不需要占用本地电脑资源空间 xff0c 网络环境等相对稳定 xff0c 可以用手机等轻量移动设备连接管理等 本文主要介绍
  • gitee多人合作,上传push到别人的远程仓库

    首先要确保在别人的远程仓库中 第二步 xff1a 新建一个文件夹 xff0c 在里面点击右键 xff0c 选择 Git Bash Here进入操作界面 第三步 xff1a 先git init创建一个git文件 第四步 xff1a git r
  • 汽车CAN总线详解

    概述 CAN xff08 Controller Area Network xff09 总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线 xff0c 它起初用于实现汽车内ECU之间可靠的通信 xff0c 后因其简单实用可靠等
  • docker快速清理已停止的容器

    修剪所有不在运行的容器 xff0c 强制删除使用 f 或者 force docker container prune 使用 filter限制范围 xff0c 例如删除24小时前创建的已停止的容器 docker container prune
  • FreeRTOS学习笔记8(中断管理)

    1 中断管理的介绍 这里的中断管理主要是一些前面使用到的队列 信号量 互斥量等的在中断中使用的函数的封装 xff0c 为什么要从新封装这些函数 xff0c 这些函数有哪些优缺点 xff0c 这些函数是如何使用的 xff1f 这些问题后面会一
  • UCOSIII从官网(2021)下载

    官网地址 xff1a https www silabs com developers micrium 注意 xff1a 在进入下载前 可能 要注册一个账号 xff0c 如果可以直接下载的话不用注册也可以 xff0c 如果有小伙伴需要注册账号
  • dataX连接oracle报实例名错误

    oracleCDB数据库 xff1a 实例名CS 34 jdbcUrl 34 34 jdbc oracle thin 64 10 10 10 242 1521 xff1a CS 34 oraclePDB数据库 xff1a 实例名CS 34
  • 华清-周总结(2)(数据结构)

    数据结构类型 数据结构 xff1a 线性结构 xff0c 树形结构 xff0c 图形结构 线性结构 xff1a 在存储关系上 xff0c 每个元素最多有一个前驱 xff0c 一个后继 树形结构 xff1a 在存储关系上 xff0c 每个元素
  • 树莓派+新型混合无人机

    树莓派 43 新型混合无人机 产品设计缘由产品设计工作过程 xff1a 功能及成本预算 总结与鸣谢 产品设计缘由 我去设计这个树莓派 43 的一个产品 xff0c 是因为10月7日学校的创客训练营的招新选拔 xff0c 而选拔的题目是 xf
  • 树莓派frp内网穿透

    树莓派 43 frp内网穿透 一 frp二 frp作用三 安装与配置1 服务器端2 客户端 xff08 树莓派 xff09 一 frp frp 是一个高性能的反向代理应用 xff0c 支持 tcp udp http https 协议 二 f
  • FreeRTOS任务创建

    任务创建 操作 一 硬件初始化 span class token keyword static span span class token keyword void span span class token function Hardwa

随机推荐

  • vue2的点击事件简单搜索案例

    前端小白新人一枚 有不对请指正哦 写这篇文章的原因 xff1a 1 我使用了 computed 和 watch分别实现对列表的过滤筛选 xff0c 发现这两个方法均是用户输入自动过滤 xff0c 于是我想使用 点击事件过滤 xff0c 以下
  • QML嵌入视频遇到的一些问题汇总

    首先放上demo import QtQuick 2 6 import QtQuick Window 2 2 import QtMultimedia 5 8 Window visible true width 640 height 480 t
  • Downie 4 4.6.16 MAC上最新最好用的一款视频下载工具

    Downie for Mac 简介 Downie是Mac下一个简单的下载管理器 xff0c 可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们 Downie 4 下载 Downie 4 for Ma
  • AIGPT中文版(无需魔法,直接使用)不愧是生活工作的好帮手。

    AIGPT AIGPT是一款非常强大的人工智能技术的语言处理工具软件 xff0c 它具有 AI绘画 功能 AI写作 写论文 写代码 哲学探讨 创作等功能 xff0c 可以说是生活和工作中的好帮手 我们都知道使用ChatGPT是需要账号以及使
  • Tomcat10版本避坑

    Tomcat版本选择 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器 xff0c 属于轻量级应用服务器 xff0c 在中小型系统和 并发访问用户不是很多的场合下被普遍使用 xff0c 是开发和调试JSP 程序的首选 并且To
  • 阿里云ECS服务器ubuntu18图形界面安装

    文章目录 前言一 配置阿里镜像源二 安装图形界面三 VNC远程连接总结 前言 文章中的图形界面基于阿里云ECS服务器远程连接中的VNC连接 xff0c 使用时会体验到明显的延迟 xff0c 介意可以使用Xshell 43 Xmanger 4
  • 实验二 HDFS实验操作

    一 实验目的 理解HDFS在Hadoop体系结构中的角色熟练使用HDFS操作常用的Shell命令熟悉HDFS操作常用的Java API 二 实验平台 操作系统 xff1a ubuntu18Hadoop版本 xff1a 3 2 2JDK版本
  • Java程序部署到Linux环境上运行

    文章目录 前言一 Java环境安装二 Eclipse编译java程序并导出jar包三 Linux环境上运行jar包 前言 想要在Linux上运行java程序 xff0c 可以将java程序编译成功后导出成jar包 xff0c 然后在Linu
  • python疫情大数据可视化

    一 实验目的 通过本次实验掌握数据获取 数据清洗与存储和数据可视化工具的基本使用方法 二 实验平台 操作系统 xff1a window10 python版本 xff1a 3 8 IDE xff1a pycharm 可视化工具 xff1a e
  • MybatisPlus-乐观锁&悲观锁

    乐观锁 xff1a 每次不加锁而是假设没有冲突而去完成某项操作 xff0c 如果失败就重试 xff0c 直到成功为止 悲观锁 xff1a synchronized是独占锁即悲观锁 xff0c 会导致其他所有需要锁的线程挂起 xff0c 等待
  • ConcurrentHashMap -1.8 源码解析

    ConcurrentHashMap 1 8 源码解析 加锁机制 在JDK1 7之前 xff0c ConcurrentHashMap是通过分段锁机制来实现的 xff0c 所以其最大并发度受Segment的个数限制 因此 xff0c 在JDK1
  • Redis五种基本数据类型

    五种基本数据类型 redis无论什么数据类型 xff0c 在数据库中都是以key value形式保存 xff0c 并且所有的key 键 都是字符串 xff0c 所以讨论基础数据结构都是讨论的value值的数据类型 主要包括常见的5种数据类型
  • 直线的斜率

    斜率 xff0c 亦称 34 角系数 34 xff0c 表示一条直线相对于横轴的倾斜程度 一条直线与某平面直角坐标系横轴正半轴方向的夹角的正切值即该直线相对于该坐标系的斜率 如果直线与x轴垂直 xff0c 直角的正切值无穷大 xff0c 故
  • ElasticSearch--整合SpringBoot

    引入依赖 span class token tag span class token tag span class token punctuation lt span dependency span span class token pun
  • ElasticSearch--聚合查询

    聚合查询 简介 聚合 xff1a 英文为Aggregation xff0c 是es除搜索功能外提供的针对es数据做统计分析的功能 聚合有助于根据搜索查询提供聚合数据 聚合查询是数据库中重要的功能特性 xff0c ES作为搜索引擎兼数据库 x
  • CopyOnWriteArrayList简介

    1 简介 CopyOnWriteArrayList 是 ArrayList 的线程安全版本 就是在进行写操作的时候会 copy 原数组 xff0c 然后写完将指针指向新的数组 xff0c 是一种读写分离的思想 xff0c 可以并发的读 xf
  • PX4平台(V3)+T8S遥控器校准

    1 PX4与接收机的连接 首先 xff0c 将遥控器接收机的信号线与PX4的RC IN信号相连 xff08 注意正负极 xff09 xff0c 在主控上电之后 xff0c 观察接收机信号指示灯的颜色 xff1a 1 PWM 信号工作模式 接
  • PX4编写CAN应用程序控制底盘运动

    目录 一 在PX4平台中添加自己的应用程序 1 建立应用程序 Hello can c文件 xff1a Kconfig文件 xff1a CMakeLists txt文件 xff1a 2 编译应用程序及固件 3 测试应用 xff08 硬件 xf
  • PyCharm2021安装教程

    Windows安装PyCharm2021教程 一 下载安装PyCharm二 安装Python三 配置PyCharm环境四 使用PyCharm五 PyCharm简介 一 下载安装PyCharm 1 进入官网PyCharm的下载地址 xff1a
  • ROS学习(二)创建功能包

    在上一讲中我们已经创建好工作空间catkin ws xff0c 我们要在其src文件中创建功能包 文章目录 一 创建功能包二 编译功能包三 查看功能包的依赖3 1一阶依赖3 2间接依赖 四 定制功能包自定义package xml文件4 1