“ROS 机器人操作系统初级教程”实验报告

理解ROS服务和参数

本实验重点在于理解ROS服务和参数,前提是turtlesim_node仍在运行

一:1ROS Services

服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response)。

二:使用rosservice

1:rosservice 可以很轻松的使用 ROS 客户端/服务器框架提供的服务。rosservice 提供了很多可以在 topic 上使用的命令,指令如下:

rosservice list 输出可用服务的信息

rosservice call 调用带参数的服务

rosservice type 输出服务类型

rosservice find 依据类型寻找服务find services by service type

rosservice uri 输出服务的ROSRPC uri

2: rosservice list

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.

3:rosservice type(查看服务)

使用方法:rosservice type [service]

$ rosservice type clear

得到的结果为empty,服务的类型为空(empty),这表明在调用这个服务是不需要参数。

4 :rosservice call(调用服务)

使用方法:rosservice call [service] [args]

$ rosservice call clear,服务清除了turtlesim_node的背景上的轨迹。

image.png

通过查看再生(spawn)服务的信息,我们来了解带参数的服务,这个服务使得我们可以在给定的位置和角度生成一只新的乌龟。

$ rosservice type spawn| rossrv show

$ rosservice type spawn| rossrv show

image.png

三:Using rosparam

rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。

使用的方法有:

rosparam set 设置参数

rosparam get 获取参数

rosparam load 从文件读取参数

rosparam dump 向文件中写入参数

rosparam delete 删除参数

rosparam list 列出参数名

1:rosparam list

可以看到turtlesim节点在参数服务器上有3个参数用于设定背景颜色:

background_b

background_g

background_r

2:rosparam set 设置 and rosparam get获取

使用方法:

$ rosparam set [param_name]

$ rosparam get [param_name]

修改背景

$ rosparam set background_r 150

$ rosservice call clear

image.png

可以用get 单独的内容,也可以获取所有的内容

$ rosparam get background_g (单独内容)

$ rosparam get /(所有内容)

image.png

3: rosparam dump and rosparam load(存储内容)

使用方法:

$ rosparam dump [file_name]

$ rosparam load [file_name] [namespace]

现在我们将所有的参数写入params.yaml文件,之后可以将yaml文件重载入新的命名空间,指令如下:

$ rosparam dump params.yaml

$ rosparam load params.yaml copy

$ rosparam get copy/background_b

小结:对于ROS服务和参数服务器的使用,内容比较多,分为三大类,每一类的用法相似。

最新评论
暂无评论~