5 理解ros服務

2021-07-11 05:05:18 字數 3988 閱讀 9288

ros服務(service)是節點間交流的另外一種方式,服務類似於web中的服務端與客戶端的概念,節點類似乙個客戶端,可以發出乙個請求(request),然後接受乙個響應(response)。

此命令的用法如下:

rosservice list         print information about active services

rosservice call call the service with the provided args

rosservice type

print service type

rosservice find find services by service type

rosservice uri print service rosrpc uri

首先啟動乙個小海龜:

roscore
rosrun turtlesim turtle_teleop_key
然後使用rosservice list命令,我們將得到:

/clear

/kill

/reset

/rosout/get_loggers

/rosout/set_logger_level

/spawn

/turtle1/set_pen

/turtle1/teleport_absolute

/turtle1/teleport_relative

/turtlesim/get_loggers

/turtlesim/set_logger_level

這條命令說明我們小海龜節點提供如上9種服務。

可以進一步使用rosservice type檢視服務的詳細資訊。

用法:

rosservice type [service]
示例:

rosservice type

clear

得到:

std_srvs/empty
服務為空,這表明在呼叫這個服務的時候不需要任何引數(它在生成請求時不傳送任何資料和接受響應的時候也不接收任何資料)。

我們可以使用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

使用這個服務,給定位置引數和角度引數我們可以建立乙個新海龜,其中name引數是可選的,現在我們就利用此命令建立乙個新海龜:

rosservice call spawn 2

20.2

""

它將返回新海龜的名字:

name: turtle2
同時我們也可以看到在海龜視窗中多了乙隻不同顏色的海龜。

使用rosparam命令可以在ros的 parameter server上儲存和運算元據。parameter server可以儲存integers, floats, boolean, dictionaries, and lists型別的資料。而rosparam命令使用yaml的語法,yaml的語法非常簡單,但是要求比較嚴格,就不細講了。rosparam命令的用法如下:

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
得到:

/background_b

/background_g

/background_r

/rosdistro

/roslaunch/uris/host_192_168_31_101__46779

/rosversion

/run_id

讓我們嘗試用rosparam set命令改變引數的值:

用法:

rosparam set [param_name]

rosparam get [param_name]

例如我們可以改變一下小海龜視窗的背景色——

首先設定引數:

rosparam set background_r 150
然後需要呼叫clear服務才可以使引數生效:

rosservice call clear
執行完這一步,發現海龜視窗的背景色變紫了。

然後我們可以檢視一下在引數伺服器上的其他引數,例如背景色綠通道的值:

rosparam get background_g
會得到:

86
使用/獲取引數伺服器上的所有內容:

rosparam get /
輸出類似於:

background_b: 255

background_g: 86

background_r: 150

rosdistro: 'jade

'roslaunch:

uris:

rosversion: '1.11.16

'run_id: bd3a4832-

0230

-11e6

-80ee-c0188582eefb

你可以把這些引數儲存到檔案裡以方便再次使用:

用法:

rosparam

dump

[file_name]

[namespace]

rosparam

load

[file_name]

[namespace]

現在我們把引數伺服器的內容存到params.yaml中:

rosparam dump params.yaml
你可以將這個yaml檔案載入到新的命名空間裡,例如'copy'

rosparam load

params.yaml copy

rosparam get copy/background_b

得到:

255

ROS5 理解ROS節點

這篇教程會介紹ros圖概念和並討論roscore rosnode和rosrun命令的使用。1.預備條件 這裡會使用輕量級的模擬器,先安裝 sudo apt get install ros ros tutorials 1將替換成你的ros版本名稱。2.圖概念的快速概覽 節點 nodes 節點是乙個利用...

5 理解ROS節點

描述 這個教程介紹了ros圖表概念,討論了roscore,rosnode和rosrun命令列工具的使教程等級 初學者 下乙個教程 理解ros主題 內容 1.預先條件 2.圖表概念的快速瀏覽 3.節點 4.客戶庫 5.roscore 6.使用roscore 7.使用rosrun 8.複習 對於這份教程...

ROS節點理解 5

description 本教程主要介紹 ros 圖 graph 概念 並討論roscore rosnode和 rosrun 命令列工具的使用。1.先決條件 在本教程中我們將使用到乙個輕量級的模擬器,請使用以下命令來安裝 root zxwubuntu aspire v3 572g sudo apt g...