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