官术网_书友最值得收藏!

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客戶端庫。

主站蜘蛛池模板: 城口县| 阳原县| 庄浪县| 江达县| 伊宁县| 伊金霍洛旗| 龙江县| 乐陵市| 高要市| 武城县| 龙泉市| 泰和县| 彰武县| 财经| 肃南| 邮箱| 岳普湖县| 平罗县| 克什克腾旗| 阳谷县| 江油市| 通河县| 高要市| 佳木斯市| 吉林省| 耿马| 玉树县| 屏东市| 沛县| 无棣县| 兴宁市| 吉木乃县| 南雄市| 桃园市| 龙口市| 山丹县| 沁水县| 辉南县| 商城县| 清水县| 西宁市|