其他分享
首页 > 其他分享> > ROS学习(五)了解ROS服务和参数

ROS学习(五)了解ROS服务和参数

作者:互联网

ROS学习(五)了解ROS服务和参数

一、ROS服务

服务是节点相互通信的另一种方式。服务允许节点发送请求并接收响应

二、使用rosservice

rosservice可以通过服务轻松附加到ROS的客户端/服务框架。rosservice有许多可用于服务的命令,如下所示:
用法:

rosservice list         print information about active services
                                       打印有关活动服务的信息
rosservice call         call the service with the provided args
                                       使用提供的参数调用服务
rosservice type         print service type
                                       打印服务类型
rosservice find         find services by service type
                                        按服务类型查找服务
rosservice uri          print service ROSRPC uri
                                      打印服务ROSRPC uri

2.1 rosservice list

$ rosservice 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。
在这里插入图片描述
让我们更仔细地看一下使用rosservice type的clear服务:

2.2 rosservice type

用法:

rosservice type [service]

让我们找出clear服务的类型:

$ rosservice type /clear

在这里插入图片描述
该服务为空,这意味着在进行服务调用时,它不接受任何参数(即,在发出请求时不发送数据,而在接收响应时不接收数据)。让我们使用rosservice call调用此服务:

2.3 rosservice call

用法:

rosservice call [service] [args]

在这里,我们将不带任何参数进行调用,因为该服务的类型为空:

$ rosservice call /clear

这符合我们的预期,它清除了turtlesim_node的背景,即把乌龟之前的路径线条给清除了。
在这里插入图片描述
让我们通过查看服务产生的信息来查看服务具有参数的情况:

$ rosservice type /spawn | rossrv show

在这里插入图片描述
该服务使我们可以在给定的位置和方向上生成新的海龟。

$ rosservice call /spawn 

在spawn代码后双击Tab键,然后操控左右方向键盘进行设置
在这里插入图片描述

三、使用rosparam

rosparam允许您在ROS参数服务器上存储和处理数据。参数服务器可以存储整数,浮点数,布尔值,字典和列表。rosparam将YAML标记语言用于语法。在简单的情况下,YAML看起来很自然:1是整数,1.0是浮点数, one是字符串,true是布尔值,[1、2、3]是整数列表,并且{a:b,c: d}是字典。rosparam有许多可用于参数的命令,如下所示:
用法:

rosparam set            set parameter 设置参数
rosparam get            get parameter获取参数
rosparam load           load parameters from file从文件加载参数
rosparam dump           dump parameters to file将参数转存到文件
rosparam delete         delete parameter删除参数
rosparam list           list parameter names列出参数名称

让我们看一下参数服务器上当前有哪些参数:

3.1 rosparam list

$ rosparam list

在这里我们可以看到,turtlesim节点在参数服务器上具有三个用于背景颜色的参数:
在这里插入图片描述
让我们使用rosparam set更改参数值之一:

3.2 rosparam set和rosparam get

用法:

rosparam set [param_name]
rosparam get [param_name]

这里将改变背景颜色的红色通道:

$ rosparam set /turtlesim/background_r 150

这将更改参数值,现在我们必须调用清除服务以使参数更改生效:

$ rosservice call /clear

现在我们的turtlesim看起来像这样:
在这里插入图片描述
现在,让我们看一下参数服务器上其他参数的值。让我们获取绿色背景通道的值:

$ rosparam get /turtlesim/background_g 

在这里插入图片描述
我们还可以使用rosparam get /向我们展示整个Parameter Server的内容。

$ rosparam get /

会得到类似内容:

rosdistro:'melodic

  '
roslaunch:
  uris:
    host_nxt__43407:http:// nxt:43407 /
rosversion:'1.15.5

  '
run_id:7ef687d8-9ab7-11ea-b692-fcaa1494dbf9
turtlesim:
  background_b:255
  background_g:86
  background_r:69

您可能希望将其存储在文件中,以便在其他时间重新加载它。使用rosparam很容易:
用法:

rosparam dump [file_name] [namespace]
rosparam load [file_name] [namespace]

在这里,我们将所有参数写入文件params.yaml

$ rosparam dump params.yaml

您甚至可以将这些yaml文件加载到新的命名空间中,例如copy_turtle:

$ rosparam load params.yaml copy_turtle
$ rosparam get /copy_turtle/turtlesim/background_b

在这里插入图片描述

标签:set,服务,get,rosparam,学习,rosservice,参数,ROS
来源: https://blog.csdn.net/qq_50615776/article/details/113806021