本節介紹了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 將字串和數字轉...