ROS基礎教程學習筆記6 理解ROS的服務和引數

2021-09-24 19:14:01 字數 3918 閱讀 3455

本節介紹了ros 服務和引數的知識,以及命令列工具rosservice和rosparam的使用方法

服務(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)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.

/clear

/kill

/reset

/rosout/get_loggers

/rosout/set_logger_level

/rostopic_7425_1561702318566/get_loggers

/rostopic_7425_1561702318566/set_logger_level

/spawn

/teleop_turtle/get_loggers

/teleop_turtle/set_logger_level

/turtle1/set_pen

/turtle1/teleport_absolute

/turtle1/teleport_relative

/turtlesim/get_loggers

/turtlesim/set_logger_level

(2)rosservice type

//用法:

rossrevice type [service]

//示例:

rosservice type clear

std_srvs/empty
服務的型別為空(empty),這表明在呼叫這個服務是不需要引數(比如,請求不需要傳送資料,響應也沒有資料)。下面我們使用rosservice call命令呼叫服務.

(3)rosservice call

//用法:

rosservice call [service] [args]

示例:rosservice call clear

清除了烏龜的運動軌跡

通過檢視再生(spawn)服務的資訊,我們來了解帶引數的服務:

rosservice type spawn| rossrv show
float32 x

float32 y

float32 theta

string name

---string name

這個服務使得我們可以在給定的位置和角度生成乙隻新的烏龜。名字引數是可選的,這裡我們不設具體的名字,讓turtlesim自動建立乙個。

rosservice call spawn 2 2 0.2 ""
終端會返回新烏龜的名字並產生乙隻新的小烏龜:

rosparam使得我們能夠儲存並操作ros引數伺服器上的資料。引數伺服器能夠儲存整型、浮點、布林、字串、字典和列表等資料型別。rosparam使用yaml標記語言的語法。一般而言,yaml的表述很自然:1 是整型, 1.0是浮點型, one是字串, true是布林, [1, 2, 3]是整型列表, 是字典. 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_zbr__45777

/rosversion

/run_id

(2)rosparam set 和 rosparam get

改變背景演的的紅色通道:

rosparam set backgorund_r 150
上述命令只是修改了引數的值,需要呼叫清除服務使其生效:

rosservice call clear
現在我們來檢視引數伺服器上的引數值——獲取背景的綠色通道的值:

rosparam get background_g
得到86的返回值,也可以使用rosparam get /來顯示引數伺服器上的所有內容:

rosparam get /
backgorund_g: 86

backgorund_r: 150

background_b: 255

background_g: 86

background_r: 69

rosdistro: 'kinetic

'roslaunch:

uris:

rosversion: '1.12.14

'run_id: 0620a418-996b-11e9-9180-34de1ad3110c

(3)rosparam dump 和 rosparam load

//用法:

rosparam dump [file_name]

rosparam load [file_name] [namespace]

現在將所有的引數寫入param.yaml檔案中:

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

rosparam load params.yaml copy

rosparam get copy/background_b

最後返回255

參考文獻:

ROS基礎教程學習筆記10 測試訊息發布器和訂閱器

首先 roscore重新開啟乙個終端,定位到工作站 cd catkin ws source devel setup.bash 然後開啟發布器 rosrun beginner tutorials talker你就會看到如下輸出 重新開啟乙個終端,然後source source devel setup....

pyhton基礎教程(學習筆記)

函式作用 例子相等運算子 兩個字串或數字是否相等 is 同一性運算子 x y 1,2 z 1,2 x,y,z相等但只有x,y同一 in 成員資格運算子 判斷乙個子串是否被包含在母串中 字串和序列比較 alpha beta 布林運算 有短路運算特徵 x and y,x or y assert 斷言 設...

Python基礎教程學習筆記

第一章 快速改造 基礎知識 函式描述 abs number 返回數字的絕對值 cmath.sqtr number 返回平方根,也可以應用於負數 float object 將字串和數字裝換為浮點數 help 提供互動式幫助 input prompt 獲取使用者輸入 int object 將字串和數字轉...