Advertisement

初探ros(六)---服务与参数

阅读量:

ROS服务

服务是节点之间可以相互通信的另一种方式。服务允许节点发送请求并接收响应。
rosservice可以通过服务轻松附加到ROS的客户端/服务框架。 rosservice有许多可用于服务的命令,如下所示:

复制代码
     rosservice list        打印信息活动服务
     rosservice call         使用所提供的参数调用服务
     rosservice type         显示服务的类型
     rosservice find         通过服务类型查找服务
     rosservice uri          显示服务的ROSRPC uri

rosservice list

复制代码
     rosservice list

    
    输出:
    /clear
    /kill
    /reset
    /rosout/get_loggers
    /rosout/set_logger_level
    /spawn
    /turtle1/set_pen
    /turtle1/teleport_absolute
    /turtle1/teleport_relative
    /turtlesim/get_loggers
    /turtlesim/set_logger_level

list命令向我们显示,turtlesim节点提供了九种服务:重置,清除,生成,杀死,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服务
复制代码
     rosservice type /clear

    
    输出:
    std_srvs/Empty

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

rosservice call

试着调用一下/clear服务(在开始命令之前,可以先让小乌龟跑一下,效果会比较明显)

复制代码
     rosservice call /clear

它清除了turtlesim_node的背景

试着调用一下/spawn服务

首先查看/spawn服务的数据类型

复制代码
    rosservice type /spawn | rossrv show
    
    输出:
      float32 x
      float32 y
      float32 theta
      string name
      ---
      string name

该服务使我们可以在给定的位置和方向上生成新的海龟。名称字段是可选的,所以我们不要给新乌龟起一个名字,而让turtlesim为我们创建一个。

复制代码
    rosservice call /spawn 2 2 0.2 ""

ROS参数

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

复制代码
     rosparam set            设定参数
     rosparam get            获取参数
     rosparam load           从文件加载参数
     rosparam dump           将参数转储到文件
     rosparam delete         删除参数
     rosparam list           列出参数名称

rosparam list

复制代码
 * 查看当前具有的参数
复制代码
     rosparam list  
    
    输出:
      /background_b
      /background_g
      /background_r
      /rosdistro
      /roslaunch/uris/host_57aea0986fef__34309
      /rosversion
      /run_id

rosparam set 和 rosparam get

改变/turtlesim_node的背景颜色

复制代码
    rosparam set /background_r 150  改变背景的红色通道

    rosservice call /clear          刷新背景颜色

现在,让我们看一下参数服务器上其他参数的值。让我们获取刚刚修改的红色背景通道的值:

复制代码
    rosparam get /turtlesim/background_r

    
    输出:
     150

我们还可以使用rosparam get /向我们展示整个Parameter Server的内容。

复制代码
    rosparam get /

    
    输出:
    background_b: 255
    background_g: 86
    background_r: 150
    roslaunch:
      uris: {'aqy:51932': 'http://aqy:51932/'}
    run_id: e07ea71e-98df-11de-8875-001b21201aa8

rosparam dump 和 rosparam load

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

复制代码
     rosparam dump params.yaml

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

复制代码
     rosparam load params.yaml hello

     rosparam get /hello/background_b
    
    输出:
    255

全部评论 (0)

还没有任何评论哟~