这篇教程介绍ROS服务,参数以及使用rosservice和rosparam命令行工具。假设前面的turtlesim节点还在运行。
1.ROS服务
服务(Services)是另一种节点间相互通信的方法。服务允许节点发送请求(request)并接收回应(response)。
2.使用rosservice
rosservice能简单地将服务添加到ROS的客户/服务框架中,它有很多命令能在话题中使用,如下所示:
rosservice list print information about active services
rosservice call call the service with the provided args
rosservice type print service type
rosservice find find services by service type
rosservice uri print service ROSRPC uri
使用rosservice list命令:
$ rosservice list
这个命令会显示turtlesim节点提供的9种服务和两种与rosout节点:
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level
然后用rosservice type来查看更多细节:
rosservice type [service]
比如:
rosservice type clear
会显示
std_srvs/Empty
服务为空,表明调用服务时没有使用参数(做出请求时不用发送数据,接收回应时也不会收到数据)。
使用rosservice call来调用服务:
rosservice call [service] [args]
这里不使用参数来调用clear因为其类型是空:
rosservice call /clear
这会清除turtlesim节点的背景。
!插入图片
再看看服务有参数的情况,比如查看服务spawn的信息:
$ rosservice type spawn| rossrv show
会得到:
float32 x
float32 y
float32 theta
string name
---
string name