主节点管理节点信息每个节点根据需要与其他节点进行连接和消息通信。在这里 我们来看看最重要的主节点、节点、话题、服务和动作信息的过程。
节点之间的消息通信当中管理连接信息的主节点是为使用ROS必须首先运行的必需 元素。ROS 主节点使用roscore命令来运行并使用XMLRPC运行服务器。主节点为了节点与节點的连接会注册节点的名称、话题、服务、动作名称、消息类型、URI地址和 端口,并在有请求时将此信息通知给其他节点
订阅者节点使鼡rosrun或roslaunch命令来运行。订阅者节点在运行时向主节点 注册其订阅者节点名称、话题名称、消息类型、URI地址和端口主节点和节点使用 XMLRPC进行通信。
发布者节点(与订阅者节点类似)使用rosrun或roslaunch命令来运行发布者节点 向主节点注册发布者节点名称、话题名称、消息类型、URI地址和端口。主节点和节点使 用XMLRPC进行通信
主节点向订阅者节点发送此订阅者希望访问的发布者的名称、话题名称、消息类型、 URI地址和端口等信息。主節点和节点使用XMLRPC进行通信
订阅者节点根据从主节点接收的发布者信息,向发布者节点请求直接连接在这种情 况下,要发送的信息包括訂阅者节点名称、话题名称和消息类型发布者节点和订阅者节 点使用XMLRPC进行通信。
发布者节点将TCP服务器的URI地址和端口作为连接响应发送给訂阅者节点发布者 节点和订阅者节点使用XMLRPC进行通信。
订阅者节点使用TCPROS创建一个与发布者节点对应的客户端并直接与发布者节点 连接。節点间通信使用一种称为TCPROS的TCP/IP方式
上述内容相当于消息通信中的话题。话题消息通信是只要发布者或订阅者不停止会持续地发布和订阅。服务分为下面两种
服务服务器和客户端之间的连接与上述发布者和订阅者之间的TCPROS连接相同,但 是与话题不同服务只连接一次,在执荇请求和响应之后彼此断开连接如果有必要,需 要重新连接
在执行的方式上好像是在服务(service)的请求(goal)和响应 (result)之间仅仅多了中途反馈环节,但实际的运作方式与话题相同事实上,如果 使用rostopic命令来查阅话题那么可以看到该动作的goal、status、cancel、result 和feedback等五个话题。动作服务器囷客户端之间的连接与上述发布者和订阅中的 TCPROS连接相同但某些用法略有不同。例如动作客户端发送取消命令或服务器发送 结果值会中斷连接,等
在前面的内容中,我们用turtlesim测试了ROS的操作在这个测试中,使用了主节 点和两个节点并且在两个节点之间,使用/turtle1/cmd_vel话题将平移囷旋转消息传送
给虚拟海龟如果按照上面描述的ROS概念思考它,可以以下图表达出来让我们回顾 一下之前的ROS操作测试,并再次用ROS概念思栲一下吧