日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【自动驾驶】5. ROS和DDS的区别总结

發布時間:2025/3/21 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【自动驾驶】5. ROS和DDS的区别总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:

ROS是在機器人領域大家常用的通信中間件。DDS是一個很古老的用在很多safe-critical領域的通信中間件(航天,汽車,戰艦,金融等)。兩者要解決的問題都是一樣的:靈活,可靠的通信網絡。并且兩者都是在實際使用誕生的協議,所以都有很強的實用性。但兩者有一些不同的價值觀:

  • ROS所在的機器人領域更加開放(基本都是開源軟件),用戶的參與度更高(大部分問題都是被社區人員回答)。但是在工業落地的應用相對于DDS少很多。
  • DDS和ROS正好相反,基本所有問題都由開發商來回答,而且開源的代碼很少。但是DDS的文檔和案例庫比ROS要強很多,而且通過很多落地項目的實踐,驗證了DDS的可靠性和實用性。
  • 節點發現機制:

    ROS需要一個中心節點ROS master來協調所有通信活動。而DDS完全擺脫了任何有集權作用的節點。自然DDS的容錯能力更強。

    組成:

  • ROS中的node和DDS中的participent對應。ROS中一個進程只能有一個node,但是DDS中可以有多個participent。
  • ROS和DDS中都有subscriber和publisher。ROS中的兩者包含了具體的讀寫操作。但是DDS中的兩者只是一個身份的標示。使用中還需要附帶一個對應的DataReaders和DataWriters來處理具體怎么對不同的消息進行讀寫。DDS這樣做的好處是可以來從不同的層級來設置各種屬性。比如想要把某個特性(比如不需要正確性驗證)應用到某個具體的消息傳輸上,可以對DataReaders進行修改。如果想要應用到所有Subscriber,就可以對subscriber進行修改。
  • Topic的概念對ROS和DDS都相同。
  • QoS:

    QoS是用來控制傳輸的行為的,比如:

  • 在規定時間內沒有發送成功就是放棄。
  • 一定要阻塞到發送成功。
  • 是否需要確認對方有收到消息。
  • 是否需要錯誤驗證等。
  • QoS在DDS中有很復雜的和靈活的設置方法。通過調整QoS系統,可以把整個系統從類UDP行為逐漸變成類TCP行為。而只是通過定義subscriber和publisher時幾個有限的參數來控制QoS。這樣做的好處是隱藏了很多普通用戶不需要關心的復雜性。

    效率上的比較:

    ROS不用zero-copy的原因:ROS是基于TCP的,對于TCP的使用者可以一次性提供一大塊需要傳輸的數據,然后由TCP來負責切分成小的package進行傳輸。在本地情況下(localhost),TCP自動的會把這一大塊數據進行內存共享。所以在效率上,在本地環境下,通過TCP傳輸和zero-copy方式傳輸沒有太大的效率差異。但是DDS是基于UDP,DDS會先把數據切成小塊后,再給UDP進行傳輸,這樣就和zero-copy的效率有很大的不同了。

    另外使用ROS的時候,如果想要得到更快的大數據本地傳輸效率可以使用nodelets。nodelets把地址通過消息進行共享,是最快的共享方式。

    服務和客戶模式(Server/Client model):

    目前DDS沒有類似于ROS的Service功能

    消息描述:

    DDS使用的是.idl格式,ROS是自己定義的.msg格式。

    參考:https://design.ros2.org/articles/ros_on_dds.html

    總結

    以上是生活随笔為你收集整理的【自动驾驶】5. ROS和DDS的区别总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。