-
服务通信理论模型
服务通信较之于话题通信更简单些,理论模型如下图所示,该模型中涉及到三个角色:ROS master(管理者)
Server(服务端)
Client(客户端)
0.Server注册
Server 启动后,会通过RPC在 ROS Master 中注册自身信息,其中包含提供的服务的名称。ROS Master 会将节点的注册信息加入到注册表中。
1.Client注册
Client 启动后,也会通过RPC在 ROS Master 中注册自身信息,包含需要请求的服务的名称。ROS Master 会将节点的注册信息加入到注册表中。
2.ROS Master实现信息匹配
ROS Master 会根据注册表中的信息匹配Server和 Client,并通过 RPC 向 Client 发送 Server 的 TCP 地址信息。
3.Client发送请求
Client 根据步骤2 响应的信息,使用 TCP 与 Server 建立网络连接,并发送请求数据。
4.Server发送响应
Server 接收、解析请求的数据,并产生响应结果返回给 Client。
简化理论模型:
假设家政公司为 rosmaster 客户要请人打扫卫生 客户就是client 家政服务人员就是server
0.家政服务人员去家政公司注册,并告知自己可以做什么 例如“扫地”
1.客户找到家政公司,要请一位“扫地”的家政服务人员
2家政公司把家政服务人员的电话给客户
3.客户打电话去请求“扫地”
4.家政人员去“扫地” 完成后告诉客户
note:
1.上述第0步和第1步不能调换,服务端要先注册,然后客户端再进行注册
2.与话题通信不同的是,调用一次服务要等到服务结束后本次调用才结束。
3.服务通信一般用于不是频繁调用的模块,比如调用摄像头功能。
以上论述是自己不成熟的见解,还望各位不吝指教!