1. 程式人生 > >ROS入門教程歸納7

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 list
輸出 各節點提供的可用服務

輸入 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