- ROS機器人項目開發11例(原書第2版)
- (印)拉姆庫瑪·甘地那坦 郎坦·約瑟夫
- 556字
- 2021-01-26 17:17:24
1.3.4 ROS中的通信
下面介紹ROS中兩個節點如何使用ROS話題相互通信。圖1.8展示了節點間通過話題進行通信的過程。
如圖1.8所示,有兩個節點分別名為talker和listener。talker節點將名為Hello World的字符串消息發布到名為/talker的話題中,而listener節點訂閱此話題。整個過程包含了三個階段,在圖中分別標記為(1)、(2)和(3),讓我們看看每個階段發生了什么:
(1):在運行ROS中的任何節點之前,我們首先啟動master。啟動后,它將等待其他節點。當talker節點(發布者)開始運行時,它將連接到master,并與master交換其所要發布話題的詳細信息,包括話題名稱、消息類型和發布節點URI。master的URI是一個全局值,所有節點都可以連接到它。master通過列表維護與其連接的發布者。每當發布者的詳細信息發生更改時,列表將自動更新。
(2):當我們啟動listener節點(訂閱者)時,它將連接到master并交換節點的詳細信息,例如要訂閱的話題、其消息類型和節點URI。與發布者類似,master也維護一個訂閱者列表。
圖1.8 ROS節點通過話題進行通信的過程
(3):每當出現針對同一話題的訂閱者和發布者時,master將進行訂閱者和發布者URI的交換,幫助兩個節點建立連接和交換數據。訂閱者和發布者建立連接后,就不需要master的角色了。數據并不流經master,而是直接在相互連接的節點間交換消息。
有關節點、名稱空間和用法的更多信息,請訪問http://wiki.ros.org/Nodes。
現在我們已經了解了ROS通信的基本原理,接下來介紹幾個ROS客戶端庫。