ROS入門 5 深入了解ROS話題通訊機制的過程

2021-10-23 04:33:01 字數 1405 閱讀 3804

乙個節點需要與系統中其他節點進行通訊才有意義,系統中任何單獨的乙個節點其實都是沒有意義的。下圖是乙個話題通訊的過程示意圖,乙個節點通過節點管理器連線到另乙個節點,最終請求話題資料流。

ps:在ros中有兩個節點:乙個是發布者talker,另乙個是訂閱者listener,兩個節點分別發布、訂閱同乙個話題bar

在系統中,節點與節點是沒有任何關係的,都靠節點管理器來處理相關的請求與服務,首先第一步,發布者talker需要向節點管理器ros master註冊相關資訊,包括節點的資訊、需要發布的話題名等,然後節點管理器ros master會記錄下來talker節點的資訊。

同理訂閱者listener也需要向節點管理器ros master註冊相關資訊,這其實是啟動兩個節點時候就已經做了的事情。

因為發布者talker與訂閱者listener節點都在節點管理器ros master註冊了資訊,那麼節點管理器ros master就會發現有相同的話題資訊,此時它就需要將訂閱與發布話題的兩個節點匹配在一起,會通過rpc向訂閱者listener傳送talker節點的rpc位址資訊。

訂閱者listener知道發布者talker後,就會主動找到它,並且通過rpc向ttalker

傳送連線請求,傳輸訂閱的話題名、訊息型別以及通訊協議。

talker接收到listener傳送的連線請求後,繼續通過rpc向listener確認連線資訊,同時傳送自身相關的資訊。

listener接收到確認資訊後,使用tcp嘗試與talker建立網路連線。

成功建立連線後,talker開始向listener傳送話題訊息資料。

在節點與節點建立連線前,他們的通訊協議都是rpc,而這主要都是依賴於節點管理器的,在節點與節點建立連線後,就直接是使用tcp協議進行資料傳輸,而不需要依賴節點管理器,此時節點管理器允許被關閉,但在關閉後,其他節點就不能訂閱、發布這個話題訊息了。

總之節點管理器ros master在節點建立連線的過程中起到了重要作用,但是並不參與節點之間最終的資料傳輸。

本文的部分截圖來自書籍《ros機械人開發實踐》 胡春旭 著。

ros官方wiki

ros筆記(7) 話題通訊

深入了解 HTML 5

comsharp cms 寫道 雖然 html 5 仍遙遙無期,然而最近有關 html 5 的文章和資料卻越來越多起來,這個 world wide web 核心語言的第5個版本包含了太多的期待。這是 cameronmoll.com 蒐集的12個非常有用的 html5 資源,這些資料的目的並不是簡單地...

深入了解 HTML 5

雖然 html 5 仍遙遙無期,然而最近有關 html 5 的文章和資料卻越來越多起來,這個 world wide web 核心語言的第5個版本包含了太多的期待。這是 cameronmoll.com 蒐集的12個非常有用的 html5 資源,這些資料的目的並不是簡單地介紹 html5,因為它還未完成...

深入了解 HTML 5

comsharp cms 寫道 雖然 html 5 仍遙遙無期,然而最近有關 html 5 的文章和資料卻越來越多起來,這個 world wide web 核心語言的第5個版本包含了太多的期待。這是 cameronmoll.com 蒐集的12個非常有用的 html5 資源,這些資料的目的並不是簡單地...