ROS服務
服務是節(jié)點之間可以相互通信的另一種方式。服務允許節(jié)點發(fā)送請求并接收響應。
rosservice可以通過服務輕松附加到ROS的客戶端/服務框架。 rosservice有許多可用于服務的命令,如下所示:
rosservice list 打印信息活動服務
rosservice call 使用所提供的參數(shù)調(diào)用服務
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_levellist命令向我們顯示,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。
-
rosservice type
- 試著查看一下/clear服務
rosservice type /clear 輸出: std_srvs/Empty該服務為空,這意味著在進行服務調(diào)用時,它不接受任何參數(shù)(即,在發(fā)出請求時不發(fā)送數(shù)據(jù),而在接收響應時不接收數(shù)據(jù))。讓我們使用rosservice調(diào)用此服務:
- 試著查看一下/clear服務
-
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ù)名稱
-
rosparam list
- 查看當前具有的參數(shù)
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 刷新背景顏色
-
- 現(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

