机器人系统ros2内部接口介绍

内部 ROS 接口是公共 C API ,供创建客户端库或添加新的底层中间件的开发人员使用,但不适合典型 ROS 用户使用。
ROS客户端库提供大多数 ROS 用户熟悉的面向用户的API,并且可能采用多种编程语言。

内部API架构概述

内部接口主要有两个:

  • ROS中间件接口(rmw API)

  • ROS客户端库接口(rcl API)

API rmw 是ROS 2 软件堆栈和底层中间件实现之间的接口。 ROS 2 使用的底层中间件是 DDS 或 RTPS 实现,负责发现、发布和订阅机制、服务的请求-回复机制以及消息类型的序列化。

rcl API是一个稍高级别的API,用于实现客户端库,不直接接触中间件实现,而是通过 ROS 中间件接口 ( rmw API ) 抽象来实现。

在这里插入图片描述
如图所示,这些API是堆叠在一起的,因此典型的 ROS 用户将使用客户端库 API,例如rclcpp,来实现他们的代码(可执行文件或库)。客户端库的实现,例如rclcpp,使用rcl提供对 ROS 图和图事件的访问的接口。该rcl实现又使用rmw API来访问 ROS 图。实现的目的是为各种客户端库rcl可以使用的更复杂的 ROS 概念和实用程序提供通用实现,同时保持对所使用的底层中间件的不可知性。该接口的目的是捕获支持 ROS 客户端库所需的绝对最小中间件功能。最后, API的实现由中间件实现特定包提供。

在上图中,还有一个标记为 的框ros_to_dds,该框的目的是表示一类可能的包,这些包允许用户使用 ROS 等效项访问 DDS 供应商特定的对象和设置。该抽象接口的目标之一是将ROS用户空间代码与正在使用的中间件完全隔离,以便用户代码 对 DDS服务或者中间件的改动影响降到最小。

特定类型接口

通俗来讲下面主要的表达就是注入用户自定义的类对象到ros 系统,让ros 也认识你定义的这些类

在一些特定的业务场景下,有些 API的某些部分必然特定于正在交换的消息类型,例如发布消息或订阅主题,因此需要为每种消息类型生成代码。下图布局了从用户定义的rosidl文件(例如.msg文件)到用户和系统用于执行类型特定功能的类型特定代码的路径:

在这里插入图片描述
图:“静态”类型支持生成的流程图,从rosidl文件到面向用户的代码

该图的右侧显示了如何.msg将文件直接传递到特定于语言的代码生成器,例如rosidl_generator_cpprosidl_generator_py。这些生成器负责创建用户将包含(或导入)的代码,并将其用作文件中定义的消息的内存中表示形式.msg。例如,考虑消息std_msgs/String,用户可能会在 C++ 中使用此文件以及语句,或者他们可能会在 Python 中使用该语句。这些语句之所以有效,是因为这些文件是由这些特定于语言的(但与中间件无关的)生成器包生成的。

#include <std_msgs/msg/string.hpp>from std_msgs.msg import String

rosidl API

该rosidl存储库位于GitHub上的ros2/rosidl,定义了消息 IDL 语法,即.msg文件、.srv文件等的语法,并包含用于解析文件、提供 CMake 基础设施以从消息生成代码、生成与实现无关的包。代码(头文件和源文件),以及用于建立默认的生成器集。该存储库包含这些包:

  • rosidl_cmake:提供CMake函数和模块,用于从rosidl文件(例如.msg文件、.srv文件等)生成代码。

  • rosidl_default_generators:定义默认生成器列表,确保它们作为依赖项安装,但也可以使用其他注入的生成器。

  • rosidl_generator_c:提供为文件生成C头文件(.h)的工具rosidl。

  • rosidl_generator_cpp:提供为文件生成C++头文件(.hpp)的工具rosidl。

  • rosidl_generator_py:提供为文件生成Python模块的工具rosidl。

  • rosidl_parser:提供Python API用于解析rosidl文件。

当然ros还有更多的api 内部接口,有兴趣的小伙伴可以去ros 官网看看

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

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

相关文章

岩土工程监测仪器之一:振弦采集仪的工作原理解析

岩土工程监测仪器之一&#xff1a;振弦采集仪的工作原理解析 河北稳控科技振弦采集仪是岩土工程监测中常用的一种仪器&#xff0c;用于测量地面、结构物或其他物体的振动情况。它通过感应振弦的振动来获取相关的数据&#xff0c;进而分析和评估土壤、地基或结构物的稳定性和安…

hdfs块数据丢失(启动安全模式)

进入安全模式 hdfs dfsadmin -safemode退出安全模式 hdfs dfsadmin -safemode forceExit

数据可视化(九):Pandas北京租房数据分析——房源特征绘图、箱线图、动态可视化等高级操作

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

5.13号模拟前端面试10问

1.介绍箭头函数和普通函数的区别 箭头函数和普通函数在JavaScript中有一些重要的区别。以下是关于这些区别的详细解释&#xff1a; 语法结构上的差异&#xff1a; 箭头函数使用更简洁的语法&#xff0c;它不需要使用function关键字&#xff0c;而是使用一个箭头&#xff08;…

羊大师解析,羊奶滋养健康伴你行

羊大师解析&#xff0c;羊奶滋养健康伴你行 羊大师发现&#xff0c;羊奶在健康方面具有一定的优势&#xff0c;主要体现在以下几个方面。 补充营养&#xff1a;羊奶富含多种营养物质&#xff0c;包括蛋白质、钙、维生素D、维生素B12、矿物质等&#xff0c;这些成分有助于满足…

高考志愿系统-信息管理模块:专业信息和分数线信息分析

之前分析可知&#xff0c;专业和学校的关系为多对一&#xff0c;专业和分数线的关系为一对多。所以专业信息的管理稍微复杂一点。 其中分数线信息的管理和专业信息的业务逻辑相互联系&#xff0c;就是在对专业信息管理的时候&#xff0c;分数线信息也会随着更新。 1.获取专业…

有哪些值得买的开放式耳机推荐?2024年开放式运动耳机选购指南

开放式耳机因其独特设计&#xff0c;能在一定程度上保护听力。相较于传统封闭式耳机&#xff0c;开放式设计允许周围环境声音自然流入耳内&#xff0c;降低了耳内共振和声压&#xff0c;减少了耳道的不适感&#xff0c;从而减轻了对听力的潜在损害。对于追求音质与听力保护并重…

傻瓜化备份/恢复K8S集群Etcd数据

前言&#xff1a; 备份重要数据&#xff0c;简化重复操作&#xff0c;让一指禅、点点点也能完成运维任务。 脚本呈现界面如下&#xff1a; 1、查看Etcd版本 rootmaster:~# cat /etc/kubernetes/manifests/etcd.yaml | grep image: | awk {print $2} registry.aliyuncs.com/goo…

视频短信时代来临!发送前必知的四大关键要素

随着移动通信技术的迅猛发展&#xff0c;视频短信作为全新的沟通方式&#xff0c;正逐渐融入我们的日常生活。作为行业的先行者&#xff0c;邦之信已率先推出视频短信业务&#xff0c;并获得了市场的广泛认可。 那么&#xff0c;在发送视频短信时&#xff0c;我们需要注意哪些关…

口碑最好的麦克风品牌有哪些?多款高口碑无线领夹麦克风推荐

从直播、拍摄到采访&#xff0c;音频设备对于我们的生活越来越重要&#xff0c;想要拥有更清晰、真实的录音效果&#xff0c;一款优质的无线领夹麦克风肯定是必不可少的&#xff0c;其轻便小巧的特性&#xff0c;不仅适用于手机和相机的直播、录音需求&#xff0c;同时也能满足…

MATLAB支持向量机:函数或变量 ‘svmtrain‘ 无法识别解决方法

我的MATLAB版本是2020a&#xff0c;在运行程序时出现了一下报错 若在运行程序时出现了以下报错&#xff1a; 支持向量机程序在MATLAB执行代码的时候发现有错误。 试一下help&#xff0c;如下图所示&#xff0c;SVM_L和svmtrain均找不到。 打开matlab帮助文档&#xff1a; 可…

敦煌网(DHgate)商家一定要掌握的店铺流量提升技巧

流量是一个店铺的血液&#xff0c;没有流量的支撑&#xff0c;其他也都将成为浮云。流量能够成为成交量的一定保证&#xff0c;如何让店铺拥有傲人的流量成为我们共同努力的又一方向。 关于店铺的流量我们需要知道几个关键点&#xff1a; 一&#xff0c;主要流量的来源; 二&a…

untiy 为预制体动态加载光照贴图

unity版本为2021.8 预制体不能携带光照贴图信息&#xff0c;只能我们自己准备了 多方查找加自己摸索终于找到了适合新版本的解决方案&#xff0c;直接贴代码 将这个脚本挂到预制体的最上级 using System.Collections; using System.Collections.Generic; using UnityEditor; …

花趣短视频源码淘宝客系统全开源版带直播带货带自营商城流量主小游戏功能介绍

1、首页仿抖音短视频 &#xff0c;关注 &#xff0c;我的 本地 直播 可发布短视频 可录制上传 2、商城页面 广告位、淘口令识别、微信登录、淘宝登录、淘宝返佣、拼多多返佣、京东返佣、唯品会返佣、热销榜、聚划算、天猫超市、9.9包邮、品牌特卖、新人攻略 、小米有品、优惠加…

便签字号怎么改 便签字体大小调节方法

在日常工作和生活中&#xff0c;便签是我形影不离的助手。每当灵感闪现或是有待办事项时&#xff0c;我都会随手记录在便签上&#xff0c;它就像我生活中的记事本&#xff0c;帮助我安排生活和工作。 然而&#xff0c;每个人都有不同的视觉需求和阅读习惯&#xff0c;对于便签…

【Jenkins】Pipeline流水线语法解析全集 -- 声明式流水线

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

Centos7网卡启动失败(Failed to start LSB: Bring up/down)

好雨知时节 当春乃发生 随风潜入夜 润物细无声 报错内容 启动虚拟机时&#xff0c;Ceotos的虚拟网卡没有一起启动&#xff0c;导致服务无法正常使用 查询网络启动状态 systemctl status network.service报Failed to start LSB: Bring up/down 查看网络启动日志 journalctl…

pypi发布.whl文件

Profile of liguandong PyPIThe Python Package Index (PyPI) is a repository of software for the Python programming language.https://pypi.org/user/liguandong/2024年&#xff0c;将Python项目发布到PyPI保姆级教程 - 知乎前几天我准备上传自己开发的项目到PyPI上的时候…

Spring MVC(五) 文件上传

1 单文件上传 在程序开发中&#xff0c;有时候需要上传一些文件。我们在学习Servlet的时候&#xff0c;也做过文件上传的操作&#xff0c;只不过基于Servlet的文件上传操作起来过于复杂&#xff0c;因此所有的MVC框架都提供了自己的文件上传操作&#xff0c;基本上都是基于File…

从零开始学习Linux(6)----进程控制

1.环境变量 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;我们在编写C/C代码时&#xff0c;链接时我们不知道我们链接的动态静态库在哪里&#xff0c;但可以连接成功&#xff0c;原因是环境变量帮助编译器进行查找&#xff0c;环境变量通常具有…