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

打开终端在里面输入:

roscore

查看当前的运行节点:

rosnode list

返回结果:

/rosout

查看当前的运行服务:

rosservice list

返回结果:

/rosout/get_loggers
/rosout/set_logger_level

可以看到当前只有一个运行节点,有两个运行服务.


现在运行小乌龟的节点

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

rosrun turtlesim turtlesim_node

把上面的过程走一遍,查看当前的运行节点和服务,返回结果:

/rosout
/turtlesim //这个名字可以修改
/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

这里面的除了原来的那两个,都是小乌龟开启的服务.

使用rosservice type可以查看提供的服务的类型,它的使用方法如下:

rosservice type [service]

实例:

rosservice type clear

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

std_srvs/Empty

返回的结果是empty,这就说明当调用这个服务时,传递的参数为空,也就是说在request和response中都没有参数的传递。


可以使用rosservice call调用服务:

rosservice call [service] [args]

实例:

$ rosservice call /clear

这里我们调用的时候没有任何的参数,因为/clear是empty类型的。它的效果就是清除乌龟的运行轨迹。


下面来看一个有参数的服务:

rosservice type spawn

返回结果:

turtlesim/Spawn

查看这个服务类型的具体细节:

rossrv show turtlesim/Spawn

返回:

float32 x
float32 y
float32 theta
string name
---
string name

或者这两条指令合成一个更加简洁:

rosservice type /spawn | rossrv show

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

rosservice call spawn   0.2 ""

在这条命令执行完成后,就会出现另一只乌龟(这时并没有重新启动一个node)。

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

ROS服务的理解的更多相关文章

  1. 理解ros服务和参数 ---- 7

    原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/  周学伟 Description: 本教程介绍了ROS 服务和参数的知识,以及命令行工具rosservi ...

  2. ROS学习(八)—— 理解ROS服务和参数

    一.ROS 服务 服务(services)是节点之间通讯的另一种方式.服务允许节点发送请求(request) 并获得一个响应(response) 二.rosservice 1.用途 rosservic ...

  3. ROS Learning-009 beginner_Tutorials ROS服务 和 ROS参数

    ROS Indigo beginner_Tutorials-08 ROS服务 和 ROS参数 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14 ...

  4. (十)创建ROS消息和ROS服务

    ROS总教程(中文版) 110.创建ROS消息和ROS服务

  5. ROS Learning-013 beginner_Tutorials (编程) 编写ROS服务版的Hello World程序(Python版)

    ROS Indigo beginner_Tutorials-12 编写ROS服务版的Hello World程序(Python版) 我使用的虚拟机软件:VMware Workstation 11 使用的 ...

  6. ROS Learning-012 beginner_Tutorials (编程) 创建自定义的ROS消息和ROS服务

    ROS Indigo beginner_Tutorials-11 创建自定义的ROS消息和ROS服务 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubunt ...

  7. SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  8. 面向服务的体系结构(SOA)——(4)对于服务的理解

    在接触SOA之前对"服务"这个词没有太多的感触,无非就是为别人做事情么.当然在SOA中这个词也脱离不了这层基本的涵义,但是具体到实际的架构中对这个词的理解就更加深刻了.本文就以&q ...

  9. SLAM+语音机器人DIY系列:(二)ROS入门——7.理解tf的原理

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

随机推荐

  1. Jquery弹窗插件Lhgdialog的用法

    Lhgdialog的用法 大家都知道用js可以实现,但是在使用js实现的弹窗时得考虑很东西:浏览器的兼容.页面的交互等等问题. 在这里简单介绍一下lhgdialog的用法. 参数有: Title:弹窗 ...

  2. 网站制作---eWebeditor不兼容IE8问题的解决方法

    qq交流群:创梦技术交流群:251572072                         创梦网络赚钱群:248318056                         创梦娱乐休闲群:22 ...

  3. iOS开发中视图相关的小笔记:push、modal、popover、replace、custom

    在storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,segue的类型是不同的. 在iphone中,segue有:push,modal,和custom三种不同的类型, ...

  4. 修改AspNetSqlMembershipProvider的密码规则

    在AspNetSqlMembershipProvider中,默认的密码规则为长度大于等于7,并且包含1个除字母和数字外的特殊字符,这项规则主要由minRequiredPasswordLength和mi ...

  5. 第二章SignalR所支持的平台

    第二章SignalR所支持的平台 SignalR支持各种服务器和客户端的配置.此外,每种传输方式都有自身的配置要求和限制:如果某种传输方式不被系统支持,SignalR优雅地将故障转移到其他类型的传输方 ...

  6. JavaWeb Filter--过滤器 简介

    本文转载自:http://blog.csdn.net/wanghuan203/article/details/7325651 过滤器就是在源数据和目的数据之间起过滤作用的中间件. Web应用中,在处理 ...

  7. OC中对象元素的引用计数 自动释放池的相关概念

    OC中数组对象在是如何处理对象元素的引用计数问题的,同时介绍一下自动释放池的相关概念 一.数组对象是如何处理对象元素的引用计数问题[objc]  view plaincopy 1. //   2. / ...

  8. Spring AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)

    1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等.一下让你不知所措,心想着:管不得很多人都和我说AOP多难多难.当我看进去以后, ...

  9. 学习dijk最短路径中

    #include<iostream> #include<math.h> #include<stdio.h> #include<algorithm> #i ...

  10. OpenCV学习(1)OpenCV简介

    简介 OpenCV的全称是:Open Source Computer Vision Library,OpenCV是一个开源的跨平台的计算机视觉库,可以运行在Linux.Windows和Mac OS操作 ...