ROS学习笔记(八)

来源:互联网 发布:java五子棋视频教程 编辑:程序博客网 时间:2024/05/21 06:53

ROS服务

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

ROS Services

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

rosservice - hCommands:    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 urirosservice list         输出可用服务的信息rosservice call         调用带参数的服务rosservice type         输出服务类型rosservice find         依据类型寻找服务find services by service typerosservice 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 clearstd_srvs/Empty

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

  • rosservice call
    使用方法:
    rosservice call [service] [args]
    因为服务类型是空,所以进行无参数调用:
    rosservice call clear
    正如我们所期待的,服务清除了turtlesim_node的背景上的轨迹。
    这里写图片描述

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

$ rosservice type /spawnturtlesim/Spawn$ rosservice type spawn| rossrv showfloat32 xfloat32 yfloat32 thetastring name---string name

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

name: turtle2

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

这里写图片描述

原创粉丝点击