ROS学习笔记#基础篇#(三)——ROS通信机制

本文是ROS学习笔记的基础篇,详细介绍了ROS的计算图级概念,包括节点、主节点、话题、服务、动作和参数。重点讲解了话题的单向通信、服务的请求-响应式通信以及动作的目标-结果-反馈式通信,同时阐述了参数在ROS中的作用。文章通过实例演示了如何使用ROS相关命令操作话题、服务和参数,帮助读者深入理解ROS的通信机制。
摘要由CSDN通过智能技术生成

一、计算图级

1.1 关键概念

计算图是ROS处理数据的一种点对点的网络形式。程序运行时,所有进程以及他们所进行的数据处理,将会通过一种点对点的网络形式表现出来,包括以下几个重要概念:

  • 节点Node
    一个节点其实只不过是ROS程序包中的一个可执行文件,ROS节点之间可以通过多种通信机制进行通信。
  • 主节点Master
    主节点负责管理节点到节点的连接和消息通信,故亦可称“节点管理器”,通过roscore命令即可启动。
  • 话题Topic
    话题(亦可称为“主题”)是一种单向通信方式。
  • 服务Service
    服务是一种 请求Request响应Response式 的双向通信方式。
  • 动作Action
    动作是一种 目标Goal结果Result反馈Feedback式 的双向通信方式。
  • 消息Message
    消息是节点之间通信的数据结构
  • Bag
    用户可以保存ROS中发送和接收的消息的数据,这时用于保存的文件以*.bag作为文件扩展名。

1.2 理解节点(Node)

先了解一下节点Node操作命令rosnode的用法:

命令 说明
rosnode ping test connectivity to node
rosnode list list active nodes
rosnode info print information about node
rosnode machine list nodes running on a particular machine or list machines
rosnode kill kill a running node
rosnode cleanup purge registration information of unreachable nodes

一个节点其实只不过是ROS程序包中的一个可执行文件,ROS节点可以使用ROS客户端库(rospyroscpp等)与其他节点通信,可以发送或接收消息Message

首先你已经根据 搭建ROS开发环境教程 创建catkin工作空间,并启动ROS:

$ roscore

再新开一个终端,并使用rosnode list查看当前存在的节点Node

$ rosnode list
/rosout

可见此时仅存在1个节点rosoutrosout节点用于收集和记录节点调试输出信息,所以它总是在运行的。

启动Turtle例程:

$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key
注意:执行以上命令均需新开一个终端并配置ROS环境变量

使用rosnode list查看当前存在的节点Node

$ rosnode list
/rosout         # rosout节点用于收集和记录节点调试输出信息,所以它总是在运行的
/teleop_turtle  # turtle_teleop_key的节点
/turtlesim      # turtlesim_node的节点

也可以借助可视化工具rqt_graph便于直观理解:

$ rqt_graph

Hide一栏不勾选debug
rqt_graph Turtle节点
上图中椭圆框即为节点Node,节点之间的箭头说明它们之间存在通信,箭头上的备注即为话题Topic

二、通信方式

ROS使用的通信方式包括 话题Topic服务Service动作Action,此外,某种意义上 参数Parameter 也可认为是一种通信方式。下面将对这4种通信方式进行详细介绍:

2.1 话题(Topic)

先了解一下话题Topic操作命令rostopic的用法:

命令 说明
rostopic bw display bandwidth used by topic
rostopic delay display delay of topic from timestamp in header
rostopic echo print messages to screen
rostopic find find topics by type
rostopic hz display publishing rate of topic
rostopic info print information about active topic
rostopic list list active topics
rostopic pub publish data to topic
rostopic type print topic or field type

以下内容参考 ROS官方教程 | 理解ROS话题

2.1.1 话题的概念

话题Topic是一种单向通信方式, 其中发布消息的节点称为发布者Topic-Publisher,而接收消息的节点称为订阅者Topic-Subscriber

Node_A Master Node_B 注册 Topic-Publisher 注册 Topic-Subscriber
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值