目录
一、计算图级
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客户端库(rospy、roscpp等)与其他节点通信,可以发送或接收消息Message。
首先你已经根据 搭建ROS开发环境教程 创建catkin工作空间,并启动ROS:
$ roscore
再新开一个终端,并使用rosnode list查看当前存在的节点Node:
$ rosnode list
/rosout
可见此时仅存在1个节点rosout,rosout节点用于收集和记录节点调试输出信息,所以它总是在运行的。
启动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:

上图中椭圆框即为节点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。

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

被折叠的 条评论
为什么被折叠?



