ROS2官方教程:ROS2中不同的DDS/RTPS vendors

這篇說明簡單講解了ROS2和DDS/RTPS的關係,以及引出RMW的作用。感覺其中部分句子翻譯的不好,而且vendors不知道怎麼翻譯,用了原詞,希望指正。

原文鏈接:https://index.ros.org/doc/ros2/DDS-and-ROS-middleware-implementations/

ROS2中不同的DDS/RTPS vendors

ROS2是建立在以DDS/RTPS爲中間件的基礎之上的,DDS/RTPS提供了發現(discovery)、序列化(serialization)以及數據傳遞(transportation)的功能。這篇文章詳細解釋了DDS和RTPS實現的機理,總結的說,DDS是一種端對端的中間件,它可以提供ROS系統中的一些相關特性,比如說分佈式發現(distributed discovery),非ROS1中的集中式發現方法,以及在不同的質量服務選項(“Quality of Service” options)中控制數據傳輸。

DDS(Data Distribution Service)是一種工業標準,它由各種不同的vendors實現,比如RTI公司實現的Connext或者是ADLink公司的OpenSplice,RTPS(Real Time Publish Subscribe protocol)是一種使用DDS作爲網絡通信的協議,沒有完全實現全部的DDS API,但已經可以爲ROS2提供充足的功能性,比如eProsima實現的Fast RTPS

ROS2支持多種不同的DDS/RTPS實現,這是由於當它選擇一個vendor來使用時,並不是完全一致的(one size fits all)。當選擇一箇中間件實現時,有多種因素需要考慮,比如說後備考慮如license,或者技術考慮如平臺兼容性或計算規模。vendors可能專注於不同的需求而提供多於一種的DDS或RTPS實現,比如說,RTI就有多種不同的Connext實現,它們的目的各不相同,比如有些是針對特定處理器平臺的,有些是滿足不同應用的安全性驗證的(當前階段,ROS2僅支持標準桌面版本)。

爲了在ROS2中使用一個DDS/RTPS實現,我們設計了ROS Middleware interface(或簡稱RMW) 的軟件包,它可以實現在使用DDS/RTPS API或工具時對ROS中間件接口的抽象。使用RMW來支持DDS的過程需要做很多實現和維護性工作,但是首先實現對一部分DDS的支持可以保證ROS2的框架代碼不再需要嘗試其他特殊的實現方法,同時用戶也希望能將DDS與他們的應用工程分離開來。

支持的RMW實現

產品名稱 協議 RMW實現 當前狀態
eProsima Fast RTPS Apache 2 rmw_fastrtps_cpp 完全支持,默認RMW
RTI Connext 商業授權、研究授權 rmw_connext_cpp 完全支持,包括二進制包,但Connext需要單獨安裝
RTI Connext(dynamic implementation) 商業授權、研究授權 rmw_connext_dynamic_cpp 支持暫停,alpha 8版之前完全支持
PrismTech Opensplice LGPL(only v6.4)、商業授權 rmw_opensplice_cpp 部分支持,包括二進制包,但是OpenSplice需要單獨安裝
OSRF FreeRTPS Apache 2 - 部分支持,開發暫停

部分支持的意思是有一個或多個rmw接口需要的特性沒有實現。詳細的關於RMW實現的工作,參考Working with multiple RMW implementations

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章