ROS入門 1 10 理解ROS服務和引數

2021-07-26 02:51:14 字數 3655 閱讀 6576

目錄

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         輸出可用服務的資訊

rosservice call 呼叫帶引數的服務

rosservice type 輸出服務型別

rosservice find 依據型別尋找服務find services by service type

rosservice uri 輸出服務的rosrpc uri

1.1 rosservice list

$ rosservice list
list 命令顯示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]

rosparam load [file_name] [namespace]

現在我們將所有的引數寫入params.yaml檔案:

$ rosparam dump params.yaml
你甚至可以將yaml檔案重載入新的命名空間,比如說copy空間:

$ rosparam load params.yaml copy

$ rosparam get copy/background_b

至此,我們已經了解了ros服務和引數伺服器的使用,接下來,我們一同試試使用 rqt_console 和 roslaunch

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的設計目標是在機械人研發中提高 復用率,是一種分布式處理框架,可執...