ROS学习(八)—— 理解ROS服务和参数

一、ROS 服务

  服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request 并获得一个响应(response

 

二、rosservice

1、用途

  rosservice可以很轻松的使用 ROS 客户端/服务器框架提供的服务。

 

2、语法:

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

 

 

3、rosservice list

rosservice list

 

 

4、rosservice type

(1)语法:

rosservice type [service]

 

 

(2)demo

rosservice type /clear

 

   返回std_srvs/Empty

 

5、rosservice call

(1)语法:

rosservice call [service] [args]

 

 

(2)demo:

rosservice call /clear

 

  正如我们所期待的,服务清除了turtlesim_node的背景上的轨迹。

 

(3)demo2:

rosservice type /spawn| rossrv show

 

  返回:

float32 x
float32 y
float32 theta
string name
---
string name

   然后我们再创建一个乌龟,命令为:

rosservice call /spawn 2 2 0.2 ""

 

  返回给我们新的乌龟的名字:

name: turtle2

 

三、rosparam

  rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1 是整型, 1.0 是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典. rosparam有很多指令可以用来操作参数,如下所示:

 

1、用法:

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

 

 

2、rosparam list

rosparam list

 

     我们可以看到服务器参数上的参数:

/background_b
/background_g
/background_r
/roslaunch/uris/aqy:51932
/run_id

 

3、使用rosparam set和rosparam get

(1)语法:

rosparam set [param_name]
rosparam get [param_name]

 

 

 

(2)demo:改变背景颜色

rosparam set /background_r 150
rosservice call /clear

 

 

(3)得到全部参数

rosparam get /

 

 

4、参数保存和载入

(1)语法:

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

 

 

(2)demo:

  保存:

rosparam dump params.yaml

 

  载入:可以载入到另一个名字空间(好像可以随便取,即可生成新的名字空间)

rosparam load params.yaml copy
rosparam get /copy/background_b

 

posted @ 2017-01-12 11:13  Blue Mountain  阅读(7669)  评论(0编辑  收藏  举报