描述:这篇教程借助于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': '//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
2015职称计算机考试书PowerPoint2007中 .. 定价:¥45 优惠价:¥42 更多书籍 | |
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 |