ROS架构(二)——计算图

news/2024/6/18 4:53:02 标签: 拓扑学, 图论, c++, python

ROS架构(二)——计算图

目录

    • 1、节点
    • 2、消息
    • 3、话题
    • 4、服务
    • 5、节点管理器

从计算图的角度来看,ROS系统软件的功能模块以节点为单位独立运行,可以分布于多个相同或不同的主机中,在系统运行时通过端对端的拓扑结构进行连接。计算图是ROS处理数据的一种点对点的网络形式。程序运行时,所有进程以及他们所进行的数据处理,将会通过一种点对点的网络形式表现出来。这一级主要包括几个重要概念:节点(node)、消息(message)、主题(topic)、服务(service)。
在这里插入图片描述

1、节点

节点就是一些直行运算任务的进程。ROS利用规模可增长的方式是代码模块化:一个系统就是典型的由很多节点组成的。在这里,节点也可以被称之为“软件模块”。我们使用“节点”使得基于ROS的系统在运行的时候更加形象化:当许多节点同时运行时,可以很方便的将端对端的通讯绘制成一个图表,在这个图表中,进程就是图中的节点,而端对端的连接关系就是其中弧线连接。在机器人应用中,多种功能需要协调工作,例如机械臂的控制需要首先获得视觉传感器处理过的信息。在应用中,每个节点应保持简介,每个节点对应一个功能,不要追求大而全。

2、消息

节点之间是通过传送消息进行通讯的。每一个消息都是一个严格的数据结构。原来标准的数据类型(整型,浮点型,布尔型等等)都是支持的,同时也支持原始数组类型。消息可以包含任意的嵌套结构和数组(很类似于C语言的结构structs)。ROS Master提供对于节点的名字注册和查找,如果没有Master进程,节点将无法找到要通讯的对象和调用的服务(Services)。在分布式系统应用中,Master进程应被运行在其中一个电脑上,其余的节点通过这个Master来通讯。

3、话题

主题(Topic)是所有ROS节点传递数据的方式。节点通过Topic来发送message(节点发布一个topic),节点也通过topic来接受message(节点订阅一个topic)。它们之间的关系类似于同学间通过小纸条交流,每个同学(节点Node)都可以在小纸条(主题Topic)上写或者读信息(Message)。节点之间没有其他的联系,只要message类型正确,便可以通过topic进行数据发送与读取。消息以一种发布/订阅的方式传递。一个节点可以在一个给定的主题中发布消息。一个节点针对某个主题关注与订阅特定类型的数据。可能同时有多个节点发布或者订阅同一个主题的消息。总体上,发布者和订阅者不了解彼此的存在。
在这里插入图片描述

4、服务

在一些机器人应用中,单纯的发布/订阅机制的通信并不合适。Services为此针对需要请求/响应机制的应用,允许一个节点call另外一个节点去执行一个具体功能,任务。虽然基于话题的发布/订阅模型是很灵活的通讯模式,但是它广播式的路径规划对于可以简化节点设计的同步传输模式并不适合。在ROS中,我们称之为一个服务,用一个字符串和一对严格规范的消息定义:一个用于请求,一个用于回应。这类似于web服务器,web服务器是由URIs定义的,同时带有完整定义类型的请求和回复文档。需要注意的是,不像话题,只有一个节点可以以任意独有的名字广播一个服务:只有一个服务可以称之为“分类象征”,比如说,任意一个给出的URI地址只能有一个web服务器。

5、节点管理器

ROS Master 通过RPC(Remote Procedure Call Protocol,远程过程调用)提供了登记列表和对其他计算图表的查找。没有控制器,节点将无法找到其他节点,交换消息或调用服务。
在这里插入图片描述


http://www.niftyadmin.cn/n/884027.html

相关文章

ROS架构(三)——文件系统

ROS架构(三)——文件系统 目录总述一、功能包二、元功能包总述 众所周知,ROS类似于操作系统,将所有文件按照一定的规则进行组织,而不同功能的文件被放置在不同的文件夹下。 功能包(Package)&a…

ROS架构(四)——开源社区

ROS架构(四)——开源社区 ROS开源社区中的资源非常丰富,而且可以通过网络共享以下软件和知识。 发行版(Distribution):类似于Linux发行版,ROS发行版包括一系列带有版本号、可以直接安装的功能包…

Ubuntu16.04安装V-REP/coppeliaSim并与ROS kinetic桥接

Ubuntu16.04安装V-REP/coppeliaSim并与ROS kinetic桥接 目录一、下载安装包二、启动V-REP三、配置RosInterface plugin一、下载安装包 1、下载官方V-REP,参考网址:https://www.coppeliarobotics.com/previousVersions; 2、选择中间EDU,Ubunt…

Ubuntu16.04安装Pycharm

Ubuntu16.04安装Pycharm 目录1、下载Pycharm2、解压3、进入Pycharm文件夹的bin目录,输入运行命令4、安装成功1、下载Pycharm 官网网址:https://www.jetbrains.com/pycharm/download/#sectionlinux 点击右侧黑色DOWNLOAD,下载安装包。 2、解…

ROS架构(五)——ROS的通信机制

ROS架构(五)——ROS的通信机制 目录总述一、通信机制一——话题通信机制二、通信机制二——服务通信机制三、通信机制三——参数管理机制四、话题与服务的区别总述 ROS的核心——分布式通信机制 ROS是一个分布式框架,为用户提供多节点&#…

VNC远程登录操作Ubuntu16.04

VNC远程登录操作Ubuntu16.04 目录总述一、设置Ubuntu16.04,允许进行远程控制二、安装vncserver三、安装dconf-editor(取消权限限制)四、远程连接Ubuntu 16.04总述 VNC实现Windows远程访问Ubuntu 16.04,不需要安装其他桌面,使用Ubuntu 16.04原…

ROS基础(一)——第一个ROS例程——小乌龟仿真

ROS基础(一)——第一个ROS例程——小乌龟仿真 目录1、turtlesim功能包2、控制乌龟运动1、turtlesim功能包 在此例程中,通过键盘控制一只小乌龟在界面移动,而且会接触到第一个ROS功能包——turtlesim。该功能包的核心是turtlesim_…

ROS基础(二)——创建工作空间和功能包

ROS基础(二)——创建工作空间和功能包 目录1、什么是工作空间2、创建工作空间3、创建功能包使用ROS实现机器人开发的主要手段是写代码,这些代码文件就需要放置到一个固定的空间内,即工作空间。1、什么是工作空间 工作空间&#x…