初探ros(六)---服务与参数
ROS服务
服务是节点之间可以相互通信的另一种方式。服务允许节点发送请求并接收响应。
rosservice可以通过服务轻松附加到ROS的客户端/服务框架。 rosservice有许多可用于服务的命令,如下所示:
rosservice list 打印信息活动服务
rosservice call 使用所提供的参数调用服务
rosservice type 显示服务的类型
rosservice find 通过服务类型查找服务
rosservice uri 显示服务的ROSRPC uri
rosservice list
rosservice list
输出:
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level
list命令向我们显示,turtlesim节点提供了九种服务:重置,清除,生成,杀死,turtle1 / set_pen,/ turtle1 / teleport_absolute,/ turtle1 / teleport_relative,turtlesim / get_loggers和turtlesim / set_logger_level。还有两个与单独的rosout节点相关的服务:/ rosout / get_loggers和/ rosout / set_logger_level。
rosservice type
* 试着查看一下/clear服务
rosservice type /clear
输出:
std_srvs/Empty
该服务为空,这意味着在进行服务调用时,它不接受任何参数(即,在发出请求时不发送数据,而在接收响应时不接收数据)。让我们使用rosservice调用此服务:
rosservice call
试着调用一下/clear服务(在开始命令之前,可以先让小乌龟跑一下,效果会比较明显)
rosservice call /clear
它清除了turtlesim_node的背景
试着调用一下/spawn服务
首先查看/spawn服务的数据类型
rosservice type /spawn | rossrv show
输出:
float32 x
float32 y
float32 theta
string name
---
string name
该服务使我们可以在给定的位置和方向上生成新的海龟。名称字段是可选的,所以我们不要给新乌龟起一个名字,而让turtlesim为我们创建一个。
rosservice call /spawn 2 2 0.2 ""

ROS参数
rosparam允许您在ROS参数服务器上存储和处理数据。参数服务器可以存储整数,浮点数,布尔值,字典和列表。 rosparam使用YAML语法。在简单的情况下,YAML看起来很自然:1是整数,1.0是浮点数,一个是字符串,true是布尔值,[1、2、3]是整数列表,并且{a:b,c: d}是字典。 rosparam有许多可用于参数的命令,如下所示:
rosparam set 设定参数
rosparam get 获取参数
rosparam load 从文件加载参数
rosparam dump 将参数转储到文件
rosparam delete 删除参数
rosparam list 列出参数名称
rosparam list
* 查看当前具有的参数
rosparam list
输出:
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_57aea0986fef__34309
/rosversion
/run_id
rosparam set 和 rosparam get
改变/turtlesim_node的背景颜色
rosparam set /background_r 150 改变背景的红色通道
rosservice call /clear 刷新背景颜色

现在,让我们看一下参数服务器上其他参数的值。让我们获取刚刚修改的红色背景通道的值:
rosparam get /turtlesim/background_r
输出:
150
我们还可以使用rosparam get /向我们展示整个Parameter 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
rosparam dump 和 rosparam load
在这里,我们将所有参数写入文件params.yaml
rosparam dump params.yaml
您甚至可以将这些yaml文件加载到新的名称空间中,例如hello:
rosparam load params.yaml hello
rosparam get /hello/background_b
输出:
255
