Intermediate-用rosdep来管理依赖

目标:使用rosdep来管理外部的依赖

什么是rosdep?

rosdep是ROS的依赖管理实用程序,可以与ROS包和外部库一起使用。rosdep是一个命令行实用程序,用于识别和安装依赖项以构建或安装包。在以下情况下可以调用或被调用:

1)构建一个工作区,并需要适当的依赖项来构建内的包。

2)安装软件包(例如sudo ros-rolling-demo-nodes-cpp)以检查执行所需的依赖关系

它能够在单个包或包目录(例如工作空间)上工作。

有关package.xml文件

一个包的package.xml文件包含了一些依赖集。该文件中的依赖项通常被称为“rosdep keys”。这些在标签<depend>、<test_depend>、<exec_depend>和<build_export_depend>中表示。他们指定了在什么情况下需要依赖项。

对于仅用于测试代码的依赖项(例如gtest),请使用test_depend。

对于仅用于构建代码的依赖项,请使用build_depend。

对于代码导出的headers所需的依赖项,请使用build_export_depend。

对于仅在运行代码时使用的依赖项,请使用exec_depend。

对于混合用途,请使用dependent,它涵盖了构建、导出和执行时间依赖关系。

这些依赖项由包的创建者手动填充在package.xml文件中,并且应该是所需的任何非内置库和包的详尽列表。

rosdep怎样工作?

rosdep将检查其路径中的package.xml文件或特定包,并查找存储在其中的rosdep keys。然后将这些密钥与中心索引进行交叉引用,以在各种包管理器中找到适当的ROS包或软件库。最后,一旦找到包,它们就安装好了,可以使用了!中心索引被称为rosdistro,可以在这里找到。我们将在下一节中对此进行更多探讨。

我怎样知道什么key应该放到我的package下面

对于ROS包(例如nav2_bt_navigator),您可以简单地放置包的名称。您可以在<distro>/distribution.yaml上找到rosdistro中所有已发布的ROS包的列表,用于您给定的ROS分布。

对于非ROS包系统依赖项,我们需要找到特定库的密钥。通常,有两个感兴趣的文件:rosdep/base.yaml和rosdep/python.yaml.base.yaml通常包含apt系统依赖项。python.yaml通常包含pip-python依赖项。要找到密钥,请在此文件中搜索库,并在yaml中找到包含该密钥的名称。这是要放入package.xml文件中的密钥。

例如,假设一个包依赖于doxygen,因为它是一个关心质量文档(提示提示)的优秀软件。我们会在base.yaml搜索doxygen,然后发现:

复制代码
doxygen:
  arch: [doxygen]
  debian: [doxygen]
  fedora: [doxygen]
  freebsd: [doxygen]
  gentoo: [app-doc/doxygen]
  macports: [doxygen]
  nixos: [doxygen]
  openembedded: [doxygen@meta-oe]
  opensuse: [doxygen]
  rhel: [doxygen]
  ubuntu: [doxygen]
复制代码

这意味着我们的rosdep密钥是doxygen,它将解析为不同操作系统的包管理器中的各种名称以进行安装。

如果我的库不再rosdistro中呢?

如果你的库不在rosdistro,你可以体验开源软件开发的伟大之处:你可以自己添加它!rosdistro的拉取请求通常在一周内很好地合并。Detailed instructions may be found here for how to contribute new rosdep keys.如果由于某种原因,这些可能无法公开提供,则可以派生rosdistro并维护备用索引以供使用。

我怎样使用rosdep工具呢?

既然我们已经对rosdep、package.xml和rosdistro有了一些了解,我们就可以使用该实用工具了!首先,如果这是第一次使用rosdep,则必须通过以下方式对其进行初始化:

sudo rosdep init
rosdep update

这将初始化rosdep,更新将更新本地缓存的rosdistro索引。偶尔更新rosdep以获取最新索引是个好主意。

最后,我们可以运行rosdep-install来安装依赖项。通常,这是在一个工作区上运行的,在一个调用中有许多包来安装所有依赖项。如果在工作区的根目录src中包含源代码,则对的调用将显示如下。

rosdep install --from-paths src -y --ignore-src

--from paths src指定检查package.xml文件以解析其密钥的路径

-y表示默认对软件包管理器的所有提示为“是”,以便在没有提示的情况下进行安装

--ignore-src意味着忽略安装依赖项,即使存在rosdep键,如果包本身也在工作区中。

还有其他可用的参数和选项。使用rosdep-h查看它们。

 

posted on   gary_123  阅读(174)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2019-06-04 IMU预积分
2016-06-04 在程序中利用信号量同步来模拟生产者与消费者
2016-06-04 信号量互斥编程
2016-06-04 信号通讯编程
2016-06-04 有名管道通讯编程

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示