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