目錄
ros services
使用rosservice
rosservice list
rosservice type
rosservice call
using rosparam
rosparam list
rosparam set and rosparam get
rosparam dump and rosparam load
本教程假設從前一教程啟動的turtlesim_node仍在執行,現在我們來看看turtlesim提供了什麼服務:
服務(services)是節點之間通訊的另一種方式。服務允許節點傳送請求(request) 並獲得乙個響應(response)
rosservice可以很輕鬆的使用 ros 客戶端/伺服器框架提供的服務。rosservice提供了很多可以在topic上使用的命令,如下所示:
使用方法:
rosservice list 輸出可用服務的資訊1.1 rosservice listrosservice call 呼叫帶引數的服務
rosservice type 輸出服務型別
rosservice find 依據型別尋找服務find services by service type
rosservice uri 輸出服務的rosrpc uri
$ rosservice listlist 命令顯示turtlesim節點提供了9個服務:重置(reset), 清除(clear), 再生(spawn), 終止(kill), turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, and turtlesim/set_logger_level. 同時還有另外兩個rosout節點提供的服務: /rosout/get_loggers and /rosout/set_logger_level.
我們使用rosservice type命令更進一步檢視clear服務:
1.2 rosservice type
使用方法:
rosservice type [service]我們來看看clear服務的型別:
$ rosservice type clear
std_srvs/empty服務的型別為空(empty),這表明在呼叫這個服務是不需要引數(比如,請求不需要傳送資料,響應也沒有資料)。下面我們使用rosservice call命令呼叫服務:
1.3 rosservice call
使用方法:
rosservice call [service] [args]因為服務型別是空,所以進行無引數呼叫:
$ rosservice call clear正如我們所期待的,服務清除了turtlesim_node的背景上的軌跡。
通過檢視再生(spawn)服務的資訊,我們來了解帶引數的服務:
$ rosservice type spawn| rossrv show這個服務使得我們可以在給定的位置和角度生成乙隻新的烏龜。名字引數是可選的,這裡我們不設具體的名字,讓turtlesim自動建立乙個。
$ rosservice call spawn 2 2 0.2 ""服務返回了新產生的烏龜的名字:
現在我們的烏龜看起來應該是像這樣的:
rosparam使得我們能夠儲存並操作ros 引數伺服器(parameter server)上的資料。引數伺服器能夠儲存整型、浮點、布林、字串、字典和列表等資料型別。rosparam使用yaml標記語言的語法。一般而言,yaml的表述很自然:1 是整型, 1.0是浮點型, one是字串, true是布林, [1, 2, 3]是整型列表, 是字典. rosparam有很多指令可以用來操作引數,如下所示:
使用方法:
rosparam set 設定引數我們來看看現在引數伺服器上都有哪些引數:rosparam get 獲取引數
rosparam load 從檔案讀取引數
rosparam dump 向檔案中寫入引數
rosparam delete 刪除引數
rosparam list 列出引數名
2.1 rosparam list
$ rosparam list我們可以看到turtlesim節點在引數伺服器上有3個引數用於設定背景顏色:
let's change one of the parameter values using rosparam set:
2.2 rosparam set and rosparam get
usage:
rosparam set [param_name]現在我們修改背景顏色的紅色通道:rosparam get [param_name]
$ rosparam set background_r 150上述指令修改了引數的值,現在我們呼叫清除服務使得修改後的引數生效:
$ rosservice call clear現在 我們的小烏龜看起來應該是像這樣:
現在我們來檢視引數伺服器上的引數值——獲取背景的綠色通道的值:
$ rosparam get background_g我們可以使用rosparam get /來顯示引數伺服器上的所有內容:
$ rosparam get /你可能希望儲存這些資訊以備今後重新讀取。這通過rosparam很容易就可以實現:
2.3 rosparam dump and rosparam load
使用方法:
rosparam dump [file_name]現在我們將所有的引數寫入params.yaml檔案:rosparam load [file_name] [namespace]
$ rosparam dump params.yaml你甚至可以將yaml檔案重載入新的命名空間,比如說copy空間:
$ rosparam load params.yaml copy至此,我們已經了解了ros服務和引數伺服器的使用,接下來,我們一同試試使用 rqt_console 和 roslaunch$ rosparam get copy/background_b
wiki: cn/ros/tutorials/understandingservicesparams (2013-11-24 13:25:08由flluo
編輯)except where otherwise noted, the ros wiki is licensed under the
creative commons attribution 3.0 |
find us on google+
ROS入門教程 (建立ROS訊息和ROS服務)
參考中文官網 description 本教程詳細介紹如何建立並編譯ros訊息和服務,以及rosmsg,rossrv和roscp命令列工具的使用。01.訊息 msg 和服務 srv 介紹 msg檔案存放在package的msg目錄下,srv檔案則存放在srv目錄下。msg檔案實際上就是每行宣告乙個資料...
5 理解ros服務
ros服務 service 是節點間交流的另外一種方式,服務類似於web中的服務端與客戶端的概念,節點類似乙個客戶端,可以發出乙個請求 request 然後接受乙個響應 response 此命令的用法如下 rosservice list print information about active ...
ROS學習(一) ROS入門
注 主要是古月部落格學習過程中的記錄,其專欄為 ros robot operating system 是用於機械人的一種次級作業系統,可以提供硬體抽象描述 底層驅動程式管理 共用功能執行 程式間的訊息傳遞 程式發行包管理等功能。ros的設計目標是在機械人研發中提高 復用率,是一種分布式處理框架,可執...