写个学习笔记方便自己以后看和更新
服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response)
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.
/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我们使用rosservice type命令更进一步查看clear服务:
用法
rosservice type [service]我们来看看clear服务的类型:
rosservice type clear服务的类型为空(empty),这表明在调用这个服务是不需要参数(比如,请求不需要发送数据,响应也没有数据)。下面我们使用rosservice call命令调用服务:
使用方法:
rosservice call [service] [args]因为服务类型是空,所以进行无参数调用:
rosservice call clear正如我们所期待的,服务清除了turtlesim_node的背景上的轨迹。
rosservice type spawn| rossrv show这个服务使得我们可以在给定的位置和角度生成一只新的乌龟。名字参数是可选的,这里我们不设具体的名字,让turtlesim自动创建一个。
rosservice call spawn 7 9 0.3 "hahaha"服务返回了新产生的乌龟的名字: 现在我们的乌龟看起来应该是像这样的:
rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1 是整型, 1.0 是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典. rosparam有很多指令可以用来操作参数,如下所示:
rosparam set 设置参数 rosparam get 获取参数 rosparam load 从文件读取参数 rosparam dump 向文件中写入参数 rosparam delete 删除参数 rosparam list 列出参数名我们来看看现在参数服务器上都有哪些参数:
rosparam list我们可以看到turtlesim节点在参数服务器上有3个参数用于设定背景颜色:
Let’s change one of the parameter values using rosparam set:
现在我们修改背景颜色的红色通道:
rosparam set background_r 150上述指令修改了参数的值,现在我们调用清除服务使得修改后的参数生效:
rosservice call clear现在 我们的小乌龟看起来应该是像这样:
现在我们来查看参数服务器上的参数值——获取背景的绿色通道的值:
rosparam get background_g我们可以使用rosparam get /来显示参数服务器上的所有内容:
rosparam get /你可能希望存储这些信息以备今后重新读取。这通过rosparam很容易就可以实现:
现在我们将所有的参数写入params.yaml文件:
rosparam dump params.yaml你甚至可以将yaml文件重载入新的命名空间,比如说copy空间:
rosparam load params.yaml copy rosparam get copy/background_bros官方教程