ROS学习--3.ROS 服务与参数

ROS服务

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

 rosservice list        打印信息活动服务
 rosservice call         使用所提供的参数调用服务
 rosservice type         显示服务的类型
 rosservice find         通过服务类型查找服务
 rosservice uri          显示服务的ROSRPC uri
  1. 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。

  2. rosservice type

    • 试着查看一下/clear服务
       rosservice type /clear
      
      输出:
      std_srvs/Empty
      

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

  3. 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           列出参数名称
  1. rosparam list

    • 查看当前具有的参数
     rosparam list     
    
    输出:
      /background_b
      /background_g
      /background_r
      /rosdistro
      /roslaunch/uris/host_57aea0986fef__34309
      /rosversion
      /run_id
    
  2. 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

3.rosparam dump 和 rosparam load

  • 在这里,我们将所有参数写入文件params.yaml
       rosparam dump params.yaml
  • 您甚至可以将这些yaml文件加载到新的名称空间中,例如hello:
       rosparam load params.yaml hello
       rosparam get /hello/background_b
   
     输出:
     255

你可能感兴趣的:(ROS学习--3.ROS 服务与参数)