【ROS2】概念:高级-内部 ROS 2 接口

 目录

  • 内部 API 架构概述

  • 类型特定接口

    •  静态类型支持

    • 静态类型支持与 DDS

    •  动态类型支持

  •   rcl 仓库

  •   rmw 仓库

  •   rosidl 仓库

  •   rcutils 仓库

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

内部 API 架构概述 

有两个主要的内部接口:

  • ROS 中间件接口 ( rmw API)

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

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

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

6175d6d0f86e0c67f7234720724f1629.png

如图所示,这些 API 是堆叠的,因此典型的 ROS 用户将使用客户端库 API,例如 rclcpp ,来实现他们的代码(可执行文件或库)。客户端库的实现,例如 rclcpp ,使用 rcl 接口,该接口提供对 ROS 图和图事件的访问。 rcl 实现反过来使用 rmw API 来访问 ROS 图。 rcl 实现的目的是为更复杂的 ROS 概念和实用程序提供一个通用实现,这些概念和实用程序可能会被各种客户端库使用,同时与所使用的底层中间件无关。 rmw 接口的目的是捕获支持 ROS 客户端库所需的最低限度的中间件功能。最后, rmw API 的实现由特定于中间件实现的包提供,例如 rmw_fastrtps_cpp ,其库是针对供应商特定的 DDS 接口和类型编译的

在上图中还有一个标记为 ros_to_dds 的框,该框的目的是表示一类可能的包,这些包允许用户使用 ROS 等效项访问 DDS 供应商特定的对象和设置这个抽象接口的目标之一是完全将 ROS 用户空间代码与所使用的中间件隔离开来,以便更换 DDS 供应商甚至中间件技术对用户代码的影响最小。然而,我们认识到,有时尽管可能会产生后果,但深入实现并手动调整设置是有用的。通过要求使用这些包之一来访问底层 DDS 供应商的对象,我们可以避免在正常接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值