ROS通信架构

本文详细介绍了ROS(Robot Operating System)的通信架构,包括启动master和node,重点讲解了Topic话题、Service服务以及Parameter Service参数服务器这三种主要的通信方式。在Topic通信中,数据通过点对点的单向传输,利用回调函数处理消息。Service提供了双向同步通信,适合临时而非周期性的数据需求。此外,还介绍了如何创建和使用自定义的话题消息和服务请求与应答。
摘要由CSDN通过智能技术生成

ROS通信架构

1.图概念概述

Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。

Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。

topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。 

Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。 

rosout: ROS中相当于stdout/stderr。

roscore: 主机+ rosout + 参数服务器 。

2.启动master和node

当我们要启动ROS时,首先输入命令:

$ roscore

此时ROS master启动,同时启动的还有rosout和parameter server,其中rosout是负责日志输出的一个节点,其作用是告知用户当前系统的状态,包括输出系统的error、warning等等,并且将log记录于日志文件中,parameter server即是参数服务器,它并不是一个node,而是存储参数配置的一个服务器。每一次我们运行ROS的节点前,都需要把master启动起来,这样才能够让节点启动和注册。
启动master之后,节点管理器就开始按照系统的安排协调进行启动具体的节点。节点就是一个进程,只不过在ROS中它被赋予了专用的名字里——node。
具体启动node的语句是:

$ rosrun <pkg_name> <node_name>

通常我们运行ROS,就是按照这样的顺序启动,有时候节点太多,我们会选择用launch命令来启动:

$ roslaunch <pkg_name> <file_name.launch>

roslaunch命令首先会自动进行检测系统的roscore有没有运行,也即是确认节点管理器是否在运行状态中,如果master没有启动,那么roslaunch就会首先启动master,然后再按照launch的规则执行。launch文件里已经配置好了启动的规则。 所以roslaunch就像是一个启动工具,能够一次性把多个节点按照我们预先的配置启动起来,减少我们在终端中一条条输入指令的麻烦。
3.ROS的通信方式是ROS最为核心的概念,ROS系统的精髓就在于它提供的通信架构。
ROS的通信方式有以下四种:

  • Topic 话题

  • Service 服务

  • Parameter Service 参数服务器

  • Actionlib 动作库
    3.1 Topic话题编程
    ROS中的通信方式中,topic是常用的一种。对于实时性、周期性的消息,使用topic来传输是最佳的选择。topic是一种点对点的单向通信方式,这里的“点”指的是node,也就是说node之间可以通过topic方式来传递信息。topic要经历下面几步的初始化过程:首先,publisher节点和subscriber节点都要到节点管理器进行注册,然后publisher会发布topic,subscriber在master的指挥下会订阅该topic,从而建立起sub-pub之间的通信。注意整个过程是单向的。其结构示意图如下:
    在这里插入图片描述Subscriber接收消息会进行处理&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值