ROS 2 index翻译(五)——关于ROS 2客户端库

1.概述
客户端库(RCL,ROS Client Library)是允许用户执行其ROS代码的API。用户使用客户端库来访问ROS概念,如节点、主题、服务等。客户端库包含多种编程语言,因此用户可以使用最适合其应用程序的语言编写ROS代码。例如,您可能更喜欢在Python中编写可视化工具,因为它可以更快地进行原型设计迭代,而对于系统中与效率相关的部分,可以用C ++更好地实现节点。

用不同客户端库编写的节点能够彼此共享消息,因为所有客户端库都实现了代码生成器,这些代码生成器为用户提供了与相应语言的ROS接口文件交互的能力。

除了特定语言的通信工具之外,客户端库还向用户展示了使ROS成为“ROS”的核心功能。例如,以下是通常可以通过客户端库访问的功能列表:

  • 名称和名称空间
  • 时间(真实的或模拟的)
  • 参数
  • 控制台记录
  • 线程模型
  • 进程内通信

2.支持的客户端库
C ++客户端库(rclcpp)和Python客户端库(rclpy)都是利用RCL中通用功能的客户端库。

虽然C ++和Python客户端库由核心ROS 2团队维护,但ROS 2社区的成员已创建了其他客户端库:

  • JVM and Android
  • Objective C and iOS
  • C#
  • Swift
  • Node.js
  • Ada

3.通用功能:RCL
客户端库中的大多数功能并不特定于客户端库的编程语言。例如,在理想情况下,参数的行为和命名空间的逻辑应该在所有编程语言中都是相同的。因此,客户端库不是从头开始实现通用功能,而是使用通用核心ROS客户端库(RCL)接口,该接口实现非特定语言的ROS概念的逻辑和行为。所以,客户端库只需要使用外部函数接口包装RCL中的通用功能。这使客户端库更轻量化,更容易开发。C语言通常是用于客户端库包装的最简单的语言,所以RCL通用功能使用C接口公开。

除了使客户端库轻量化之外,拥有通用核的另一个优点是不同语言之间的行为更加一致。如果对核心RCL中的功能的逻辑/行为进行任何更改—比如命名空间—所有使用RCL的客户端库都会反映这些更改。此外,拥有通用核心意味着在修复bugs时,维护多个客户端库的工作量会减少。

此处可找到RCL的API文件。

4.针对特定语言的功能
需要针对特定语言的功能/属性的客户端库概念未在RCL中实现,而是在每个客户端库中实现。例如,“旋转”函数使用的线程模型其应用将针对特定的客户端库的语言。

5.演示
对于在使用rclpy的发布者和使用rclcpp的订阅者之间的消息交换攻略,我们建议您从17:25开始观看this ROSCon talk

6.与ROS 1比较
在ROS 1中,所有客户端库都是“从头开始”开发的。这允许ROS 1 Python客户端库纯粹用Python实现,这带来了诸如不需要编译代码等好处。但是,命名约定和行为在客户端库之间并不总是一致的,bug修复必须在多处进行,并且有许多功能只在一个客户端库(例如UDPROS)中实现。

7.总结
通过使用通用核心ROS客户端库,以各种编程语言编写的客户端库更易于编写并具有更一致的行为。

 

英文网址:https://index.ros.org/doc/ros2/Concepts/ROS-2-Client-Libraries/

转载于:https://www.cnblogs.com/tuxinbang/p/10705413.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值