6th ROS通信机制概述
ROS通信是ROS的核心之一。
一、基本概念
- 節點(Node)
- 一個節點就表示一個進程
- 多節點、端到端、分布式通信機制
- 消息(Message)
- 節點之間通過訂閱和發布傳遞的數據
- 可以使用ROS提供的消息類型,也可以使用 .msg 文件自定義消息類型
- 話題(Topic)
- 消息通過發布/訂閱(Publish/Subscribe)方式傳遞
- 發布者節點(Talker)針對一個給定的話題發布消息,訂閱者節點(Listener)訂閱某個話題及其特定數據
- 話題通信是【異步通信】
- 無反饋,有緩沖,弱實時,節點關系多對多,適于數據傳輸
- 服務(Service)
- 基于服務器/客服端(Sercer/Client)模型
- 可以使用 ROS 提供的服務類型,也可以使用 .srv 文件自定義
- 服務通信是【同步通信】
- 有反饋,無緩沖,強實時,節點關系一對多,適于邏輯處理
- 節點管理器(ROS Master)
- 統籌管理所有節點,進行節點間的查找、連接等
- 為系統提供參數服務器,管理全局參數
- 節點管理器也體現了ROS的弊端:ROS Master 如果 broken down,整個系統將崩潰
二、通信原理
ROS可以形象的描述為一個工廠的運行機制,創建好一個工作空間(workspace)就像一個工廠,工廠里又有好多個生產車間,每個功能包(pkg)看作是一個生產車間,每個生產車間又有好多工人在配合,每個節點(node)看作是一個工人,節點是又是可執行程序的最小單位,工人們之間相互溝通通過消息(mesage)來完成。
ROS中的通信方式有四種,話題、服務、參數服務器、動作庫。常用前三種。
2.1? 話題通信
對于實時性、周期性的消息,使用topic來傳輸是最佳的選擇。topic是一種點對點的單向通信方式,這里的“點”指的是node,也就是說node之間可以通過topic方式來傳遞信息。topic要經歷下面幾步的初始化過程:首先,publisher節點和subscriber節點都要到節點管理器進行注冊,然后publisher會發布topic,subscriber在master的指揮下會訂閱該topic,從而建立起sub-pub之間的通信。注意整個過程是單向的。
舉個例子,有一個軟件叫今日頭條,你喜歡看汽車類的新聞,這個“汽車類的新聞”就是話題。今日頭條軟件就經常給你推送這個話題的內容,當你打開的時候就會看到,也就是“訂閱”。
再舉個例子,你喜歡聽FM90.8安徽交通廣播的《青春集結號》節目,電臺那邊就是發布者,你打開收音機調到這個頻道就是
2.2? ?服務通信
service服務通訊機制是一種雙向同步數據傳輸模式。基于客戶端/服務器模型,兩部分通信數據類型:一個用于請求,一個用于應答,類似web服務器。
舉個例子,就像是你打10086客服電話查話費,打過去就是客戶端發出請求,客服給你回復就是服務端產生響應。
?2.3 參數服務器
??????? 在機器人系統中,參數傳遞十分重要,機器人工作時,我們有需要對機器人的參數(如傳感器參數、算法的參數)進行設置。有些參數(如機器人的輪廓、傳感器的高度)在機器人啟動時就設定好就行了,有些參數則需要動態改變(特別是在調試的時候)。無論是傳感器的設置,還是控制參數的調整,都需要留出方便的參數調試接口。ROS提供了參數服務器來滿足這一需求,我們可以將參數設置在參數服務器,在需要用到參數的時候再從參數服務器中獲取。使用參數服務器配置系統的參數,是全局可見的,方便我們檢索和更改系統的配置狀態。
? ? ? ? 相當于把參數都放到一個容器中,需要的時候從中取。參數共享。就像共享單車,單車都是參數,需要的時候進行掃碼使用。作為管理者,可能也會投放新的參數,或者刪除一些舊的參數。
?
參考文章:
https://zhuanlan.zhihu.com/p/90425611?from_voters_page=true
https://www.pianshen.com/article/14831374014/
https://blog.csdn.net/sunlin972913894/article/details/103556936
總結
以上是生活随笔為你收集整理的6th ROS通信机制概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 耳机阻抗棒的内部原理
- 下一篇: 计算机考研数学要求什么水平,2018计算