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