[跟我学ROS]7.熟悉ROS系统中的服务和参数
来源:互联网 发布:冠军对决 知乎 编辑:程序博客网 时间:2024/06/06 10:10
文章转载自:http://www.robotos.net/thread-16-1-1.html
描述:这篇教程借助于rosservice和rosparam命令工具介绍ROS系统中的服务及参数。
假设你上一个教程中练习的turtlesim_node还在运行,我们看一下turtlesim节点都提供有哪些服务。
1. ROS服务
服务是节点之间通信的另一种方式,通过服务节点可以发送请求并接收反馈;
2. rosservice的用法
rosservice可以很容易的依附到ROS客户端/服务端的框架中,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
$ rosservice list
这个list指令展示出turtlesim节点提供9个服务:reset, clear, spawn, kill,turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, 和turtlesim/set_logger_level.还有两个与rosout节点相关的服务:/rosout/get_loggers and /rosout/set_logger_level.
• /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
我们用rosservice type查看一下clear这个服务:
2.2 rosservice type
用法:
rosservice type [service]
我们查明clear服务是什么类型的:
$ rosservice type clear
• std_srvs/Empty
这个服务是空的,意味着调用这个服务时不用任何参数(亦即,发送请求或接收反馈时不用借助于任何参数),我们用rosservice call来调用这个服务:
2.3 rosservice call
用法:
rosservice call [service] [args]
这里我们调用时没带任何参数,因为这个服务为空类型的:
$ rosservice call clear
正如我们所料,它清空了turtlesim_node节点的背景。
•
我们查看一下带参数的服务spawn:
$ rosservice type spawn| rossrv show
• float32 x
• float32 y
• float32 theta
• string name
• ---
• string name
这个服务让我们在指定的位置生成一个新的海龟。name区域是可选的(可以不设置),我们不用指定名字产生一个海龟;
$ rosservice call spawn 2 2 0.2 ""
这个调用会返回新产生的海龟的名字:
• name: turtle2
执行结果会如下图所示:
•
3. rosparam的用法
rosparam 允许我们操作并保存ROS系统中参数服务中的数据。参数服务可以存储integer,float,boolean,dictionaries及lists。rosparam采用YAML标记语言,简单的讲,YAML看起来非常自然:1 is an integer, 1.0 is a float, one is a string, true is a boolean, [1, 2, 3] is a list of integers, and {a: b, c: d} is a dictionary. 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
我们查看一下当前参数服务中都有什么参数:
3.1 rosparam list
$ rosparam list
我们看到turtlesim节点有三个有关背景色的参数保存在参数服务中:
• /background_b
• /background_g
• /background_r
• /roslaunch/uris/aqy:51932
• /run_id
我们用rosparam set改变其中一个参数:
3.2 rosparam set and rosparam get
用法:
rosparam set [param_name]
rosparam get [param_name]
这里我们改变背景色的红色部分:
$ rosparam set background_r 150
上述命令改变了参数的值,我们必须调用clear服务才能使改变的参数生效:
$ rosservice call clear
执行结果如下所示:
•
我们查看参数服务中的其它参数值,看一下背景色中的绿色部分数值:
$ rosparam get background_g
• 86
我们也可以通过rosparam get/ 命令获取参数服务中所有参数的数值:
$ rosparam get /
• background_b: 255
• background_g: 86
• background_r: 150
• roslaunch:
• uris: {'aqy:51932': 'http://aqy:51932/'}
• run_id: e07ea71e-98df-11de-8875-001b21201aa8
你也许想把参数保存到文件中,以便下一次可以调用。采用rosparam命令是非常方便的:
3.3 rosparam dump and rosparam load
用法:
rosparam dump [file_name]
rosparam load [file_name] [namespace]
我们保存所有参数到一个名字为params.yaml的文件中:
$ rosparam dump params.yaml
你可以加载这些yaml文件到新的命名空间,比如copy:
$ rosparam load params.yaml copy$ rosparam get copy/background_b
• 255
英文文档:http://www.ros.org/wiki/ROS/Tutorials/UnderstandingServicesParams
注:欢迎你转载本篇文章,时飞提醒你转载时请注明出处!
- [跟我学ROS]7.熟悉ROS系统中的服务和参数
- [跟我学ROS]5.熟悉ROS系统中的节点
- [跟我学ROS]6.熟悉ROS系统中的话题
- 跟我学ROS
- [跟我学ROS]1.ROS系统介绍及安装
- [跟我学ROS]3.创建ROS系统中的catkin功能包
- [跟我学ROS]4.编译ROS系统中的功能包
- ROS)服务和参数
- ROS服务和参数
- [跟我学ROS]8.rqt_console和roslaunch的用法
- [跟我学ROS]2.ROS系统中文件系统及命令工具介绍
- ROS Learning-009 beginner_Tutorials ROS服务 和 ROS参数
- rosparam和ROS参数服务
- ROS学习--(七)理解ROS服务和参数
- 第八节---ROS操作系统----ROS服务和参数
- ROS学习笔记六:理解ROS服务和参数
- ROS入门_1.10 理解ROS服务和参数
- ROS总结——ROS服务和参数
- PhoneGap Android 环境配置
- hdu 4504 威威猫系列故事——篮球梦(组合中dp的应用)
- 透明度设置
- 百度地图之周边兴趣点搜索
- Hadoop的Configuration类冲突问题
- [跟我学ROS]7.熟悉ROS系统中的服务和参数
- “中文问题没商量”之Dom4j处理中文编码问题
- 获取屏幕的宽高
- makefile中的变量
- 安装配置WinDbg
- dom4j 输出UTF-8 XML时中文乱码
- Hurry Up(三分)
- OpenCV学习笔记(三)——Mat,图像的新容器
- hdu 4278 Faulty Odometer