2.2.3 服务
当你需要直接与节点通信并获得应答时,将无法通过主题实现,而需要使用服务。
服务需要由用户开发,节点并不提供标准服务。包含消息源代码的文件存储在srv文件夹中。
像主题一样,服务关联一个以功能包中.srv文件名称来命名的服务类型。与其他基于ROS文件系统的类型一样,服务类型是功能包名称和.srv文件名称的组合。例如chapter2_tutorials/srv/chapter2_srv1.srv文件的服务类型是chapter2_tutorials/chapter2_srv1。
ROS关于服务的命令行工具有两个:rossrv和rosservice。我们可以通过rossrv看到有关服务数据结构的信息,并且与rosmsg具有完全一致的用法。
通过rosservice可以列出服务列表和查询某个服务。支持的命令如下所示:
rosservice call/service args 根据命令行参数调用服务。
rosservice find msg-type 根据服务类型查询服务。
rosservice info/service 输出服务信息。
rosservice list 输出活动服务清单。
rosservice type/service 输出服务类型。
rosservice uri/service 输出服务的ROSRPC URI。