Hello,大家好,歡迎來到《ROS2入門21講》,我是主講人古月。
終于講到ROS2中最為重大的變化——DDS,我們在前邊課程中學(xué)習(xí)的話題、服務(wù)、動作,他們底層通信的具體實現(xiàn)過程,都是靠DDS來完成的,它相當(dāng)于是ROS機器人系統(tǒng)中的神經(jīng)網(wǎng)絡(luò)。
通信模型
DDS的核心是通信,能夠?qū)崿F(xiàn)通信的模型和軟件框架非常多,這里我們列出常用的四種模型。
第一種,點對點模型,許多客戶端連接到一個服務(wù)端,每次通信時,通信雙方必須建立一條連接。當(dāng)通信節(jié)點增多時,連接數(shù)也會增多。
而且每個客戶端都需要知道服務(wù)器的具體地址和所提供的服務(wù),一旦服務(wù)器地址發(fā)生變化,所有客戶端都會受到影響。
第二種,Broker模型,針對點對點模型進行了優(yōu)化,由Broker集中處理所有人的請求,并進一步找到真正能響應(yīng)該服務(wù)的角色。
這樣客戶端就不用關(guān)心服務(wù)器的具體地址了。不過問題也很明顯,Broker作為核心,它的處理速度會影響所有節(jié)點的效率,當(dāng)系統(tǒng)規(guī)模增長到一定程度,Broker就會成為整個系統(tǒng)的性能瓶頸。
更麻煩是,如果Broker發(fā)生異常,可能導(dǎo)致整個系統(tǒng)都無法正常運轉(zhuǎn)。之前的ROS1系統(tǒng),使用的就是類似這樣的架構(gòu)。
第三種,廣播模型,所有節(jié)點都可以在通道上廣播消息,并且節(jié)點都可以收到消息。這個模型解決了服務(wù)器地址的問題,而且通信雙方也不用單獨建立連接,但是廣播通道上的消息太多了,所有節(jié)點都必須關(guān)心每條消息,其實很多是和自己沒有關(guān)系的。
第四種,就是以數(shù)據(jù)為中心的DDS模型了,這種模型與廣播模型有些類似,所有節(jié)點都可以在DataBus上發(fā)布和訂閱消息。
但它的先進之處在于,通信中包含了很多并行的通路,每個節(jié)點可以只關(guān)心自己感興趣的消息,忽略不感興趣的消息,有點像是一個旋轉(zhuǎn)火鍋,各種好吃的都在這個DataBus傳送,我們只需要拿自己想吃的就行,其他的和我們沒有關(guān)系。
可見,在這幾種通信模型中,DDS的優(yōu)勢更加明顯。
DDS
DDS并不是一個新的通信方式,在ROS2之前,DDS已經(jīng)廣泛應(yīng)用在很多領(lǐng)域。
比如在自動駕駛領(lǐng)域,通常會存在感知,預(yù)測,決策和定位等模塊,這些模塊都需要非常高速和頻繁地交換數(shù)據(jù)。借助DDS,可以很好地滿足它們的通信需求。
什么是DDS
好啦,說了半天DDS,到底啥意思呢?我們來做一個完整的介紹
DDS的全稱是Data Distribution Service,也就是數(shù)據(jù)分發(fā)服務(wù),2004年由對象管理組織OMG發(fā)布和維護,是一套專門為實時系統(tǒng)設(shè)計的數(shù)據(jù)分發(fā)/訂閱標(biāo)準(zhǔn),最早應(yīng)用于美國海軍, 解決艦船復(fù)雜網(wǎng)絡(luò)環(huán)境中大量軟件升級的兼容性問題,現(xiàn)在已經(jīng)成為強制標(biāo)準(zhǔn)。
DDS強調(diào)以數(shù)據(jù)為中心,可以提供豐富的服務(wù)質(zhì)量策略,以保障數(shù)據(jù)進行實時、高效、靈活地分發(fā),可滿足各種分布式實時通信應(yīng)用需求。
這里也提一下對象管理組織OMG,成立于1989年,它的使命是開發(fā)技術(shù)標(biāo)準(zhǔn),為數(shù)以千計的垂直行業(yè)提供真實的價值,比如大家課可能聽說過的統(tǒng)一建模語言SYSML和UML,還有中間件標(biāo)準(zhǔn)CORBA等,當(dāng)然還有DDS。
-
機器人
+關(guān)注
關(guān)注
210文章
28103瀏覽量
205852 -
通信
+關(guān)注
關(guān)注
18文章
5949瀏覽量
135783 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
8958瀏覽量
85085 -
DDS
+關(guān)注
關(guān)注
21文章
629瀏覽量
152483
發(fā)布評論請先 登錄
相關(guān)推薦
評論