ROS的学习(八)ROS的服务

来源:互联网 发布:高校网络教育统考 编辑:程序博客网 时间:2024/06/13 09:00

     服务是节点之间通信的另一种方式,服务允许节点发起一个请求和接收一个响应。

     打开终端在里面输入:

roscore

     另外打开一个终端在里面输入:
rosrun turtlesim turtlesim_node

     使用rosservice list可以查看一个节点提供的服务:
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可以查看提供的服务的类型,它的使用方法如下:
rosservice type [service]

实例:
rosservice type clear

查看clear服务的类型,返回结果为:
std_srvs/Empty

返回的结果是empty,这就说明当调用这个服务时,传递的参数为空,即没有参数。


     我们可以使用rosservice call来调用一个服务,它的使用方法如下:

rosservice call [service] [args]

例如:

rosservice call clear

 这条命令乌龟运动痕迹都清理掉了。

     下面将演示一个带参数的服务spawn,我们首先查看一下它的类型:

rosservice type spawn| rossrv show

返回的结果如下:
float32 xfloat32 yfloat32 thetastring name---string name

spawn命令允许我们根据给定的坐标和角度产生另一个乌龟,并且可以给这个新产生的乌龟起一个名字,也可以不起名字。如:
rosservice call spawn 2 2 0.2 ""

在这条命令执行完成后,就会出现另一只乌龟。

     ROS中的服务是基于请求和响机制的,在上面的例子中,我们通过终端发送请求,节点接收后,做出响应。