谈谈ROS的通信机制

本文首先简单的介绍ROS是什么和核心概念,然后主要介绍ROS的通信机制。

1、ROS是什么

ROS(机器人操作系统,Robot Operating System),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。

v2-0d3d58745c227563942ade7106efa753_b.jpg
ROS21讲——ROS的构成

ROS的以下特性使得我们可以使用ROS高效、便捷地搭建出机器人原型机:

  • ROS采用了一种松耦合分布式的通信框架机制
  • ROS提供了丰富的功能包和测试、仿真等工具
  • ROS使用广泛,文档丰富

v2-0f0b2eaf432a58738f62799695e87649_b.jpg
ROS中的Gazebo仿真工具

2、ROS核心概念

下面我们来看一下ROS最核心的概念:节点(Node)和节点管理器(ROS Master)。

每个节点是一个执行具体某项任务的、独立运行的可执行文件(例如采集图像节点、图像处理节点),节点名称不可重复。不同的节点甚至可以使用不同的编程语言,以及运行在不同的主机上。

ROS启动于节点管理器,管理器用于管理ROS中的不同节点,为节点提供命名和注册服务,辅助不同节点之间相互查找和通信,如下图所示。通过这种方式,我们就不必指定“发送传感器数据到IP为127.0.0.1的主机”,只需要告诉Node1发送消息到Node2,十分便捷。节点管理器还提供了参数服务器,节点使用该服务器存储和检索运行时的参数。

v2-3a652500e219c36a055eab13dc182693_b.jpg

3、通信机制

那么节点之间是如何通信的呢?主要有话题通信和服务通信两种方式,我们以下图为例详细介绍。

(1)话题通信

此时我们有一台搭载了相机的机器人,我们希望机器人能够获取并处理相机采集的图像数据,同时可以在笔记本上看到这些图像。因此,我们定义了三个节点:相机节点(Camera Node)、图像处理节点(Image Processing Node)和图像显示节点(Image Display Node)。所有的节点都注册在节点管理器(ROS Master)中,管理器可以视为一个查询表,各个节点能查到消息要发送到其他的哪个节点。

v2-a506968142b0403bc071157b3623c215_b.jpg
ROS Master中注册了三个节点

完成注册后,Camera Node声明它发布(Publish)了一个叫做/image_data的话题(Topic)。Image Processing Node和Image Display Node声明它们订阅(Subscribe)了这个Topic。话题中数据为Message,具有一定类型和数据结构(ROS中提供了标准数据类型,用户也可自己定义),当Camera Node接收到相机发动的数据后,就立即将数据发送到另外两个节点上。

v2-807eb23a66a0bdd64ccb0d87b989997a_b.jpg
相机节点发布了数据,图像采集节点和图像显示节点订阅了数据

可以看出以下几点:

  • 话题通信是一种异步通信,即数据的传输是单向的,只出不进。
  • 同一个话题的订阅者或发布者可以不唯一。

(2)服务通信

话题通信的数据传输是单向的,订阅端(Image Processing Node)被动接收发布端(Camera Node)的数据?这时候有人就问了,如果Image Processing Node想主动接收数据怎么办。ROS中提供了另一种通信方式:服务通信。服务通信由请求方(Client)和应答方(Server)组成。

Camera Node可以在ROS Master上注册一个特定的服务(Service)。客户端(Camera Node)发动请求数据,请求方(Image Processing Node)发送一个request,等待应答方(Camera Node)处理后,反馈回一个reply。

v2-20262fb859b3bc1e6c64fd6be04f6d93_b.jpg

以上就是ROS的通信机制。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值