[ROS-Beginner]7.理解ROS的Services和Parameters

1. 保持上一次练习的turtlesim_node继续运行。

2. ROS Services是节点通信的另外一种方式,允许节点send a request,receive a response。

3. 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

3.1  rosservice list命令提供了9种services以及2种相关的

$ rosservice list
得到:
/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

3.2 rosservice type

查看service的类型,如查看clear类型

$ rosservice type /clear

返回

std_srvs/Empty

说明类型为empty,即call这个service时,不take任何arguments

 

3.3 rosservice call

用法:

rosservice call [service] [args]

比如:

$ rosservice call /clear

这条命令清理了turtlesim_node的背景

service spawn:

$ rosservice type /spawn | rossrv show

得到:

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

执行:

$ rosservice call /spawn 2 2 0.2 ""

得到:

name: turtle2

 

4. 使用rosparam

rosparam用来存储和操作ROS Parameter Server, Parameter Server 可以存储integers, floats, boolean, dictionaries 和 lists.

rosparam使用YAML标记语言: 1 integer, 1.0 float, one string, true boolean, [1, 2, 3] list of integer, {a: b, c: d} dictionary

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

 4.1 rosparam list

运行:

$ rosparam list

得到:

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

4.2 rosparam set和rosparam get

使用方法:

rosparam set [param_name]
rosparam get [param_name]

改变背景颜色r值参数:

$ rosparam set /background_r 150

接着call clear service使改变生效:

$ rosservice call /clear

如果要得到param sever上的某个参数值:

$ rosparam get /background_g 

得到:

86

如果要得到param server上的全部参数值:

$ 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

 

4.3 rosparam dump 和 rosparam load

用法:

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

举例:将所有参数写到params.yaml里

$ rosparam dump params.yaml

也可以将yaml文件载入到新的namespaces里

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

得到:

255

 

posted @ 2017-12-09 00:14  jjxforever  阅读(421)  评论(0编辑  收藏  举报