天天看點

ROS機器人程式設計(原書第2版)2.4.7 如何使用服務

<b>2.4.7 如何使用服務</b>

服務是能夠使節點之間互相通信的另一種方法。服務允許節點發送請求和接收響應。

可以使用rosservice工具與服務進行互動。此指令接受的參數如下所示:

rosservice

args/service 輸出服務參數。

call/service 根據指令行參數調用服務。

rosservice find

msg-type 根據服務類型查詢服務。

rosservice info

/service 輸出服務資訊。

rosservice list 列出活動服務清單。

rosservice type/service 輸出服務類型。

uri/service 輸出rosrpc uri服務。

我們要使用以下指令列出在turtlesim節點運作時系統提供的服務。如果你運作了這個指令,卻沒有任何反應,那麼請記住要先運作roscore并啟動turtlesim節點:

你會獲得以下輸出:

如果你想檢視某個服務的類型,例如/clear服務,請使用:

你會獲得類似下面的輸出:

若要調用服務,你需要使用rosservice call [service] [args]指令。是以如果想要調用/clear服務,請使用:

在turtlesim的視窗中,你會看到由小海龜移動産生的線條消失了。

現在我們嘗試其他的服務,例如/spawn服務。這項服務将以不同的方向在另一個位置建立另一隻小海龜。開始之前,我們要去檢視以下類型的消息:

我們會獲得以下參數:

前面的指令和下面的指令是相同的。如果你想知道為什麼這些指令相同,可以在搜尋引擎裡搜尋piping linux:

你會看到如下類似的結果:

輸入下面指令:

通過這些字段,可以知道如何調用服務。我們需要新海龜位置的x和y、方向(theta)和新海龜的名稱:

我們會獲得右側的結果:

繼續閱讀