ROS Learning-009 beginner_Tutorials ROS服务 和 ROS参数
ROS Indigo beginner_Tutorials-08 ROS服务 和 ROS参数
我使用的虚拟机软件:VMware Workstation 11
使用的Ubuntu系统:Ubuntu 14.04.4 LTS
ROS 版本:ROS Indigo
1. 理解 ROS 服务 和 ROS 参数:
服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response)
( 节点之间通讯的方式 : 话题(rostopic) 和 服务(rosservice) )
我们先来启动一个小海龟节点: ( 开3个终端,分别运行下面三个命令 )
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key
2. rosservice : ROS 服务命令
2.1 list :
我们使用下面的命令来看一下当前有哪些服务在运行: (重新开一个终端(Ctrl+Alt+T))
$ 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
如果你没事先执行
roscore命令来启动/rosout主节点,那么当你执行rosservice list命令,会输出下面的提示信息:ERROR: Unable to communicate with master!你需要先执行
roscore命令。
2.2 type :
很多服务在运行:我们来看看 /clear 这个服务的类型:
$ rosservice type /clear
输出:
std_srvs/Empty
服务的类型为空(std_srvs/Empty)。这个std_srvs/Empty是ROS系统自定义的一个变量类型或者说是一个结构体。我们如何查看这个std_srvs/Empty内究竟是什么:
$ rosmsg show std_msgs/Empty
std_srvs/Empty 这个变量类型里面什么都没有,表示你在调用 /clear 服务时,不需要参数。 什么意思呢,下面举个例子:
2.3 call :
第一个例子: 清空小海龟窗口背景里的运行轨迹:
我们使用rosservice call 命令来调用服务:
$ rosservice call [服务名] [需要的参数]
我们来调用上面的/clear这个服务:(因为 /clear 这个服务的类型是 std_srvs/Empty (空),所以对于 /clear 这个服务,不需要参数)
$ rosservice call /clear
调用之后,回去看一看小海龟窗口的背景里的运行轨迹都没有了。 (如果你之前使用方向键让小海龟移动过。)
再来一个例子:再生一个小海龟
我们来看看再生(/spawn)这个服务:
先看看调用这个服务需要什么参数:。执行下面的组合命令:
$ rosservice type /spawn | rossrv show
输出:
float32 x
float32 y
float32 theta
string name
---
string name
现在知道调用 /spawn 服务需要什么参数,我们就来再产生一个小海龟: (如果你将 nane 设为""(空),那么系统会自动生成一个新名字)
$ rosservice call /spawn 2 2 0.2 ""
这时,服务返回了新产生的乌龟的名字(“turtle2”)。 新产生的乌龟,如下图:
3. rosparam : ROS 参数命令 :
下面再介绍一个命令:rosparam 参数服务器
使用方法和上面的命令(rosservice)都类似:
3.1 list :
先来看一下,当前 ROS 里面有哪些参数 :
$ rosparam list
3.2 set,get :
3.2.1 set:
$ rosparam set [参数名]
$ rosparam get [参数名]
如何使用,举例说明:
比如现在我改变小海龟窗口背景的颜色:
$ rosparam set /background_r 150
现在还是小海龟窗口的背景颜色不会改变的, 你必须要先 clear 一下:
$ rosservice call /clear
3.2.2 get:
我们使用get关键字 来得到当前参数的信息:
$ rosparam get /background_r
得到全部参数的信息:
$ rosparam get /
小结:
因为一个ROS机器人的启动,等同于要启动多个节点程序。也就是说,我们每次想使用键盘的方向键控制小海龟时,我们必须在3个终端中启动3个节点:
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key
这样做很麻烦,我们可不可以写一个脚本程序,将我们要运行的命令都写在一个启动脚本程序中,这样,每当我们想启动一个机器人的时候,就不需要记住一堆启动节点的命令,我们直接运行这个启动脚本程序,就可以了。所以我们下一节讲: 如何编写一个简单的启动脚本程序。
ROS Learning-009 beginner_Tutorials ROS服务 和 ROS参数的更多相关文章
- Learning Roadmap of Robotic Operating System (ROS)
ROS Wiki: http://wiki.ros.org/ Robots Using ROS Textbooks: A Gentle Introduction to ROS Learning ROS ...
- ROS学习笔记7-理解服务(services)和参数(parameter)
本文内容来自官方wiki:http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams ROS服务(service)服务也是ROS中一种通 ...
- Learning ROS: Getting started with roswtf (检查ROS系统,找出问题)
本文主要部分来源于ROS官网的Tutorials. roswtf是ROS的检查工具,用于检查ROS安装和运行系统. Checking your installation&Offline mak ...
- ROS笔记1 安装及创建一个ROS Package
安装 跟着官方的安装指引来就行了.安装前要先确定自己的ros版本和ubuntu版本.这二者是一一对应的. http://wiki.ros.org/ROS/Installation 主要是package ...
- ROS入门笔记(二):ROS安装与环境配置及卸载(重点)
ROS入门笔记(二):ROS安装与环境配置及卸载(重点) [TOC] 1 ROS安装步骤 1.1 ROS版本 ROS目前只支持在Linux系统上安装部署, 它的首选开发平台是Ubuntu. 发布时间 ...
- ROS与深度相机入门教程-在ROS使用kinect v1摄像头
ROS与深度相机入门教程-在ROS使用kinect v1摄像头 说明: 介绍在ros安装和使用kinect v1摄像头 介绍freenect包 安装驱动 deb安装 $ sudo apt-get in ...
- 5、SAMBA服务一:参数详解
①:SAMBA服务一:参数详解 ②:SAMBA服务二:配置实例 一.SAMBA简介 samba指SMB(Server Message Block,服务器信息块)协议在网络上的计算机之间远程共享Linu ...
- 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
ksoap2-android-3.0.0-jar 第三方库来调用.net 写的Web Service 如果没有参数,那么调用一切顺利,但是如果服务是带参数的,那么服务端接收的参数都是nul. ...
- ROS Learning-004 beginner_Tutorials 介绍简单的ROS命令
ROS Indigo beginner_Tutorials-03 介绍简单的ROS命令 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04 ...
随机推荐
- 如何使用App.config文件,读取字符串?
如何使用App.config文件,读取字符串? .在项目里添加App.config文件,内容如下: <?xml version="1.0" encoding="ut ...
- C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)
最近学习过程中,想到提取系统硬件信息做一些验证,故而对网上提到的利用.NET System.Management类获取硬件信息做了进一步的学习.验证.验证是分别在4台电脑,XP SP3系统中进行,特将 ...
- HADOOP与HDFS数据压缩格式
1.cloudera 数据压缩的一般准则 一般准则 是否压缩数据以及使用何种压缩格式对性能具有重要的影响.在数据压缩上,需要考虑的最重要的两个方面是 MapReduce 作业和存储在 HBase 中的 ...
- faker模块基本用法
引言: 自动化脚本编写时,一般会遇到需要构造数据的情况,比如注册时的基本信息:每次执行脚本都要重新构造数据显然是很费时费力的事情,所以可以用到faker模块来构造:方便快捷,神器也: 一.安装 pip ...
- 知识picture
- 国内各类“壳子”浏览器,userAgent 一览
[测试环境]:测试日期:2014-6-20 我本机的chrome是36.0的,IE是10.0的.下列各浏览器大多数都是最新版,少数是半年以内的版本. 内核 chrome 版本 36.0 userAge ...
- eclipse怎么导入maven项目 eclipse导入maven项目详细教程
转自:http://www.pc6.com/infoview/Article_114542.html Eclipse怎么导入maven项目一直是困扰着大量程序猿和刚上手小白们的问题,使用eclipse ...
- django 使用 可视化包-Pyechart
Echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化.pyecharts 是一个用于生成 Echarts 图表的类库.实际上就是 Echarts 与 Python 的对接. 本次使 ...
- 两个关于URL解析的例子
例一: /* 解析URL查寻串中的name=value参数对 将name=value对存储在对象属性中,并返回对象 alert(getQuery().name) */ function getQuer ...
- Packed with amazing data about the world in 201
Only those who have the patience to do simple things,perfectly ever acquire the skill to do difficul ...