本教程介绍了ROS 服务和参数的知识,以及命令行工具rosservice 和 rosparam的使用方法。

文章目录

  • 1 什么是ROS服务
  • 2 rosservice用法
    • 2.1 rosservice list
    • 2.2 rosservice type
    • 2.3 rosservice call
  • 3 rosparam用法
    • 3.1 rosparam list
    • 3.2 rosparam set 和 rosparam get
    • 3.3 rosparam dump 和 rosparam load

1 什么是ROS服务

service服务是节点之间的另外一种通信方式。

service服务允许一个节点发送一个请求 request 和接受一个回复 response

2 rosservice用法

rosservice命令可以在client/service之间的框架中,快速显示服务。

rosservice的用法为:

$ rosservice list         # print information about active services
$ rosservice call         # call the service with the provided args
$ rosservice type         # print service type
$ rosservice find         # find services by service type
$ rosservice uri          # print service ROSRPC uri

2.1 rosservice list

运行小海龟:

$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

输入查看rosservice list命令:

/clear                                       # 清除
/kill                                       # 终止
/reset                                      # 重置
# rosout节点提供的服务
/rosout/get_loggers
/rosout/set_logger_level
/rqt_gui_py_node_6571/get_loggers
/rqt_gui_py_node_6571/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

2.2 rosservice type

标准用法:

$ rosservice type [service]

例如:

$ rosservice type /turtlesim/get_loggers
# echo
roscpp/GetLoggers

2.3 rosservice call

标准用法:

$ rosservice call [service] [args]

例如:

$ rosservice call /clear

发现路径被清除了。

➜  ~ rosservice type /spawn  | rossrv show
# echo
float32 x
float32 y
float32 theta
string name
---
string name

spawn命令可以在特定的位置(x, y)和方位theta重生一只小海龟

➜  ~ rosservice call /spawn 2 2 0.2 "liukai_turtle"
# echo
name: "liukai_turtle"

现在看起来应该是这样子,有2只小乌龟了

3 rosparam用法

rosparam使得我们能够存储并操作ROS参数服务器Parameter Server上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。

rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:
1 是整型, 1.0 是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典。

rosparam有很多指令可以用来操作参数,如下所示:

使用方法:

rosparam set            设置参数
rosparam get            获取参数
rosparam load           从文件读取参数
rosparam dump           向文件中写入参数
rosparam delete         删除参数
rosparam list           列出参数名

3.1 rosparam list

$ rosparam list

我们可以看到turtlesim节点在参数服务器上有3个参数用于设定背景颜色:

/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_pc__46837
/rosversion
/run_id

3.2 rosparam set 和 rosparam get

标准用法:

rosparam set [param_name]
rosparam get [param_name]

例如设置背景颜色:

➜  ~ rosparam set /background_r 150
➜  ~ rosparam set /background_g 150
➜  ~ rosparam set /background_b 150
➜  ~ rosservice call /clear

# 直接获取所有参数
➜  ~ rosparam get /
# echo
background_b: 150
background_g: 150
background_r: 150
rosdistro: 'kinetic'
roslaunch:  uris: {host_pc__46837: 'http://pc:46837/'}
rosversion: '1.12.14'
run_id: 77171690-9d38-11e9-8214-40a5eff3ee5c

3.3 rosparam dump 和 rosparam load

标准用法:

rosparam dump [file_name] [namespace]
rosparam load [file_name] [namespace]

把我们刚才的这些参数保存下来:

$ rosparam dump params.yaml

清除所有参数:

# 清除所有参数:
$ rosparam delete /
# 重新运行一次服务
$ rosservice call /clear

查看保存的参数文件:

$ rosparam list
# echo
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_pc__46837
/rosversion
/run_id

再把我们刚才保存的params.yaml加载进来:

# 加载保存好的参数
$ rosparam load params.yaml
# 重新运行一次服务
$ rosservice call /clear

又回到了刚才这个背景颜色

ROS学习笔记7(理解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学习笔记02:ROS架构与基础

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

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

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

  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技术 前言 相比 ...

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

    ROS学习笔记六:理解ROS服务和参数 主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam. ROS service service是节点之间互相通信的另一种方式,se ...

最新文章

  1. 拼接图像亮度均匀调整_液晶拼接屏如何才能达到更好的显示效果
  2. goip技术原理图解_12式木人桩模块化技术定型训练 1小念头
  3. 右键菜单管理---右键管家
  4. android自定义键盘遮挡,Android软键盘遮挡的四种完美解决方案
  5. linux搜索文件中包含的字符
  6. 历届电大计算机网考试题及答案,电大2012年计算机应用基础网考统考试题及答案...
  7. 众达两化融合贯标日记06~贯标启动会PPT
  8. 20的阶乘c语言怎么编程,C语言:编写程序,求20的阶乘.
  9. 详解Java异或运算符
  10. 外贸常用术语_外贸术语大全(超详细)
  11. 前端学习总结(九)MongoDB——最出色的文档型数据库
  12. 第一课 什么是norm?(An Evolutionary Approach to Norms)
  13. latex公式斜体_latex输入斜体
  14. python冒号用法-python 列表中[ ]中冒号‘:’的作用
  15. easyExcel的复杂表头多级表头导入
  16. SAP FI 系列 (035) - 应收票据的接收和承兑方法二
  17. 你了解HTTP2协议吗?(二)
  18. 多租户积分系统功能清单
  19. Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—4)
  20. 新松机器人产业小镇_总投资18.7亿元的新松浑南智慧产业园,是我国最大的机器人产业化基地。该基地内,...

热门文章

  1. 嵌入式工作笔记0007---对讲机嵌入式开发记录---认识对讲机的功能--随时更新
  2. C语言学习笔记---001C语言的介绍,编译过程原理,工具等
  3. Android学习笔记---22_访问通信录中的联系人和添加联系人,使用事物添加联系人...
  4. X3D 参数代码(一)
  5. 图的深度优先搜索(DFS)
  6. windeployqt.exe 发布windows下qt产生的exe程序
  7. linux下的C语言开发(信号处理)
  8. html定义最小宽度,line-block的运用:最小宽度的设置
  9. aspen吸收塔气液比优化_Aspen吸收塔的设计
  10. oracle trace跟踪,浅析Oracle追踪工具SQL Trace的启用方式