ROS入門教程歸納7
ROS服務及其引數
使用步驟
啟動service
i) rosservice list
ii) rosservice type
iii) rosservice call
i) rosparam list
ii) rosparam get
iii) rosparam set
iv) rosparam get
v) rosservice call clear
i) rosparam dump
ii) rosparam load
rosservice
rosservice可以輕鬆使用ROS客戶端/伺服器框架提供的服務。其提供了很多可以在topic上使用的命令。
輸入
輸出 各節點提供的可用服務
輸入 rosservice call 服務 字串變數名
輸出 以輸入的引數呼叫具體服務
輸入 rosservice type 服務
輸出 對應服務的型別
示例
在turtlesim模擬器下
輸入
$ rosservice type spawn| rossrv show
輸出
float32 x
float32 y
float32 theta
string name
---
string name
該服務功能:
我們可以在給定的位置和角度生成一隻新的烏龜。
名字引數是可選的。
我們可以通過如下命令以指定引數呼叫該服務
$ rosservice call spawn 2 2 0.2 ""
伺服器會返回新烏龜的名字引數
name: turtle2
輸入 rosservice find
輸出 依據輸入型別尋找服務
輸入 rosservice uri
輸出 輸出服務的ROSPC uri
Using rosparam
rosparam用於操作ROS引數伺服器(Parameter Server)上的資料。
引數伺服器
儲存物件
整型、浮點、布林、字串、字典和列表等資料型別
語法
YAML標記語言。
整型:1
浮點型:1.0
字串:one
布林:true
整形列表:[1, 2, 3]
字典:{a: b, c: d}
輸入 rosparam list
輸出 引數伺服器上所有引數名
輸入 rosparam get 引數名
輸出 獲取對應引數名內的引數
Tip
rosparam get / 可以獲取引數伺服器上的所有內容
示例
在turtlesim模擬器下
輸入
$ rosparam get /
輸出
background_b: 255
background_g: 86
background_r: 150
roslaunch:
uris: {'aqy:51932': 'http://aqy:51932/'}
run_id: e07ea71e-98df-11de-8875-001b21201aa8
輸入 rosparam set 引數名 引數
輸出 修改對應引數名的引數為輸入值
輸入 rosparam dump 檔名
輸出 將所有引數寫入對應檔案
輸入 rosparam load 檔名 名稱空間(namesapce)
輸出 將指定檔案載入指定名稱空間
示例
在turtlesim模擬器下
將所有的引數寫入params.yaml檔案,輸入
$ rosparam dump params.yaml
將yaml檔案過載入新的名稱空間,比如說copy空間,輸入
$ rosparam load params.yaml copy
通過輸入如下指令,檢測資料是否輸入
$ rosparam get copy/background_b
輸出
255