ROS通信机制
一、话题通信机制
1.Talker 注册
Talker启动,并通过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发布数据
二、服务通信机制
1. Talker 注册
Talker启动,使用RPC (远程过程调用) 向ROS Master注册发布者信息,包含服务名;ROS Master会将注册信息添加到注册列表中。
2. Listener 注册
Listener 启动后,使用RPC向ROS Master注册订阅者的信息,包含需要查找的服务名。
3. ROS Master进行信息匹配
Master 根据Listener的订阅信息从注册列表中进行查找,如果没有找到匹配的服务提供者,则等待匹配的服务提供者加入;如果匹配成功,Master通过RPC向Listener发布Talker的TCP地址信息。
4. Listener 与Talker建立网络连接
Listener接收到确认信息后,使用TCP尝试与Talker建立网络连接,并且发送服务的请求数据。
5. Talker接收到服务请求和参数后,开始执行服务功能,执行完毕后,向Listener发送应答数据。
三、其他通信机制
1.进程间高效通信使用Nodelet。
2.action 拥有goal、cancel、status、result、feedback。

浙公网安备 33010602011771号