确保turtlesim_node开启。
7.1 ROS Services
服务是节点之间另外一种通信方式。也就允许节点发送请求(request)并获得一个响应(response)
7.2使用rosservice
使用方法:
rosservice list 输出可用服务的信息
rosservice call 调用带参数的服务
rosservice type 输出服务类型
rosservice find 依据类型寻找服务find services by service type
rosservice uri 输出服务的ROSRPC url
7.3使用rosservice list
本命令是列出服务列表
rosservice list
list命令显示turtlesim节点提供了9个服务:重置(reset),清除(clear),再生(spawn),终止(kill),/turtle1/set_pen,/turtle1/teleport_absolute,/turtle1/teleport_relative,turtlesim/get_loggers,还有turtlesim/set_logger_level.
同时还有另外两个rosout节点提供的服务:/rosout/get_loggers 和 /rosout/set_logger_level.
7.4使用rosservice type
也就是获取服务的类型
使用方法:rosservice type [service]
试一下clear服务类型,
rosservice type clear
得到;std_srvs/Empty
说明服务类型为空(Empty),说明调用这个服务不用参数。
7.5使用rosservice call
本功能是执行该服务
使用方法:rosservice call [service] [args]
args是arguments的缩写,表示参数
因为服务类型是空,不需要参数
rosservice call clear
服务清除了turtlesim_node背景上的轨迹。
通过查看再生(spawn)服务的信息,了解带参数的服务(rossrv命令针对是静态的服务文件*.srv,rossrv show 是显示服务类型的所有信息)
rosservice type spawn | rossrv show
返回一些参数
这个服务(spawn)让我们可以生成一只小乌龟,名字参数可选。我们这里不设具体名字,让turtlesim自动创建一个。
接下来生成一个乌龟
rosservice call spawn 2 2 0.2 “”
服务返回新产生乌龟的名字name:turtle2
7.6 使用rosparam
rosparam是存储和操作ROS参数服务器(parameter server)上的数据。
参数服务器能够存储①整形,②浮点,③字符串,④列表,等数据
rosparam使用YAML标记语言的语法。YAML的表述很自然:1是整形,1.0是浮点型,one是字符串,true是布尔,[1,2,3]是整型列表,{a:b,c:d}是字典。
使用方法:
rosparam set 设置参数
rosparam get 获取参数
rosparam load 从文件读取参数
rosparam dump 从文件中写入参数
rosparam delete 删除参数
rosparam list 列出参数名
7.7使用rosparam list
rosparam list
返回:
前3个是设置背景颜色。就是RGB(red ,green,blue)颜色,每个值能范围是(0~255),不懂百度RBG,这里涉及到一些颜色,玩过PS的人都懂。
7.7使用rosparam set 和rosparam get
使用方法:
rosparam set [param_name]
rosparam get [param_name]
试一下修改背景颜色
rosparam set background_r 150
然后调用清除服务使得修改后的参数生效
rosservice call clear
就会发现背景颜色变了。
试一下获取绿色通过的值
rosparam get background_g
返回:86
也可以通过rosparam get /获取参数服务器上所有内容
rosparam get /
7.8使用rosparam dump 和 rosparam load
使用方法:
rosparam dump [file_name]
rosparam load [file_name] [namespace]
将所有参数写入params.yaml文件
rosparam dump params.yaml
甚至可以将yaml文件重新载入新的命名空间,比如copy空间(不知道这个copy保存在哪)
rosparam load params.yaml copy
验证一下是否载入新空间成功
rosparam get copy/backgroud_g
返回86。