机器人系统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 官网看看

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tcping的安装,ping和tcping的区别

ping和tcping的区别 功能不同&#xff1a; Ping&#xff1a;Ping是一种基于ICMP协议的网络工具&#xff0c;用于测试主机之间的连通性。它发送ICMP回显请求&#xff08;Echo Request&#xff09;到目标主机&#xff0c;并等待目标主机返回ICMP回显应答&#xff08;Echo Reply…

架构师:搭建Spring Security、OAuth2和JWT 的安全认证框架

1、简述 Spring Security 是 Spring 生态系统中的一个强大的安全框架,用于实现身份验证和授权。结合 OAuth2 和 JWT 技术,可以构建一个安全可靠的认证体系,本文将介绍如何在 Spring Boot 中配置并使用这三种技术实现安全认证,并分析它们的优点。 2、Spring Security Spri…

Java 笔记 13:Java 数组内容,数组的声明、创建、初始化、赋值等,以及内存分析

一、前言 记录时间 [2024-05-03] 系列文章简摘&#xff1a; Java 笔记 01&#xff1a;Java 概述&#xff0c;MarkDown 常用语法整理 Java 笔记 02&#xff1a;Java 开发环境的搭建&#xff0c;IDEA / Notepad / JDK 安装及环境配置&#xff0c;编写第一个 Java 程序 Java 笔记 …

会声会影电影片头怎么做 会声会影电影质感调色技巧 会声会影视频制作教程 会声会影下载免费中文版

片头通常通过一系列的图像、音乐和文字等元素来引入电影的主题和氛围。通过视觉和音频的呈现方式&#xff0c;给观众留下深刻的第一印象&#xff0c;为电影的故事铺设基础。这篇文章来学习一下会声会影电影片头怎么做&#xff0c;会声会影电影质感调色技巧。 一、会声会影电影…

ASP.NET视频点播系统的设计与实现

摘 要 本文阐述了基于WEB的交互式视频点播系统的协议原理、软件结构和设计实现。本视频点播系统根据流媒体传输原理&#xff0c;在校园局域网的基础上模拟基于Web的视频点播系统&#xff0c;实现用户信息管理、视频文件的添加、删除、修改及在线播放和搜索功能。本系统是一个…

XMall-Front:基于Vue.js的XMall商城前台页面的开发实践

XMall-Front&#xff1a;基于Vue.js的XMall商城前台页面的开发实践 摘要 随着电子商务的蓬勃发展&#xff0c;用户体验逐渐成为决定电商平台成功与否的关键因素。作为XMall商城项目的一部分&#xff0c;XMall-Front是基于Vue.js的前端页面开发&#xff0c;其目标是为用户提供…

关于地盘的紧固连接技术——SunTorque智能扭矩系统

底盘作为汽车的重要组成部分&#xff0c;其材料的选择和连接技术也日益受到关注。尤其是随着新能源汽车的兴起&#xff0c;底盘轻量化已成为一种趋势。在这一背景下&#xff0c;底盘新材料与紧固连接技术的研究和应用显得尤为重要。今天SunTorque智能扭矩系统和大家一起了解地盘…

Go通过CRUD实现学生管理系统

虽然这个项目没有什么含金量&#xff0c;但是可以熟悉go的语法和go开发项目的一般流程 项目结构 项目实现了五个功能&#xff1a; &#xff08;1)增加一个学生 &#xff08;2&#xff09;删除一个学生 &#xff08;3&#xff09;修改一个学生的信息 &#xff08;4&#xf…

9.4k Star!MemGPT:伯克利大学最新开源、将LLM作为操作系统、无限上下文记忆、服务化部署自定义Agent

9.4k Star&#xff01;MemGPT&#xff1a;伯克利大学最新开源、将LLM作为操作系统、无限上下文记忆、服务化部署自定义Agent 原创 Aitrainee | 公众号&#xff1a;AI进修生&#xff1a;AI算法工程师 / Prompt工程师 / ROS机器人开发者 | 分享AI动态与算法应用资讯&#xff0c;提…

N7552A是德科技N7552A电子校准件

181/2461/8938产品概述&#xff1a; 更小巧轻便的 2 端口模块&#xff0c;支持 3.5 mm 或 N 型 50 Ω 连接器&#xff0c;能够将校准时间缩短一半 特点 频率范围&#xff1a;直流至 9 GHz 使用 N 型或 3.5 mm 连接器 更小巧轻便的 2 端口电子校准件&#xff08;ECal&#xff…

力扣刷题--数组--第一天

一、数组 数组特点&#xff1a; 连续内存空间存储得数据元素类型一致数组可以通过下标索引查找数据元素&#xff0c;可以删除、替换、添加元素等 1.1 二分查找 使用二分查找需满足得条件&#xff1a; 数组是有序的&#xff1b;数组中没有重复元素&#xff1b;查找的target…

[Docker]容器的网络类型以及云计算

目录 知识梗概 1、常用命令2 2、容器的网络类型 3、云计算 4、云计算服务的几种主要模式 知识梗概 1、常用命令2 上一篇已经学了一些常用的命令&#xff0c;这里补充两个&#xff1a; 导出镜像文件&#xff1a;[rootdocker ~]# docker save -o nginx.tar nginx:laster 导…

关于Oracle 23ai 你要知道的几件事情

1.版本生命周期 23ai发布后的Oracle版本生命周期图&#xff0c;可以看到23ai是长期支持版本可以到2032年。 引申 Oracle版本分为两类 Innovation Release--创新版本&#xff0c;一般提供至少两年技术支持 Long Term Release --长期支持版本&#xff0c;一般提供5年premier和…

护眼灯排名前十的品牌有哪些?护眼灯品牌排行前十名推荐

近视在儿童中愈发普遍&#xff0c;许多家长开始认识到&#xff0c;除了学业成绩之外&#xff0c;孩子的视力健康同样重要。毕竟&#xff0c;学业的落后可以逐渐弥补&#xff0c;而一旦孩子近视&#xff0c;眼镜便可能成为长期伴随。因此&#xff0c;专业的护眼台灯对于每个家庭…

MySQL 中的HASH详解

MySQL中的哈希索引&#xff08;Hash Index&#xff09;是一种特殊的数据库索引类型&#xff0c;它利用哈希表&#xff08;Hash Table&#xff09;的数据结构来存储索引项。哈希表通过哈希函数&#xff08;Hash Function&#xff09;将索引列的值转化为一个固定长度的哈希码&…

腾锐D2000-8 MXM VPX,全国产,可广泛应用于边缘计算网关、入侵检测、VPN、网络监控等等应用领域

腾锐D2000-8 MXM VPX 1. 概述 XMVPX-108 是一款基于飞腾 D2000/8 处理器的低功耗逻辑运算和图形处理 VPX 刀片&#xff0c; 板贴 32GB DDR4 内存&#xff0c;搭载飞腾 X100 套片&#xff0c;满足通用 IO 接口功能。GPU 采用 MXM 小型插卡形式&#xff0c; 搭配 8GB 显卡。提供…

SAP 定义冻结库存不参与MRP运算简介

在MRP中,有着各种类型的特殊库存,在运行MRP时,某些特殊库存将被考虑,某些特殊库存又不被考虑,在实际过程中某个物料的库存,存在冻结库存,质检库存,调拨的在途库存,业务部门并不希望一味的将库存地点排除到MRP计算之外。希望在跑MRP的时候只考虑非限制库存。 针对以上…

使用STM32的FLASH保存数据

使用STM32的FLASH保存数据 为了防止“掉电丢失数据”&#xff0c;我们最先想到的是EEPROM&#xff0c;但是若考虑到降低成本和PCB布线的空间&#xff0c;使用CPU内部的FLASH空间来保存数据&#xff0c;是最好的选择。尤其是在STM32芯片上&#xff0c;应用案例还是比较多的。 …

使用Beego创建API项目并自动化文档

最近需要使用Go写一个Web API项目&#xff0c;可以使用Beego与Gin来写此类项目&#xff0c;还是非常方便的&#xff0c;这里就介绍一下使用Beego来创建的Web API项目并自动化文档的方法。 使用Gin创建API项目并自动化文档参见&#xff1a;使用Gin编写Web API项目并自动化文档 …

软件FMEA的时机:架构设计、详设阶段——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 软件FMEA&#xff08;故障模式与影响分析&#xff09;是一种预防性的质量工具&#xff0c;旨在识别软件中可能存在的故障模式&#xff0c;并分析其对系统性能、安全性和可靠性的影响。在软件开发生命周期中&#xff0c;选择适当的时机进行FME…