网站为什么吸引人,济南设计公司排名,互联网创业项目整合网站,怎么弄自己的网址ROS是一个分布式框架#xff0c;为用户提供多节点#xff08;进程#xff09;之间的通信服务#xff0c;所有软件和功能都建立在这种分布式通信机制上#xff0c;ROS的通信机制是最底层也是最核心的技术。
一、话题通信机制 话题在 ROS 中使用最为频繁#xff0c;其通信…ROS是一个分布式框架为用户提供多节点进程之间的通信服务所有软件和功能都建立在这种分布式通信机制上ROS的通信机制是最底层也是最核心的技术。
一、话题通信机制 话题在 ROS 中使用最为频繁其通信模型也较为复杂。如图所示在 ROS 中有两个节点一个是发布者 Talker 另一个是订阅者 Listener 。两个节点分别发布、订阅同一个话题启动顺序没有强制要求此处假设 Talker 首先启动可分成图中所示的七步来分析建立通信的详细过程。 1.Talker注册 Talker启动通过1234端口使用RPC向ROS Master注册发布者的信息包含所发布消息的话题名ROS Master会将节点的注册信息加入注册列表中。 2. Listener 注册 Listener启动同样通过RPC向ROS Master注册订阅者的信息包含需要订阅的话题名。3.ROS Master进行信息匹配 Master根据Listener的订阅信息从注册列表中进行查找如果没有找到匹配的发布者则等待发布者的加入如果找到匹配的发布者信息则通过RPC向Listener发送Talker的RPC地址信息。 4.Listener发送连接请求 Listener接收到Master发回的Talker地址信息尝试通过RPC向Talker发送连接请求传输订阅的话题名、消息类型以及通信协议TCP/UDP 5.Talker确认连接请求 Talker接收到Listener发送的连接请求后继续通过RPC向Listener确认连接信息其中包含自身的TCP地址信息
6. Listener 尝试与Talker 建立网络连接 Listener接收到确认信息后使用TCP尝试与Talker建立网络连接。 7. Talker 向 Listener发布数据 成功建立连接后Talker开始向Listener发送话题消息数据。 从上面的分析中可以发现前五个步骤使用的通信协议都是RPC最后发布数据的过程才使用到TCP。ROS Master在节点建立连接的过程中起到了重要作用但是并不参与节点之间最终的数据传输。节点建立连接后可以关掉 ROS Master节点之间的数据传输并不会受到影响但是其他节点也无法加入这两个节点之间的网络。 二、服务通信机制
服务是一种带有应答的通信机制通信原理如图所示与话题的通信相比其减少了 Listener与Talker之间的RPC通信。 1.Talker注册 Talker启动通过1234端口使用RPC向ROS Master 注册发布者的信息包含所提供的服务名ROS Master会将节点的注册信息加入注册列表中。 2. Listener注册 Listener启动同样通过RPC 向 ROS Master注册订阅者的信息包含需要查找的服务名。3.ROS Master进行信息匹配 Master根据 Listener的订阅信息从注册列表中进行查找如果没有找到匹配的服务提供者则等待该服务的提供者加入如果找到匹配的服务提供者信息则通过RPC向Listener 发送Talker的TCP地址信息。 4.Listener与Talker建立网络连接 Listener接收到确认信息后使用TCP尝试与Talker建立网络连接并且发送服务的请求数据。 5.Talker向Listener发布服务应答数据 Talker接收到服务请求和参数后开始执行服务功能执行完成后向Listener发送应答数据。 三、参数管理机制 参数类似于ROS中的全局变量由ROS Master进行管理其通信机制较为简单不涉 及TCP/UDP的通信如图所示。 1.Talker设置变量 Talker 使用RPC向 ROS Master发送参数设置数据包含参数名和参数值ROS Master 会将参数名和参数值保存到参数列表中。
2Listeer查询参数值 Listener 通过RPC向ROS Master发送参数查找请求包含所要查找的参数名。 3.ROS Master向 Listener发送参数值 Master 根据 Listener 的查找请求从参数列表中进行查找查找到参数后使用RPC将参数值发送给 Listener。
注意如果 Talker 向Master 更新参数值Listener在不重新查询参数值的情况下是无法知晓参数值已经被更新的。所以在很多应用场景中需要一种动态参数更新的机制。