机器人操作系统(ROS)教程11:ROS的服务-Arduino中文社区 - Powered by Discuz! Archiver

对折之内 发表于 2015-2-14 17:22

机器人操作系统(ROS)教程11:ROS的服务

服务是节点之间通信的另一种方式,服务允许节点发起一个请求和接收一个响应。
   打开一个终端在里面输入:roscore运行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 如:rosservice type clear返回的结果为:std_srvs/Empty
返回的结果是empty,这就说明当调用这个服务时,传递的参数为空,即没有参数。
还可以使用rosservice call来调用一个服务,它的使用方法如下:rosservice call 例如:rosservice call clear则调用了clear命令,把乌龟运动痕迹都清理掉了。clear服务是不带参数的服务。接着再来演示一个带参数的服务spawn,我们首先查看一下它的类型,运行命令:rosservice type spawn| rossrv show返回结果如下:float32 x
float32 y
float32 theta
string name
---
string namespawn命令允许我们根据给定的坐标和角度产生另一个乌龟,并且可以给这个新产生的乌龟起一个名字,也可以不起名字。如:rosservice call spawn 2 2 0.2 ""在这条命令执行完成后,就会出现另一只乌龟。   ROS中的服务是基于请求和响机制的,在上面的例子中,我们通过终端发送请求,节点接收后,就会做出响应。






turbosa 发表于 2015-11-20 09:32

:lol:lol:lol:lol
页: [1]
查看完整版本: 机器人操作系统(ROS)教程11:ROS的服务