使用 rosdep 管理依赖关系

什么是rosdep?

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

  • 构建工作区并需要适当的依赖项来构建其中的包

  • 安装软件包(例如)以检查其执行所需的依赖项sudo apt install ros-galactic-demo-nodes-cpp

  • 还有更多!

它能够处理单个包或包目录(例如工作区)。

关于包.xml文件的一些信息

包的文件包含一组依赖项。 此文件中的依赖项通常称为“rosdep 键”。 这些在标记 、 、 和 中表示。 它们指定在什么情况下需要每个依赖项。package.xml<depend><test_depend><exec_depend><build_depend><build_export_depend>

  • 对于仅用于测试代码的依赖项(例如),请使用 .gtesttest_depend

  • 对于仅在构建代码时使用的依赖项,请使用 .build_depend

  • 对于代码导出的标头所需的依赖项,请使用 .build_export_depend

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

  • 对于混合用途,请使用 ,它涵盖了生成、导出和执行时间依赖项。depend

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

rosdep是如何工作的?

rosdep将检查其路径中的文件或特定包,并查找存储在其中的 rosdep 密钥。 然后,将这些键与中心索引进行交叉引用,以在各种包管理器中找到合适的 ROS 包或软件库。 最后,一旦找到软件包,它们就被安装并准备好了!package.xml

我如何知道在我的包 .xml 中放入哪些密钥?

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

对于非 ROS 包系统依赖,我们需要找到特定库的密钥。 通常,有两个感兴趣的文件:和 . 通常包含系统依赖项。 通常包含 Python 依赖项。rosdep/base.yamlrosdep/python.yamlbase.yamlaptpython.yamlpip

若要查找键,请在此文件中搜索您的库(最好是 ctrl+F,它的长),并在其中找到包含它的名称。 这是放入文件的密钥。yamlpackage.xml

例如,假设一个包依赖于它,因为它是一个关心质量文档的伟大软件(提示提示)。 我们会搜索并遇到:doxygenbase.yamldoxygen

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

如何使用 rosdep 工具?

现在我们已经对 、 和 有了一定的了解,我们可以使用该实用程序本身了! 首先,如果这是第一次使用 ,则必须通过以下方式进行初始化:rosdeppackage.xmlrosdistrorosdep

sudo rosdep init
rosdep update
这将初始化 rosdep 并更新本地缓存的 rosdistro 索引。 偶尔使用 rosdep 获取最新索引是个好主意。updateupdate

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

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

Copy to clipboard

分解一下:

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

  • -y表示对来自包管理器的所有提示默认为 yes,以便在没有提示的情况下安装

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/319325.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之解释器模式【行为型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

基于FFmpeg的简单Android视频播放器

1. 模块分割 首先对这个视频播放器所采用的一些部件要清楚。这个播放器主要可以拆分为4个部分&#xff1a; 1.解码&#xff1a;FFmpeg 2.音频输出&#xff1a;OpenSLES 3.视频渲染&#xff1a;OpenGLES 这些框架都是基于C的api&#xff0c;因此这次我们的主要工作将会集中…

龙蜥操作系统上安装MySQL:步骤详解与常见问题解决

目录 博客前言 一.下载MySQL 1.官网下载 2.上传文件到龙蜥操作系统中 ​编辑二.安装MySQL 1.检查操作系统中的默认数据库并移除 2.创建文件夹解压 3.开始安装 4.启动服务 ​编辑 5.登录修改密码&#xff0c;进行授权 三.第三方工具连接&#xff08;naviact&#xff…

计网期末复习(一)

计网期末复习&#xff08;一&#xff09; – WhiteNights Site 标签&#xff1a;计算机网络 诶&#xff0c;期末。诶&#xff0c;复习。 TCP/IP参考模型的网络层提供的是&#xff1f; 区别于传输层&#xff0c;网络层提供不可靠无连接的数据报服务 当时看到TCP/IP就选了可靠有…

物联网智能控制器—福建蜂窝物联网科技有限公司

什么是物联网智能控制器&#xff1f; 物联网智能控制器是蜂窝物联自主研发的一种远程测控设备(RTU)&#xff0c;负责对现场信号、工业设备的监测和控制。本质上是一个模块化封装的微型计算机设备&#xff0c;将相应的一些功能进行了封装&#xff0c;无需进行电路设计和硬件程序…

QT -狗狗管理工具

QT -狗狗管理工具 一、演示效果二、UML三、关键代码四、程序链接 一、演示效果 二、UML 三、关键代码 #include <QFrame> #include <QHBoxLayout> #include <QVBoxLayout> #include <QLabel> #include <QSizePolicy> #include <QDialog> …

【开发日记】IDEA“找不到或无法加载主类”问题

记录一个研究了两个小时的“玄学”问题找不到或无法加载主类。 ​1、问题 使用IDEA启动SpringBoot项目显示找不到或无法加载主类。 2、解决经历 尝试了很多种解决方法都没有解决&#xff0c;下面是我网上查询后尝试的一些方法。这些方法我都没有解决问题&#xff0c;是因为…

【开源】基于JAVA+Vue+SpringBoot的医院门诊预约挂号系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2 科室医生档案模块2.1.3 预约挂号模块2.1.4 医院时政模块 2.2 可行性分析2.2.1 可靠性2.2.2 易用性2.2.3 维护性 三、数据库设计3.1 用户表3.2 科室档案表3.3 医生档案表3.4 医生放号…

统信UOS操作系统上禁用IPv6

原文链接&#xff1a;统信UOS操作系统上禁用IPv6 hello&#xff0c;大家好啊&#xff01;继之前我们讨论了如何在麒麟KYLINOS上禁用IPv6之后&#xff0c;今天我要给大家带来的是在统信UOS操作系统上禁用IPv6的方法。IPv6是最新的网络通信协议&#xff0c;但在某些特定的网络环境…

iOS隐藏TextFiled控件输入键盘

1.效果: 显示数字键盘 显示优化键盘 切换键盘,并修改Return为Done 输出完成后,点击done隐藏键盘 2.主要实现代码: ViewController中实现接口UITextFieldDelegate 关联控件与变量 注册控件委委托 实现接口方法textFieldShouldReturn以隐藏键盘 如果要实现textfield输入长度控…

scroll-view在小程序页面里实现滚动,uniapp项目

要实现红框中的区域进行滚动,scroll-view必须写高 <template><!-- 合同-待确认 --><view class"viewport"><!-- 上 --><view class"top-box"><!-- tab --><view class"tabs"><textv-for"(ite…

MySQL 从零开始:06 数据检索

文章目录 1、数据准备2、限制结果3、完全限定名4、排序检索 所谓数据检索&#xff0c;就是前面所讲的”增删改查“的”查“。 注&#xff1a;本文使用的“行”指数据表中的“记录”&#xff0c;“列”指数据表中的“字段”。 在第四节《表的增删改查》中已经介绍了 select 查询…

【elastic search】详解elastic search集群

目录 1.与集群有关的一些概念 2.集群搭建 3.集群搭建 4.kibana链接集群 5.选举流程 6.请求流程 7.master的作用 1.与集群有关的一些概念 数据分片&#xff1a; 数据分片&#xff08;shard&#xff09;&#xff0c;单台服务器的存储容量是有限的&#xff0c;把一份数据…

Gin CORS 跨域请求资源共享与中间件

Gin CORS 跨域请求资源共享与中间件 文章目录 Gin CORS 跨域请求资源共享与中间件一、同源策略1.1 什么是浏览器的同源策略&#xff1f;1.2 同源策略判依据1.3 跨域问题三种解决方案 二、CORS:跨域资源共享简介(后端技术)三 CORS基本流程1.CORS请求分类2.基本流程 四、CORS两种…

供应链+低代码,实现数字化【共赢链】转型新策略

在深入探讨之前&#xff0c;让我们首先明确供应链的基本定义。供应链可以被理解为一个由采购、生产、物流配送等环节组成的网状系统&#xff0c;它始于原材料的采购&#xff0c;经过生产加工&#xff0c;最终通过分销和零售环节到达消费者手中。 而数字化供应链&#xff0c;则是…

prometheus普罗米修斯持久化

1.安装普罗米修斯 按照以下步骤进行操作&#xff1a; 首先&#xff0c;打开普罗米修斯的官方网站&#xff08;https://prometheus.io&#xff09;。在网站顶部的菜单中&#xff0c;选择"Downloads"&#xff08;下载&#xff09;选项。在下载页面中&#xff0c;找到…

启英泰伦推出「离线自然说」,离线语音交互随意说,不需记忆词条

离线语音识别是指不需要依赖网络&#xff0c;在本地设备实现语音识别的过程&#xff0c;通常以端侧AI语音芯片作为载体来进行数据的采集、计算和决策。但是语音芯片的存储空间有限&#xff0c;通过传统的语音算法技术&#xff0c;最多也只能存储数百条词条&#xff0c;导致用户…

c语言学生管理系统

创建结构体里面包含学生的各种信息。 struct xs {int xh;char xm[20];int gs, yy, wl;double pj;struct xs* next; }; 创建菜单 void menu() {printf("\n************************************\n");printf("* 学生管理系统&#xff08;1.0&#xff0…

使用MATLAB连接USRP

文章目录 前言一、本地环境二、前期准备1、MATLAB版本、labview版本、UHD 版本对应关系2、下载 GNU Radio Companion3、确定 USRP UHD 版本①、下载一个 USRP 硬件驱动程序②、确认 MATLAB 的 UHD 版本 三、下载 USRP 通信工具箱支持包四、使用 MATLAB 连接 USRP 前言 本文记录…

vue中组件的传递取值方式总结

vue中组件的传递取值方式总结 目录概述需求&#xff1a; 设计思路实现思路分析1.父子传参2.vue 子组件接收数据进行渲染或处理3.父组件通过v-on监听自定义事件并取得传递的值4.ref引用子组件5.通过provide/inject传值6.attrs和listeners7.通过vuex进行全局状态管理8.Vue mixin9…