一、服务通信是什么?
服务通信是ROS中一种极其常用的通信模式,服务通信是基于请求响应模式的,是一种应答机制。即:一个节点A (进程)向另一个节点B(进程)发送请求,B 接受到之后处理请求,并产生相应结果返回给A
二、具体内容
1.角色
- master -->(管理者)
- Listener–>(Client,客户端)
- Talker --> (Server,服务端)
2.流程
- Server启动,通过RPC协议在ROS master中注册自身的信息,该信息会包括:提供的服务类型(类似于话题)和自身的RPC地址
- Client启动,通过RPC协议在ROS master中注册自身的信息,该信息会包括:想要的服务类型
- ROS Master根据注册表中的信息进行Client和Server匹配,并且通过RPC向Client发送Server的TCP地址
- Client使用TCP与Server建立网络连接,并发送请求数据
- Server接受,解析请求的数据,并将响应的结果发送回Client
3.注意
- 保证顺序,客户端(Client)启动时确保服务端)(Server)已经启动,这点与话题通信不一样
- 客户端和服务端可以存在多个
4.关注
- 流程已经被封装,可以直接调用
- 服务类型(话题),因为是根据服务类型进行匹配
- 服务端的实现,接受和解析请求,如何处理
- 客户端的实现,接受到服务端的响应之后怎么处理
- 数据载体,即数据的类型
总结
这是对于ROS中服务通信的一个理解,以及表达了在开发的时候觉得要注意和关注的点,如何错误,欢迎指正。