实践与wiki教程对比学习ROS(catkin/package.xml)

【ROS】package.xml文件解析 ros每个功能包中都有一个包清单,它是一个名为的XML 文件,它必须包含在任何符合 catkin 的包的根文件夹中。此文件定义有关包的属性,例如包名称、版本号、作者、维护者以及对其他 catkin 包的依赖性。package.xml文件有自己特有的数据书写标签,而它是xml格式文件,大家可能不太熟悉这个格式,其中的标签也比较复杂,本文对这些标签的作用进行解析,并阐明Metapackage元包的作用。 阅读详情

【wiki版本】

1.概述

该软件包清单是一个XML文件名为package.xml中必须包括与任何兼容柳絮包的根文件夹。此文件定义包的属性,例如包名称,版本号,作者,维护者和对其他catkin包的依赖性。

2.格式

2.1 【基本结构】每个package.xml文件都有<package>标记作为根标记文件。
<package format =“2”>

</ package>

2.2 【必须的标签】有一个最小的标签集需要嵌套在<package>标签中以使包清单完整。

  • <name> - 包的名称

  • <version> - 软件包的版本号(需要3个点分隔的整数)

  • <description> - 包内容的描述

  • <maintainer> - 维护包裹的人员的姓名

  • <license> - 发布代码的软件许可证(例如GPL,BSD,ASL)。

<package format =“2”>
  <name> foo_core </ name>
  <version> 1.2.4 </ version>
  <description>
  此包提供foo功能。
  </ description>
  <maintainer email =“ivana@osrf.org”> Ivana Bildbotz </ maintainer>
  <license> BSD </ license>
</ package>

2.3【依赖】具有最小标记的包清单不指定对其他包的任何依赖性。软件包可以有六种类型的依赖:

  • 构建依赖关系指定构建此包所需的包。这是在构建时需要这些包中的任何文件的情况。这可以在编译时包括来自这些包的头,从这些包链接到库,或者在构建时需要任何其他资源(特别是当这些包在CMake 中是find_package()时)。在交叉编译场景中,构建依赖关系是针对目标体系结构的。

  • 构建导出依赖关系指定需要哪些包来针对此包构建库。这是这种情况下,当你在头文件包中的公共头包含他们的头文件(特别是当这些包声明为(CATKIN_)DEPENDS在catkin_package()在CMake)。

  • 执行依赖关系指定在此软件包中运行代码所需的软件包。这是依赖于此包中的共享库(特别是当这些包在CMake 中的catkin_package()中声明为(CATKIN_)DEPENDS时)。

  • 测试依赖关系仅指定单元测试的附加依赖关系。它们不应该复制已经提到的构建或运行依赖项的任何依赖项。

  • 构建工具依赖关系指定构建系统工具,这个包需要构建自己。通常,唯一需要的构建工具是catkin。在交叉编译场景中,构建工具依赖性是针对执行编译的体系结构。

  • 文档工具依赖性指定此程序包生成文档所需的文档工具。

这六种类型的依赖关系使用以下各自的标签指定:

  • < depends >指定依赖关系是构建,导出和执行依赖关系。这是最常用的依赖标签。

  • <buildtool_depend>

  • <build_depend>

  • <build_export_depend>

  • <exec_depend>

  • <test_depend>

  • <doc_depend>

所有包都至少有一个依赖,一个构建工具依赖catkin如下例所示。

<package>
  <name> foo_core </ name>
  <version> 1.2.4 </ version>
  <description>
    此包提供foo功能。
  </ description>
  <maintainer email =“ivana@osrf.org”> Ivana Bildbotz </ maintainer>
  <license> BSD </ license>

  <buildtool_depend> catkin </ buildtool_depend>
</ package>
指定build,exec,test和doc依赖项的更现实的示例可以如下所示。
<package>
  <name> foo_core </ name>
  <version> 1.2.4 </ version>
  <description>
    此包提供foo功能。
  </ description>
  <maintainer email =“ivana@willowgarage.com”> Ivana Bildbotz </ maintainer>
  <license> BSD </ license>

  <url> http://ros.org/wiki/foo_core </ url>
  <author> Ivana Bildbotz </ author>

  <buildtool_depend> catkin </ buildtool_depend>

  <depends> roscpp </ depend>
  <depends> std_msgs </ depend>

  <build_depend> message_generation </ build_depend>

  <exec_depend> message_runtime </ exec_depend>
  <exec_depend> rospy </ exec_depend>

  <test_depend> python-mock </ test_depend>

  <doc_depend> doxygen </ doc_depend>
</ package>
2.4【metapackage】将多个包作为单个逻辑包进行分组通常很方便。这可以通过元包实现。metapackage是一个在package.xml中具有以下导出标记的普通软件包:
 <export>
   <metapackage />
 </ export>
除了必需的<buildtool_depends>的依赖柳絮,元数据包只能对包运行依赖其中,他们组。另外,元包还有一个必需的,样板CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8.3)
项目(<PACKAGE_NAME>)
find_package(catkin REQUIRED)
catkin_metapackage()
注意:将<PACKAGE_NAME>替换为元素包的名称。
2.5【其他标签】
  • <url> - 关于软件包的信息的URL,通常是ros.org上的wiki页面。

  • <author> - 包的作者


【实践版本】


ROS学习手记 - 1了解并安装ROS+创建ROS_Package ROS学习手记:   先看了《ROS操作系统的入门资料(2015修订)》,了解了ROS的基本概念。   1. ROS 的安装, 具备了虚拟机使用经验的同学可以搜“Ubuntu for ROS”进行下载 .iso 文件在虚拟机里安装。笔者使用的是VirtualBox作为虚拟机工具。这里就不多说了。 官方Tutorial里的Installing and Configuring Your ROS 阅读详情

相关推荐

ROS学习笔记(1)——如何创建一个ROS PACKAGE

Written By Asou, 4/22/2018 简介:本文将使用catkin来创建package,并且使用rospack来显示package中的依赖关系。参考文章:ROSwiki 1. catkin package的组成 每个package都必然包含package.xml和CMakeLists.txt两个文件。每一个package都必须拥有其独有的源文件夹,即不同的pac...

啦啦啦啦啦 5732

ROS理论与实践—— 一 、初识ROS

ROS理论与实践 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录ROS理论与实践前言一、ROS是什么?二、ROS安装1.安装方法2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPan

百叶书的博客 2358

ROS学习手记 - 2 Create and Build ROS Package 生成包(C++)

=== 在上一篇的基础上,Create并Customize了Package之后,要Build Package === 来源:http://wiki.ros.org/ROS/Tutorials/BuildingPackages   1. 确认source有没有完成(版本: hydro): $ source /opt/ros/hydro/setup.bash

Combine Art and Sciences. 4184

goland与ros通讯

【代码】goland与ros通讯。

weixin_42269472的博客 804

ROS学习笔记—Catkin

(在更新中) 一、Catkin教程 1.创建工作区 首先介绍如何设置一个可以构建一个或多个catkin包的catkin工作区。(前提是你已经安装了catkin) 创建工作区: $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/ $ catkin_make catkin_make命令运行之后,它将在‘src’文件夹中创建一个CMakeLists.txt文件。此...

a063225的博客 937

ROS程序包创建全解析:catkin工作流与package.xml/CMakeLists.txt双核机制

ROS程序包是ROS系统中最小可部署与可管理的单元,其本质是被构建系统识别的标准化CMake项目。理解catkin构建原理,关键在于掌握package.xml(声明元数据与依赖关系)和CMakeLists.txt(定义编译逻辑与链接行为)的协同机制。这种双文件驱动模式实现了ROS生态与标准CMake工具链的深度集成,支撑起跨语言(C++/Python)、多版本共存、第三方库无缝接入等工程能力。典型应用场景包括机器人算法模块封装、仿真与实机代码统一管理、以及多团队协作下的依赖隔离开发。本文聚焦ROS 1 No

SAN_YUN的专栏 511

go与ros交互

虽然Go语言的支持相对于C++和Python等语言来说还较为有限,但是这些工具和库提供了一些基本的功能,使得Go语言能够在ROS开发中发挥一定的作用。1. **goroslib**: goroslib是一个用于Go语言的ROS库,提供了与ROS的通信和交互功能。2. **rosgo**: rosgo是另一个用于Go语言的ROS库,提供了与ROS系统的交互能力。对于Go语言,虽然ROS本身没有原生支持Go语言,但是有第三方库和工具,使得Go语言可以与ROS进行集成和交互。

weixin_37841024的博客 1090

ROS总结——ROS消息和ROS服务

创建ROS消息和ROS服务本博客是对http://wiki.ros.org/上ROS教程的学习总结,欢迎大家交流学习。本节详细讲解了如何创建并编译ROS消息和服务,以及rosmsg、rossrv和roscp命令行工具的使用。1.消息(msg)和服务(srv)介绍 消息(msg): msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码。 服务(srv): 一个srv

YongqiangGao的专栏 7838

小白的ROS实践学习

学习安装ROS,ROS的简单指令,简单的话题、服务、动作编程实例

Frodnx的博客 1617

【ROS实践指南】从零构建Catkin工作空间与功能包:编译、配置与核心文件解析

本文详细介绍了如何从零开始构建Catkin工作空间与功能包,涵盖编译、配置与核心文件解析的全过程。通过清晰的步骤指导和实用技巧,帮助开发者快速掌握ROS开发的基础知识,包括工作空间目录结构、功能包创建规范、编译配置及常见问题排查。适合ROS初学者和需要系统学习Catkin工具链的开发者。

weixin_30896511的博客 377

《wiki官网教程》1 在catkin_ws空间下创建、编译程序包

从头开始创建工作空间catkin_ws: $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/ $ catkin_make 加载setup.bash文件,不用每次打开终端加载一次了。 每次打开catkin_ws文件要source一下 cd ~/catkin_ws source devel/setup.bash $ echo "source /o...

try_again_later的博客 1715

catkin package.xml

catkin package.xml wiki 写的超详细 1.格式2(推荐) 这是新软件包的推荐格式。还建议将旧格式1程序包迁移到格式2.有关从格式1迁移到格式2的说明,请参阅catkin API文档中的从格式1迁移到格式2。Migrating from Format 1 to Format 2  包清单是一个名为package.xml的XML文件,必须包含在任何符合catkin的包的根文...

xiaoma_bk的博客 636

rclgo:用于Golang的ROS客户端库

rclgo ROS2客户端库Golang包装器 安装 $ go get github.com/tiiuae/rclgo $ rclgo-gen generate 命令行客户端 模仿官方RCL命令 rclgo topic echo /topic/name std_msgs.ColorRGBA ROS2消息转换器 rclgo期望存在所有ROS2消息的Golang实现。 要将rclgo与ROS2插件和模块一起使用,您需要在首次使用前生成Golang绑定。 rclgo-gen generate /opt/ros/foxy/share/px4_msgs/msg/AdcReport.msg 用法 请参阅rclgo命令行客户端源代码:

ros catkin包配置文件package.xml

参考:http://wiki.ros.org/catkin/package.xml 1. 概述 包清单是一个名为package.xml 的 XML文件,必须包含在任何符合 catkin 的包的根文件夹中。此文件定义有关包的属性,如包名称、版本号、作者、维护者以及其他 catkin 包的依赖项。 2. 格式 2(推荐) 这是新包的推荐格式。还建议将较旧的格式 1 包迁移到格式 2。有关从格式 1 迁移到格式 2 的说明,请参阅在 catkin API 文档中从格式 1迁移到格式 2。 2.1 基本结构 每个包

二进制君 1057

《斯图尔特微积分》实战指南:从理论到解题技巧的跨越

本文深入解析《斯图尔特微积分》教材的独特价值与实用学习策略,重点介绍其理论深度与实际应用的完美平衡。通过概念理解、符号语言转换、解题思维框架等五个关键跨越,帮助读者高效掌握微积分核心技巧。文章还提供分层练习、可视化工具等教学实践方法,是提升微积分学习效率的实战指南。

weixin_28432777的博客 395

解决PADs VX2.7安装中的License失效与软件卡死问题

本文详细解析了PADs VX2.7安装过程中常见的License失效与软件卡死问题,提供了从破解工具选择、环境变量设置到输入法兼容性调整等实用解决方案。特别推荐使用Siemens EDA系列新版破解工具,并分享性能调优与定期维护技巧,帮助工程师高效解决安装难题。

weixin_29234239的博客 813

ROS学习:ROS文件系统--package.xml

package.xml 也是一个 catkin的package 必备文件,它是这个软件包的描述文件,在较早的ROS 版本 ( rosbuild 编译系统) 中,这个文件叫做 manifest.xml ,用于描述 pacakge 的基本信息。如果你在网上看到一些 ROS 项目里包含着 manifest.xml ,那么它多半是hydro版本之前的项目了。 package.xml作用 pacakge...

技术小白的进阶之路 1653

Cadence元件库介绍

Cadence安装完之后,在安装目录下,会有默认自带的一些常用元件库。例如,我的Candece安装目录为: D:\Cadence\Cadence_SPB_17.2-2016 元件库所在目录为: D:\Cadence\Cadence_SPB_17.2-2016\tools\capture\library 各个元件库对应的内容如下: AMPLIFIER.OLB 共 182 个零件,存放模拟放大器 IC,如 CA3280,TL027C,EL4093 等。 ARITHMETIC.OLB 共 182 个零件,存放

年少时的棉花糖 1万+

【自动驾驶】ROS 机器人操作系统框架 ② ( ROS 编译系统 | ROS 编译相关概念 | Package 包 | Catkin 工作空间 | ROS 运行相关概念 )

一、ROS 编译系统简介 1、ROS 编译需求 2、ROS 编译层级 3、ROS 对 CMake 扩展 4、ROS 编译系统相关文档 5、下载 Ubuntu 16.04.7 LTS ( Xenial Xerus ) 二、ROS 编译相关概念 1、Package 包 2、package.xml 配置文件 3、CMakeLists.txt 配置文件 4、Catkin Workspace ( Catkin 工作空间 ) 三、ROS 运行相关概念 1、ROS Node ( 节点 ) 2、ROS Parameter

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 6477

先进封装Interposer仿真步骤及说明

摘要: Interposer仿真是2.5D/3DIC封装设计的关键环节,涵盖信号完整性(SI)、电源完整性(PI)、热及结构应力分析。流程分为五个阶段:1)前处理,定义层叠结构与材料属性;2)参数提取,通过3D电磁建模获取TSV、传输线等寄生参数;3)仿真设置,选择求解器并设定频率范围;4)结果分析,评估信号损耗、阻抗及电源网络性能;5)后处理,进行多物理场协同仿真并生成模型。核心挑战在于多尺度与多物理场耦合,需优先确保高速信号与电源网络的仿真精度。常用工具包括Ansys HFSS、Cadence Sigr

DSY_0324的博客 1342

Windows NPS与华为、华三、思科设备RADIUS认证实战指南

本文详细介绍了Windows NPS与华为、华三、思科设备RADIUS认证的实战配置指南。通过NPS服务器统一管理网络设备认证,实现企业级安全访问控制,涵盖基础配置、设备对接及故障排查方法,助力管理员提升网络安全管理效率。

weixin_29284201的博客 505

从零构建ROS工作空间:揭秘package.xml与CMakeLists.txt的协同艺术

本文深入解析ROS工作空间中package.xml与CMakeLists.txt的协同工作机制,详细讲解依赖管理、消息生成和构建配置等核心内容。通过Autolabor机器人开发实例,帮助开发者掌握ROS构建系统的内部机制,提升机器人软件开发效率与代码质量。

red88的博客 1041

3.4 ISIS和OSPF之间路由引入

通过以上输出可以看到OSPF的路由引入到了IS-IS中。通过以上输出可以看到ISIS的路由没有传递给OSPF。通过以上输出可以看到OSPF的路由没有传递给ISIS。通过以上输出可以看到ISIS的路由被引入进了OSPF。掌握在IS-IS中引入OSPF路由的方法。掌握在OSPF中引入IS-IS路由的方法。图3-3:ISIS和OSPF之间路由引入。在R3上把ISIS的路由引入到OSPF。OSPF引入外部路由的缺省度量值为1。在R3上把OSPF的路由引入到ISIS。引入的外部路由类型为Type2。

lwljh134的博客 1802

ROS成长-wiki-ros教程整理 三

1、 环境安装好后接下来的wiki教程讲解了文件系统的时使用方法(rospack、roscd 、rosls 等)、请自行查阅http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem 2 、 文件系统熟悉后,接下来我们开在这里插入代码片始创建自己的package包。catkin编译方式。 package包格式必须符合catkin 格式总共有三部分内容。 1、有自己的文件夹 2、必须包含package.xml 文件 3、必须包含CMake

hant1216的博客 430

【AI Agent 记忆共享实战】【下篇】多 Agent 会话 Session 统一共享实战:全链路工程落地、采集归一、MCP 服务、私有化部署、源码级实战

中篇我们已经锁定最终最优架构方案: 非侵入式、外部旁路采集、只读归一、中心化存储、MCP 按需检索注入。摒弃「改 Agent 源码」「软链接互通」「原生 Session 互导」等不现实方案。本篇直接落地可上线、可简历复用、可个人私有化部署多 Agent 异构 Session专属采集器(Claude/CODex/DSH/OpenCode/Kimi/WorkBuddy/ 豆包)统一消息归一化解析层(解决所有 Schema 异构)增量同步、去重、时间戳对齐核心逻辑。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 476

CloudCompare 二次开发(17)——点云添加均匀分布的随机噪声

使用CloudCompare编程实现点云添加随机噪声。

点云侠的博客 839
上一篇: 第一章:电路和电路元件(自我复习)
下一篇: ROS Workspace(工作空间创建)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值