日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

背景:

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

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

    ROS需要一個中心節(jié)點(diǎn)ROS master來協(xié)調(diào)所有通信活動。而DDS完全擺脫了任何有集權(quán)作用的節(jié)點(diǎn)。自然DDS的容錯能力更強(qiáng)。

    組成:

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

    QoS是用來控制傳輸?shù)男袨榈?#xff0c;比如:

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

    效率上的比較:

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

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

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

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

    消息描述:

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

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

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。