ROS学习笔记(八)

ROS服务

本教程假设从前一教程启动的turtlesim_node仍在运行,现在我们来看看turtlesim提供了什么服务:

ROS Services

服务(services)是节点之间通讯的另一种方式。(另外一种是主题topic)
服务允许节点发送请求(request) 并获得一个响应(response)
rosservice可以很轻松的使用 ROS 客户端/服务器框架提供的服务。rosservice提供了很多可以在topic上使用的命令,如下所示:
可以使用rosservice -h命令查看帮助:

rosservice - h
Commands:
    rosservice args print service arguments
    rosservice call call the service with the provided args
    rosservice find find services by service type
    rosservice info print information about service
    rosservice list list active services
    rosservice type print service type
    rosservice uri  print service ROSRPC uri
rosservice list         输出可用服务的信息
rosservice call         调用带参数的服务
rosservice type         输出服务类型
rosservice find         依据类型寻找服务find services by service type
rosservice uri          输出服务的ROSRPC uri
  • rosservice list
    在terminal里输入rosservice list 你将看到:
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level

list 命令显示turtlesim节点提供了11个服务:清除(clear), 终止(kill), 重置(reset), 再生(spawn), turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, and turtlesim/set_logger_level. 同时还有另外两个rosout节点提供的服务: /rosout/get_loggers and /rosout/set_logger_level.

  • rosservice type
    使用方法:
    rosservice type [service]
    让我们来看看/clear服务的类型:
$ rosservice type clear
std_srvs/Empty

服务的类型为空(empty),这表明在调用这个服务是不需要参数(比如,请求不需要发送数据,响应也没有数据)。

  • rosservice call
    使用方法:
    rosservice call [service] [args]
    因为服务类型是空,所以进行无参数调用:
    rosservice call clear
    正如我们所期待的,服务清除了turtlesim_node的背景上的轨迹。
    ROS学习笔记(八)_第1张图片

通过查看再生(spawn)服务的信息,我们来了解带参数的服务:

$ rosservice type /spawn
turtlesim/Spawn
$ rosservice type spawn| rossrv show
float32 x
float32 y
float32 theta
string name
---
string name

这个服务使得我们可以在给定的位置和角度生成一只新的乌龟。名字参数是可选的,这里我们不设具体的名字,让turtlesim自动创建一个。
rosservice call spawn 2 2 0.2 ""
服务返回了新产生的乌龟的名字:

name: turtle2

现在我们的乌龟看起来应该是像这样的:

ROS学习笔记(八)_第2张图片

你可能感兴趣的:(ROS学习笔记)