Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

1. package.xml

package.xml文件是每个 ROS 包的核心元数据文件,作用类似于软件的“身份证”和“说明书”。它定义了包的基本信息、依赖关系以及与其他组件的集成规则。

package.xml的关键标签字段的说明如下:

1.1. 包的基本信息

  • <name>: 包的唯一标识符(必须与文件夹名一致)
  • <version>: 包版本号(如 1.0.0)
  • <description>: 包的简短描述
  • <maintainer>: 维护者姓名和邮箱
  • <license>: 许可证类型(如 Apache-2.0)
  • <url>: 相关链接(文档、Bug 追踪等)

1.2. 包的依赖关系

1.2.1. <depend>

描述在构建时和运行时都需要依赖的依赖项。

说明:
纯Python实现的package通常没有build阶段,因此可用<exec_depend>字段替代。

1.2.2. <build_depend>

描述只在构建时需要依赖,在运行时不需要的依赖项。

对于此类型的依赖,已安装的软件包二进制文件并不要求必须安装该依赖软件包。

然而,如果你的软件包导出的头文件包含来自此依赖项的头文件,就会产生问题。在这种情况下,你还需要使用 <build_export_depend> 标签。

1.2.3.

描述不仅在构建时需要依赖,在导出的头文件中也包含了来自这个依赖项的头文件。

如果你导出的头文件包含来自某个依赖项的头文件,那么其他将你的软件包列为依赖的软件包也会需要该依赖。这主要适用于头文件和 CMake 配置文件。你所导出的库所引用的库软件包,通常应指定,因为在执行阶段也需要它们。

【举例】:

Package_B本身是一个导出库(.so.dll),它依赖了Package_A,且在导出的头文件中包含了Package_A的头文件。那么Package_B的使用方Package_C,需要同时依赖Package_B和Package_A。

Package_B的package.xml文件中,可以用<build_export_depend>来指定对Package_A的依赖。Package_C的package.xml文件中,可以用<depend>来制定对Package_B和Package_A的依赖。

1.2.4. <exec_depend>

描述只在运行时需要(构建时不需要)的依赖项。

此标签用于声明运行软件包时所需的共享库、可执行文件、Python 模块、启动脚本及其他文件的依赖关系。

1.2.5. <test_depend>

描述只在测试时需要的依赖项。

此标签声明的依赖项不应与 指定的依赖项重复。

1.3. 导出包属性

TODO

2. rosdep的用法

rosdep 是 ROS(Robot Operating System)中用于管理系统依赖的核心工具,它能自动解析并安装 package.xml 中声明的依赖项。其核心功能和工作流程如下:

2.1. 安装与初始化

1. 安装:

1
2
3
4
5
# Ubuntu/Debian系统
sudo apt-get install python3-rosdep # ROS 2推荐

# 非Ubuntu系统或ROS外使用
pip install rosdep # 通过PyPI安装

2. 初始化:

首次使用前需初始化配置:

1
2
sudo rosdep init   # 创建配置文件到/etc/ros/rosdep/
rosdep update # 更新本地依赖数据库

2.2. 安装依赖

1. 安装工作区内所有包的依赖:

1
rosdep install --from-paths src --ignore-src -y
  • --from-paths src:扫描工作区 src/ 目录下的 package.xml
  • --ignore-src:跳过工作区内已有的包(避免重复安装)。
  • -y:自动确认安装,无需交互。

2. 安装单个包的依赖:

1
rosdep install <package_name>  # 例如 rosdep install nav2_bt_navigator

3. 参考文档

https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Rosdep.html#exec-depend

推荐阅读
ROS2常用命令 ROS2常用命令 Ubuntu系统清理磁盘缓存 Ubuntu系统清理磁盘缓存 Ubuntu系统安装Python Ubuntu系统安装Python

评论