ROS服务的理解

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

打开终端在里面输入:

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 2 2 0.2 ""

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

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

时间: 2024-10-13 22:03:10

ROS服务的理解的相关文章

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

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人"miiboo"中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用.本章节主要内容: 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器和订阅器 6.编写简单的s

ROS服务和客户端

TargetTabletopSrv.srv string Object string TargetTabletop --- bool FeedBackFlag FeedBackFlag.msg bool FeedBackFlag TargetTabletop.msg string Object string TargetTabletop 创建msg 和srv -------------------------------------------------- grasp_object_table

微服务初步理解

本文参考书籍 https://github.com/oopsguy/microservices-from-design-to-deployment-chinese 微服务简介 单体应用 在项目开发启动阶段,比如开发一个电商系统,该系统包括了订单模块.商品搜索模块.用户模块和后台等系统,启动阶段虽然按照业务逻辑分模块开发,但是最终成功上线运行的是一个单体应用,在项目开发的初期,单应用的架构有助于快速更改业务流程,快速迭代,当项目发展到一定时期后,一个庞大.复杂的单体,对于新的功能的开发可能就是陷入

微服务架构理解[架构图]

微服务架构 概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议. 定义:围绕业务领域组件来创建应用,这些应用可独立地进行开发.管理和迭代.在分散的组件中使用云架构和平台式部署.管理和服务功能,使产品交付变得更加简单. 本质:用一些功能比较明确.业务比较精练的服务去解决更大.更实际的问题. 基于微服务架构的设计: 目的:有效的拆分应用,实现敏捷开发和部署 微服务的具体特征 官方的定义: 1.一些列的独立的服务共同组成

$q -- AngularJS中的服务(理解)

描述 译者注: 看到了一篇非常好的文章,如果你有兴趣,可以查看: Promises与Javascript异步编程 , 里面对Promises规范和使用情景,好处讲的非常好透彻,个人觉得简单易懂. 既然是用来处理异步编程的,那么在浏览器端的JS里,主要是2种: setTimeout 和 Ajax 请求.  promise 的使用就很像Ajax请求的成功和失败回调. 此承诺/延迟(promise/deferred)实现的灵感来自于  Kris Kowal's Q CommonJS Promise建议

ros wiki翻译之创建消息和服务

描述:本教程介绍如何创建和构建msg和srv文件以及rosmsg,rossrv和roscp命令行工具. 1 msg和srv简介 msg:msg文件是描述ROS消息字段的简单文本文件.它们用于为不同语言(c++或者python等)的消息生成源代码. srv:srv文件用来描述服务.它由两部分组成:请求(request)和响应(response). msg文件存储在包的msg目录中,而srv文件存储在srv目录中. msg只是简单的文本文件,每行有一个字段类型和字段名称.您可以使用的字段类型有(如同

由浅到深理解ROS(2)

ROS文件系统 用户可以直接参看官网:http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem ROS文件系统中的两个最基本的概念:Package和Manifest,即包和清单文件. (1)Package是组织ROS代码的最基本单位,每一个Package都可以包括库文件,可执行文件,脚本及其它的一些文件. (2)Manifest文件是对Package的相关信息的一个描述.他提供了Package之间的依赖性,以及一个包的元信息,比如版本.维

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 提供ROS接口的3D软件比较多,本章以最典型的Gazebo介绍为主,从Player/Stage/Gazebo发展而来,现在独立的机器人仿真开发环境,目前2016年最新版本Gazebo7.1配合ROS(kinetic)使用. 补充内容:http://blo

ros学习摘要

参考:http://wiki.ros.org/cn/ROS/Tutorials 1.安装并配置ROS环境 1.1 安装ROS  :apt安装无权限 1.2管理环境 : ROS是依赖组合空间的概念,配置脚本环境. 安装ROS期间,你会看到提示说需要 source 多个setup.*sh文件中的某一个,或者甚至提示添加这条'source'命令到你的启动脚本里面. 检查配置的环境变量: export | grep ROS $ source /opt/ros/hydro/setup.bash 事先在.b