新闻中心 新闻
技术分享 | 5点带你快速理解ROS2通信
新闻 2021-10-25 10:21:46

在一个庞大的机器人系统中,通信是基础,是重中之重。如果连各个模板之间的通信概念都含糊不清,不能融会贯通。那么,对机器人的开发也会捉襟见肘。


本文将会介绍ROS2中的通信基础概念和模型,包括节点、话题、服务、动作


1. ROS2节点

ROS2节点,从本质上来说是一个可执行文件(C++或者Python)。它利用ROS2的通信网络能与其他节点进行通信(数据交互)。ROS中每一个节点应该负责一个单一的,模块化的用途(例如:一个节点用于控制电机,一个节点用于控制激光雷达),每个节点都可以通过主题、服务、动作或者参数向其他节点发送和接受数据。一个完整的机器人系统由许多协同工作的节点组成。如图1所示:

图1.gif

图1


2. ROS2话题

ROS2将复杂的系统分解成许多模块化的节点,话题(Topic)是ROS2通信中的重要元素,充当节点交换信息的总线,如图2所示。

图2.gif

图2


当然,一个节点可以向任意数量的主题发布数据并同时订阅任意数量的主题。因为在ROS2中,应用层方面,去中心化master后,所有的节点都是同一个级别。即可以实现一对多,多对一,多对多的通信模式。如图3所示。

图3.gif

图3

话题是数据在节点之间通信的主要方式之一,因此可以在系统的不同部分之间进行流动。


3. ROS2服务

服务(Server)在ROS2的通信网络中,是节点的另一种通信方式。服务通信是基于C/S模型。而不是话题通信中的发布/订阅模型。服务仅仅在客户端调用时才提供


图4展示了一对一的服务通信模型,图5展示了一对多的服务通信模型。

图4.gif

图4


图5.gif

图5


4. ROS2动作

动作通信是ROS2中的一种通信类型。用于长时间运行的任务。主要由三个部分组成:目标(goal)、反馈(feedback)、结果(result。动作通信建立在话题和服务之上。类似与服务的C/S通信模型,但是不同之处在于,客户端可以随时取消动作。动作还提供稳定的反馈,而不是返回单一响应的服务。如图6所示。

图6.gif图6

结语

知其然,知其所以然。虽然ROS2的通信在底层做了修改,但是基础概念仍然沿用ROS1。因此,本文所提到的ROS2通信模型也适用于ROS1,可以帮助大家快速理解ROS的通信模型。

阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!


公众号:阿木实验室 ( 领取免费资料包)

官方淘宝店:阿木实验室(可购买硬件配件)

硬件咨询:yanyue199506(欢迎洽谈合作)

课程咨询:jiayue199506 (免费领取机器人工程师学习计划)




- End -

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。

您的浏览器版本过低,建议下载更换以下浏览器:

官方店铺

 阿木实验室

联系电话

028-87872048

扫一扫,快速加入

硬件评测

群号652692981

课程学习

群号652692981