ROS学习笔记六:理解ROS服务和参数

主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam。

ROS service

service是节点之间互相通信的另一种方式,services允许节点发送一个请求并接收一个回应。

使用rosservice

rosservice -h
Commands:rosservice args print service argumentsrosservice call call the service with the provided argsrosservice find find services by service typerosservice info print information about servicerosservice list list active servicesrosservice type print service typerosservice uri  print service ROSRPC uri

rosservice list

rosservice list
/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_leve

可以看出turtlesim有9个相关的服务,另外两个与rosout有关。

rosservice type

rosservice type [service]
rosservice type clear
std_srvs/Empty

clear服务类型是空值,说明在调用该服务的时候,不需要提供参数,即发送请求的时候不需要发送数据,接收回应的时候也没有接收数据。

rosservice call

rosservice call [service] [args]

运行rosservice call /clear,发现小海龟运行的轨迹就已经被清除了。
下面看一下服务spawn,是一个拥有参数的服务。

rosservice type spawn|rossrv show
float32 x
float32 y
float32 theta
string name
---
string name

这个服务允许我们在指定位置和方位的基础上生成一个小海龟,姓名选项是可选的。

roservice call spawn 2 2 0.2 ""
name: turtle2

这个服务返回了新创建的海龟的名称,如下图所示

使用rosparam

rosparam命令允许我们在ROS 参数服务器上存储和复制数据。参数服务器可以存储整数、浮点数、布尔值、字典和列表值。rosparam的用法:

rosparam set            set parameter
rosparam get            get parameter
rosparam load           load parameters from file
rosparam dump           dump parameters to file
rosparam delete         delete parameter
rosparam list           list parameter names

rosparam list

通过该命令可以看一下现在参数服务器上了有多少个参数:

rosparam list
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_ubuntu__39738
/rosversion
/run_id

rosparam set

可以通过rosparam set命令来改变其中的参数:

rosparam set [param]
rosparam get [param]

更改背景的红色通道颜色数值:

rosparam set background_r 150
rosservice call clear

则窗口背景颜色更改为如下颜色:

通过rosparam get命令我们可以查看参数服务器上的其他参数的值:

rosparam get /background_b
255

也可以利用命令rosparam get /命令来查看整个参数服务器上所有参数的值。

rosparam get /
background_b: 255
background_g: 86
background_r: 150
rosdistro: 'indigo'
roslaunch:uris: {host_ubuntu__39738: 'http://ubuntu:39738/'} rosversion: '1.11.20'
run_id: c885312c-6ab6-11e6-9697-000c29521e21

rosparam dump和rosparam load

用法

rosparam load [filename] [namespace]
rosparam dump [filename] [namespace]

这里我们将所有的参数写入param.yaml文件中(未指定命名空间namespace)

rosparam dump param.yaml

下面就可以通过该文件将参数载入一个新的命名空间,例如copy

rosparam load param.yaml copy
rosparam get /copy/background_r
rosparam list
/background_b
/background_g
/background_r
/copy/background_b
/copy/background_g
/copy/background_r
/copy/rosdistro
/copy/roslaunch/uris/host_ubuntu__39738
/copy/rosversion
/copy/run_id
/rosdistro
/roslaunch/uris/host_ubuntu__39738
/rosversion
/run_id

可以看出已经成功载入新的命名空间copy当中

rosparam get /copy/background_r
150

总结

主要分为ROS服务和参数两个部分
服务,主要命令工具是rosservice:
列出所有服务:rosservice list
查看服务类型:rosservice type [service]
调用服务:rosservice call [service] [args]

参数,主要命令工具是rosparam:
设置参数:rosparam set [param]
获得参数:rosparam get [param]
写入参数:rosparam dump [filename] [namespace]
载入参数:rosparam load [filename] [namespace]

祝枫
2016年8月25日于哈尔滨

ROS学习笔记六:理解ROS服务和参数相关推荐

  1. ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters

    ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters 上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameter ...

  2. ROS学习笔记十一:ROS中数据的记录与重放

    ROS学习笔记十一:ROS中数据的记录与重放 本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录 ...

  3. ROS学习笔记02、ROS使用C++、Python来实现HelloWorld

    文章目录 前言 一.创建工程文件目录 二.实现helloworld 2.1.创建ROS包 2.2.C++版的HelloWorld 2.3.Python版的HelloWorld 三. 借助launch文 ...

  4. ROS学习笔记26(ROS的命令行工具)

    需要说明的是:本篇博客内容来自于<ROS机器人编程 从基本概念到机器人应用程序编程实战>的第五章,本是打算参考和翻译官网相关资料,但官网资料的质量明显没有这本书描述的更为清楚,记录于此仅仅 ...

  5. ROS学习笔记一(ROS的catkin工作空间)

    在安装完成ROS indigo之后,需要查看环境变量是否设置正确,并通过创建一个简单的实例来验证ROS能否正常运行. 1 查看环境变量 在ROS的安装过程中,我们执行了如下命令:(此命令就是向当前用户 ...

  6. ROS学习笔记九:ROS工具

    ROS有各种工具可以帮助用户使用ROS.应该指出,这些GUI工具是对输入型命令工具的补充.如果包括ROS用户个人发布的工具,那么ROS工具的数量很庞大.其中,本文讨论的工具是对于ROS编程非常有用的辅 ...

  7. ROS学习笔记02:ROS架构与基础

    文章目录 一.ROS架构 二.第一个ROS例程 (一)turtlesim功能包 1.话题与服务 2.背景色参数 (二)控制乌龟运动 1.启动节点管理器 2.启动乌龟仿真器节点 3.启动键盘控制节点 三 ...

  8. ROS学习笔记2(ROS文件系统和ROS常用命令)

    文章目录 1 预备工作 2 ros包文件系统概览 3 文件系统工具 3.1 rospack 3.2 roscd 3.3 roscd log 3.4 rosls 3.5 tab代码补全 4 总结 1 预 ...

  9. ROS学习笔记(一)补充篇 参考创客制造

    我将ROS的CPP部分分成7个部分: 1.基础的node param 2.动态调节参数 3.关于TF变换 4.actionlib 5.插件技术 6.movebase 7.nodelet技术 前言 相比 ...

最新文章

  1. linux如何运行windows游戏,可运行在Linux下最好Windows软件和游戏
  2. Ueditor配置及在项目中的使用
  3. Linux C定时器使用指南
  4. JavaWeb:用JDBC操作数据库
  5. python遍历字典的四种方法
  6. 一位小小码蚁工作2年多感想
  7. QT实现3D多个视口渲染场景。
  8. 【转】浮点数之间的比较
  9. 【Vegas原创】分别用Toad、EM解表锁
  10. spring编程式事务
  11. 解决浏览器无法登陆pki问题,删除浏览器缓存
  12. 谷歌与军方合作新料:决定AI不用于武器前,还想帮军方搜集情报
  13. 视频信息查看,帧信息查看
  14. ---调试-用try-catch语句检查错误
  15. vsftpd不支持目录软链接的解决办法
  16. 有了证件照大师 轻松在ps中做证件照
  17. Windows的文件目录管理策略
  18. 最强大脑记忆曲线(2)——创建数据库
  19. CX水晶易表连接数据库的方法
  20. 穷人python入门教程视频_穷的解释|穷的意思|汉典“穷”字的基本解释

热门文章

  1. 数据结构-----链表的实现
  2. 主定理(Master Theorem)与时间复杂度
  3. 跨云应用部署:在云存储服务之间复制文件
  4. datagrid嵌套和资源消耗
  5. 《恋上数据结构第1季》二叉堆实现优先级队列
  6. Windows没有关机按钮 如何使用命令行关机 重启
  7. 如何把报表放到网页中显示(Web页面与报表简单集成例子)
  8. docker入门(基于虚拟化技术)
  9. eureka服务注册中心集群模式创建
  10. 计算机专项能力局域网管理,全国计算机信息技术考试局域网管理(Windows NT平台)管理员级考试考试大纲...