[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