七、理解ROS服务和参数
1.ROS Services
服务时节点之间通讯的另一种方式。服务允许节点发送请求并获得一个响应。
2.使用rosservice
rosservice可以使用ROS客户端/服务器框架提供的服务。
使用方法:
rosservice list 输出可用服务的信息
rosservice call 调用带参数的服务
rosservice type 输出服务类型
rosservice find 依据类型寻找服务find services by service type
rosservice uri 输出服务的ROSRPC uri
(1)rosservice list
显示turtlesim节点提供了9个服务:重置(reset), 清除(clear), 再生(spawn), 终止(kill), turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, and turtlesim/set_logger_level. 同时还有另外两个rosout节点提供的服务: /rosout/get_loggers and /rosout/set_logger_level。
同时还有另外两个rosout节点提供的服务: /rosout/get_loggers and /rosout/set_logger_level。
(2)rosservice type
使用方法:rosservice type [service]
查看clear服务的类型:
rosservice type clear
std_srvs/Empty
这表明在调用这个服务是不需要参数(比如,请求不需要发送数据,响应也没有数据)
(3)rosservice call
使用方法:rosservice call [service] [args]
因为clear的服务类型是空,所以进行无参调用:
rosservice call clear
服务清除了turtlesim_node的背景上的轨迹。
rosservice call spawn 2 2 0.2 ""//产生一个新乌龟
3.Using rosparam
rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。
rosparam set 设置参数
rosparam get 获取参数
rosparam load 从文件读取参数
rosparam dump 向文件中写入参数
rosparam delete 删除参数
rosparam list 列出参数名
(1)rosparam list
/background_b
/background_g
/background_r
/roslaunch/uris/aqy:51932
/run_id
(2)rosparam set and rosparam get
rosparam set background_r 150//修改背景颜色的红色通道
rosservice call clear//上述指令修改了参数的值,现在我们调用清除服务使得修改后的参数生效
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
(3)rosparam dump and rosparam load
rosparam dump params.yaml //将所有的参数写入params.yaml文件
rosparam load params.yaml copy//将yaml文件重载入新的命名空间,比如说copy空间
rosparam get copy/background_b
255