ROS學習--3.ROS 服務與參數(shù)

ROS服務

服務是節(jié)點之間可以相互通信的另一種方式。服務允許節(jié)點發(fā)送請求并接收響應。
rosservice可以通過服務輕松附加到ROS的客戶端/服務框架。 rosservice有許多可用于服務的命令,如下所示:

 rosservice list        打印信息活動服務
 rosservice call         使用所提供的參數(shù)調(diào)用服務
 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節(jié)點提供了九種服務:重置,清除,生成,殺死,turtle1 / set_pen,/ turtle1 / teleport_absolute,/ turtle1 / teleport_relative,turtlesim / get_loggers和turtlesim / set_logger_level。還有兩個與單獨的rosout節(jié)點相關(guān)的服務:/ rosout / get_loggers和/ rosout / set_logger_level。

  2. rosservice type

    • 試著查看一下/clear服務
       rosservice type /clear
      
      輸出:
      std_srvs/Empty
      

      該服務為空,這意味著在進行服務調(diào)用時,它不接受任何參數(shù)(即,在發(fā)出請求時不發(fā)送數(shù)據(jù),而在接收響應時不接收數(shù)據(jù))。讓我們使用rosservice調(diào)用此服務:

  3. rosservice call

    • 試著調(diào)用一下/clear服務(在開始命令之前,可以先讓小烏龜跑一下,效果會比較明顯)

       rosservice call /clear
      

      它清除了turtlesim_node的背景

    • 試著調(diào)用一下/spawn服務

      首先查看/spawn服務的數(shù)據(jù)類型

      rosservice type /spawn | rossrv show
      
      輸出:
        float32 x
        float32 y
        float32 theta
        string name
        ---
        string name
      
    • 該服務使我們可以在給定的位置和方向上生成新的海龜。名稱字段是可選的,所以我們不要給新烏龜起一個名字,而讓turtlesim為我們創(chuàng)建一個。

      rosservice call /spawn 2 2 0.2 ""
      

ROS參數(shù)

rosparam允許您在ROS參數(shù)服務器上存儲和處理數(shù)據(jù)。參數(shù)服務器可以存儲整數(shù),浮點數(shù),布爾值,字典和列表。 rosparam使用YAML語法。在簡單的情況下,YAML看起來很自然:1是整數(shù),1.0是浮點數(shù),一個是字符串,true是布爾值,[1、2、3]是整數(shù)列表,并且{a:b,c: d}是字典。 rosparam有許多可用于參數(shù)的命令,如下所示:

 rosparam set            設(shè)定參數(shù)
 rosparam get            獲取參數(shù)
 rosparam load           從文件加載參數(shù)
 rosparam dump           將參數(shù)轉(zhuǎn)儲到文件
 rosparam delete         刪除參數(shù)
 rosparam list           列出參數(shù)名稱
  1. rosparam list

    • 查看當前具有的參數(shù)
     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          刷新背景顏色
      
  • 現(xiàn)在,讓我們看一下參數(shù)服務器上其他參數(shù)的值。讓我們獲取剛剛修改的紅色背景通道的值:
      rosparam get /turtlesim/background_r

      輸出:
       150
  • 我們還可以使用rosparam get /向我們展示整個Parameter Server的內(nèi)容。
      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

  • 在這里,我們將所有參數(shù)寫入文件params.yaml
       rosparam dump params.yaml
  • 您甚至可以將這些yaml文件加載到新的名稱空間中,例如hello:
       rosparam load params.yaml hello
       rosparam get /hello/background_b
   
     輸出:
     255
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容