服务是节点之间通信的另一种方式,服务允许节点发起一个请求和接收一个响应。
打开终端在里面输入:
roscore
rosrun turtlesim turtlesim_node
rosservice list
/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 [service]
rosservice type clear
std_srvs/Empty
返回的结果是empty,这就说明当调用这个服务时,传递的参数为空,即没有参数。
我们可以使用rosservice call来调用一个服务,它的使用方法如下:
rosservice call [service] [args]
例如:
rosservice call clear
下面将演示一个带参数的服务spawn,我们首先查看一下它的类型:
rosservice type spawn| rossrv show
float32 x float32 y float32 theta string name --- string name
rosservice call spawn 2 2 0.2 ""
在这条命令执行完成后,就会出现另一只乌龟。
ROS中的服务是基于请求和响机制的,在上面的例子中,我们通过终端发送请求,节点接收后,做出响应。