ROS節點、訊息、服務、主題的關係
1.ROS計算圖級
ROS 會建立一個連線到所有程序的網路。在系統中的任何節點都可以訪問此網路,並通過該網路與其他節點互動,獲取其他節點發布的資訊,並將自身資料釋出到網路上。
如圖
在這一層級中最基本的概念包括節點、節點管理器、引數伺服器、訊息、服務、主題和訊息記錄包,這些概念都以不同的方式向計算圖級提供資料:
節點(Node) 節點是主要的計算執行程序。如果你想要有一個可以與其他節點進行互動的程序,那麼你需要建立一個節點,並將此節點連線到ROS 網路。
訊息(Message) 節點通過訊息完成彼此的溝通。訊息包含一個節點發送到其他節點的資料資訊。ROS 中包含很多種標準型別的訊息,同時你也可以基於標準訊息開發自定義型別的訊息。
主題(Topic) 主題是由 ROS 網路對訊息進行路由和訊息管理的資料匯流排。每一條訊息都要釋出到相應的主題。當一個節點發送資料時,我們就說該節點正在向主題釋出訊息。節點可以通過訂閱某個主題,接收來自其他節點的訊息。一個節點可以訂閱一個主題,而並不需要該節點同時釋出該主題。這就保證了訊息的釋出者和訂閱者之間相互解耦,完全無需知曉對方的存在。主題的名稱必須是獨一無二的,否則在同名主
題之間的訊息路由就會發生錯誤。
服務(Service) 在釋出主題時,正在傳送的資料能夠以多對多的方式互動。但當你需要從某個節點獲得一個請求或應答時,就不能通過主題來實現了。在這種情況下,服務能夠允許我們直接與某個節點進行互動。此外,服務必須有一個唯一的名稱。當一個節點提供某個服務時,所有的節點都可以通過使用ROS 客戶端庫所編寫的程式碼與它通訊。
總之,ROS對所有的節點進行統一管理。節點與節點通過訊息來通訊。節點與節點之間使用服務之間直接通訊,使用主題進行間接通訊。服務是多對一,主題是多對多的關係。
使用rxgraph可以檢視各個節點之間的關係。
參考文獻
《ROS機器人程式設計》
本文來自 滄海飛帆 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/ktigerhero3/article/details/65936480?utm_source=copy