ROS学习(三):消息通信过程

     主节点管理节点信息,每个节点根据需要与其他节点进行连接和消息通信。在这里, 我们来看看最重要的主节点、节点、话题、服务和动作信息的过程。

一.运行主节点

     节点之间的消息通信当中,管理连接信息的主节点是为使用ROS必须首先运行的必需 元素。ROS 主节点使用roscore命令来运行,并使用XMLRPC运行服务器。主节点为了节点与节点的连接,会注册节点的名称、话题、服务、动作名称、消息类型、URI地址和 端口,并在有请求时将此信息通知给其他节点。

二. 运行订阅者节点

     订阅者节点使用rosrun或roslaunch命令来运行。订阅者节点在运行时向主节点 注册其订阅者节点名称、话题名称、消息类型、URI地址和端口。主节点和节点使用 XMLRPC进行通信。

三.运行发布者节点

     发布者节点(与订阅者节点类似)使用rosrun或roslaunch命令来运行。发布者节点 向主节点注册发布者节点名称、话题名称、消息类型、URI地址和端口。主节点和节点使 用XMLRPC进行通信。

四.通知发布者信息

     主节点向订阅者节点发送此订阅者希望访问的发布者的名称、话题名称、消息类型、 URI地址和端口等信息。主节点和节点使用XMLRPC进行通信。

五.订阅者节点的连接请求

     订阅者节点根据从主节点接收的发布者信息,向发布者节点请求直接连接。在这种情 况下,要发送的信息包括订阅者节点名称、话题名称和消息类型。发布者节点和订阅者节 点使用XMLRPC进行通信。

六.发布者节点的连接响应

     发布者节点将TCP服务器的URI地址和端口作为连接响应发送给订阅者节点。发布者 节点和订阅者节点使用XMLRPC进行通信。

七.TCPROS连接

     订阅者节点使用TCPROS创建一个与发布者节点对应的客户端,并直接与发布者节点 连接。节点间通信使用一种称为TCPROS的TCP/IP方式。

八.发送消息

     发布者节点向订阅者节点发送消息。节点间通信使用一种称为TCPROS的TCP/IP 方式。

 九.服务请求及响应

     上述内容相当于消息通信中的话题。话题消息通信是只要发布者或订阅者不停止,会持续地发布和订阅。服务分为下面两种。

     1.服务客户端: 请求服务后等待响应

     2.服务服务器: 收到服务请求后执行指定的任务,并发送响应。

     服务服务器和客户端之间的连接与上述发布者和订阅者之间的TCPROS连接相同,但 是与话题不同,服务只连接一次,在执行请求和响应之后彼此断开连接。如果有必要,需 要重新连接。

十.动作的目标、结果和反馈 动作(action)

     在执行的方式上好像是在服务(service)的请求(goal)和响应 (result)之间仅仅多了中途反馈环节,但实际的运作方式与话题相同。事实上,如果 使用rostopic命令来查阅话题,那么可以看到该动作的goal、status、cancel、result 和feedback等五个话题。动作服务器和客户端之间的连接与上述发布者和订阅中的 TCPROS连接相同,但某些用法略有不同。例如,动作客户端发送取消命令或服务器发送 结果值会中断连接,等。

在前面的内容中,我们用turtlesim测试了ROS的操作。在这个测试中,使用了主节 点和两个节点,并且在两个节点之间,使用/turtle1/cmd_vel话题将平移和旋转消息传送

给虚拟海龟。如果按照上面描述的ROS概念思考它,可以以下图表达出来。让我们回顾 一下之前的ROS操作测试,并再次用ROS概念思考一下吧。

猜你喜欢

转载自blog.csdn.net/kh815/article/details/88130015
今日推荐