根據小海龜的例子講解ros服務和引數。
首先啟動:roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
一:ros服務
服務是節點相互通訊的另一種方式。服務允許節點傳送請求並接收響應。
二:rosservice的使用
rosservice list //列出當前的所有服務個數
rosservice call //回應服務
rosservice type / /print service type
rosservice find // find services by service type
rosservice uri //print service rosrpc uri
當我們使用rosservice list命令時,終端的輸出如下:
/clear
/kill
/reset
/rosout/get_loggers
/rosout/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
接著我們使用rosservice type命令。
rosservice type命令的格式如下:
roservice type [service]
例如:rosservice type /clear
輸出結果為:
txj@txj:~$ rosservice type /clear
std_srvs/empty
可以看出,輸出的服務資料型別是空的,表示當它傳送請求的時候,沒有傳送資料,接收響應的時候,也沒有接收到資料。
下一步,我們使用rosservice call命令
該命令的語法格式為:
rosservice call [service]
例如:rosservice call /clear
輸出結果是,我們發現小海龜的運動軌跡被清除了。
三:使用rosparam
rosparam允許你在ros引數伺服器上儲存和操縱資料。引數服務可以儲存整型、浮點型、布林型、字典和列表等型別的資料。
用法:rosparam set set parameter
rosparam get get parameter
rosparam load load parameters from file
rosparam dump dump parameters to file
rosparam delete delete parameter
rosparam list list parameter names
首先,我們來看一下有哪些引數儲存在引數伺服器上?
rosparam list
輸出的結果為:
txj@txj:~$:rosparam list
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_txj__33805
/rosversion
/run_id
可以看出,turtlesim節點有3個引數在引數伺服器上用於設定視窗的背景色,現在我們使用rosparam set來改變乙個引數的值看一下有什麼變化。
rosparam set /background_r 150
上面的命令改變了引數的值,現在我們還需要呼叫/clear服務來使更改的引數值生效。
rosservice call /clear
可以看到小海龜的背景顏色改變了。
我們還可以將引數伺服器上的所有內容轉儲到自命名的檔案中:
rosparam dump params.yaml
params.yaml檔案被儲存在當前終端目錄下。
如果直接開啟檔案改變裡面的引數,然後在終端下執行:rosparam load params.yaml 和rosservice call /clear 可以看到小海龜的背景顏色也是會改變的。
我們還可以將params.yaml檔案的內容載入到新的命名空間:
roaparam load params.yaml copy
接著,我們來獲取新的命名空間中的引數的值:
rosparam get /copy/background_b
輸出結果為:
txj@txj:~$ rosparam get /copy/background_g
86
ROS 服務和引數
2rosservice 24 rosservice find 25 rosservice uri 3rosparam 服務 services 是節點之間通訊的另一種方式。服務允許節點傳送請求 request 並獲得乙個響應 response rosservice可以很輕鬆的使用 ros 客戶端 伺服...
ROS入門 1 10 理解ROS服務和引數
目錄 ros services 使用rosservice rosservice list rosservice type rosservice call using rosparam rosparam list rosparam set and rosparam get rosparam dump ...
ROS服務和引數的分析
目錄 準備 ros services 使用rosservice rosservice list 輸出可用服務的資訊 rosservice call 呼叫帶引數的服務 rosservice type 輸出服務型別 rosservice find 依據型別尋找服務find services by ser...