目錄
1.引言
2.DDS的基本原理
3.FastDDS 的核心特性
4.FastDDS 的核心架構
5.典型應用場景
6.FastDDS 的安裝與快速上手
7.學習資源與社區
1.引言
????????FastDDS(原稱 Fast RTPS)是由西班牙公司?eProsima?開發的一款開源、高性能、實時性強的數據分發服務(Data Distribution Service, DDS)實現,完全遵循對象管理組織(OMG)制定的?DDS 標準(OMG DDS v1.4、v2.0 及 DDS Security 規范)。eProsima Fast DDS庫提供應用程序編程接口(API)和通信協議,采用以數據為中心的發布-訂閱(DCPS)模型,旨在在實時系統之間建立高效且可靠的信息分發機制。它專為需要低延遲、高吞吐量、高可靠性的分布式實時系統設計,廣泛應用于機器人、自動駕駛、工業物聯網(IIoT)、航空航天等領域。
? ? ? ??FastDDS 作為 DDS 標準的主流開源實現之一,其核心定位是:
- 高性能優先:針對實時場景優化,延遲可低至微秒級,吞吐量支持 GB/s 級數據傳輸。
- 開源與合規:基于?Apache License 2.0?協議開源(商業使用無限制),完全兼容 OMG DDS 及 DDS Security 規范。
- 跨平臺與靈活:支持 Linux、Windows、macOS、RTOS(如 VxWorks)等系統,兼容 x86、ARM、RISC-V 等架構。
2.DDS的基本原理
????????DDS采用的通信模型是一種多對多的單向數據交換,在該模型中,生成數據的應用程序會將數據發布到屬于消費數據的應用程序的訂閱者的本地緩存中。信息流由負責數據交換的實體之間制定的服務質量(QoS)策略進行調控。
????????作為一種以數據為中心的模型,DDS 建立在“全局數據空間”這一概念之上,所有相關應用都可訪問該空間。想要提供信息的應用會聲明其成為發布者的意圖,而想要訪問數據空間部分內容的應用則會聲明其成為訂閱者的意圖。每當發布者向該空間發布新數據時,中間件就會將這些信息傳播給所有相關的訂閱者。
????????通信發生在不同域之間,即連接所有能夠相互通信的分布式應用程序的孤立抽象層面。只有屬于同一域的實體才能進行交互,而訂閱數據的實體與發布數據的實體之間的匹配由主題介導。主題是明確的標識符,它將在域中唯一的名稱與數據類型以及一組附加的特定于數據的服務質量(QoS)相關聯。
????????DDS實體被建模為類或類型化接口。后者意味著更高效的資源處理,因為在執行前了解數據類型可以提前分配內存,而不是動態分配。
????????DDS域內信息流動的概念圖。只有屬于同一域的實體才能通過匹配的主題發現彼此,從而在發布者和訂閱者之間交換數據。
3.FastDDS 的核心特性
1.極致的實時性與可靠性
- 低延遲設計:通過共享內存(Shared Memory)、UDPv4/v6 等輕量級傳輸協議,減少數據拷貝次數(如零拷貝優化),端到端延遲可低至?10-100 微秒(取決于傳輸方式)。
- 靈活的 QoS 策略:支持 20+ 種服務質量(Quality of Service)策略,按需平衡 “實時性” 與 “可靠性”,例如:
- 可靠性策略:可選擇 “可靠傳輸”(確保數據不丟失)或 “盡力而為傳輸”(追求低延遲,允許少量丟包)。
- ** Deadline/ Latency Budget**:保障數據在指定時間內到達(如自動駕駛的控制信號需在 50ms 內傳輸)。
- 歷史數據緩存:新加入的節點可自動獲取歷史數據(如機器人重啟后恢復之前的傳感器狀態)。
- 高吞吐量:支持批量數據傳輸(Batching)、流量控制(Flow Control),單節點吞吐量可達?10+ GB/s(共享內存場景)。
2.靈活性與擴展性
- 多傳輸協議支持:
- 單機低延遲:共享內存(Shared Memory)(適合同一設備內的進程間通信)。
- 跨設備 / 跨網絡:UDPv4/v6(實時性優先)、TCPv4/v6(可靠性優先,適合復雜網絡)。
- 廣域網絡:支持 VPN、5G 等網絡環境,可通過 “發現服務” 自動適配網絡拓撲。
- 動態拓撲適應:支持節點的 “動態加入 / 退出”,無需重啟系統即可擴展節點數量(如機器人集群新增傳感器節點)。
- 豐富的數據類型支持:基于?IDL(Interface Definition Language)?定義數據結構,支持基本類型(int、float 等)、復雜結構體、枚舉、數組等,自動生成跨語言(C++、Python、Java)的序列化 / 反序列化代碼。
3.安全性
FastDDS 完全支持?OMG DDS Security 規范,通過插件化方式提供端到端安全能力:
- 身份認證(Authentication):基于 PKI(公鑰基礎設施)驗證節點身份,防止非法節點接入。
- 數據加密(Encryption):使用 AES-256 等算法加密傳輸數據,防止竊聽。
- 訪問控制(Access Control):通過細粒度權限管理(如 “僅允許傳感器節點向控制節點發送數據”),防止未授權操作。
4.開源生態與工具鏈
- 配套工具:
- FastDDS Monitor:可視化監控工具,實時查看節點狀態、數據傳輸延遲、吞吐量等指標。
- FastDDS Gen:IDL 編譯器,自動生成數據類型的序列化代碼和 DDS 接口代碼。
- FastDDS Discovery Server:集中式 / 分布式發現服務,解決大規模集群(1000+ 節點)的節點發現效率問題。
- 生態集成:
- 是?ROS 2(機器人操作系統 2)?的默認 DDS 實現之一(另一個是 Cyclone DDS),完美支持 ROS 2 的節點通信。
- 支持與 Unity、Unreal Engine 等引擎集成,用于虛擬現實(VR)、仿真系統的實時數據傳輸。
4.FastDDS 的核心架構
FastDDS 遵循 DDS 標準的 “發布 - 訂閱(Publish-Subscribe)” 模型,核心組件可分為 5 層,自上而下分別是:
架構層級 | 核心組件 | 功能描述 |
---|---|---|
數據應用層 | User Application | 用戶業務邏輯(如機器人的傳感器數據采集、自動駕駛的控制算法)。 |
DDS 實體層 | DomainParticipant、Topic 等 | DDS 標準定義的核心實體,負責數據的發布 / 訂閱管理。 |
數據序列化層 | Serializer | 基于 IDL 定義,將數據結構序列化為二進制流(或反序列化),支持跨平臺兼容。 |
傳輸層 | Transport(UDP/TCP/ 共享內存) | 負責數據的物理傳輸,按需選擇傳輸協議。 |
發現與配置層 | Discovery、QoS Manager | 管理節點發現(如 “發布者如何找到訂閱者”)和 QoS 策略的生效。 |
其中,DDS 實體層是理解 FastDDS 工作流程的關鍵,核心實體包括:
- DomainParticipant(域參與者):節點的 “入口”,每個節點需創建一個 DomainParticipant 并加入指定 “域(Domain)”,只有同域的節點才能通信(實現邏輯隔離)。
- Topic(主題):數據的 “標簽”,發布者和訂閱者需通過相同的 Topic 匹配(如 “/robot/sensor/lidar” 表示激光雷達數據)。
- Publisher(發布者):數據的發送端,關聯一個或多個 DataWriter。
- Subscriber(訂閱者):數據的接收端,關聯一個或多個 DataReader。
- DataWriter(數據寫入器):將用戶數據寫入 DDS 系統,由 Publisher 管理。
- DataReader(數據讀取器):從 DDS 系統讀取數據,由 Subscriber 管理。
5.典型應用場景
FastDDS 的特性使其在實時、高可靠、分布式場景中具備不可替代的優勢,典型應用包括:
1.機器人領域
- 場景:機器人集群協作(如工業機械臂、服務機器人)、傳感器數據融合(激光雷達、攝像頭、IMU 數據實時共享)。
- 價值:通過共享內存實現單機內傳感器 - 控制器低延遲通信(微秒級),通過 UDP 實現多機器人跨設備協作(毫秒級延遲)。
2.自動駕駛
- 場景:車載系統內的 “感知 - 決策 - 控制” 數據傳輸(如攝像頭感知數據、毫米波雷達數據向決策模塊發送)、車路協同(V2X)中的實時信號交互。
- 價值:滿足自動駕駛對 “低延遲(<100ms)” 和 “高可靠性(數據零丟失)” 的嚴苛要求,支持 DDS Security 防止數據被篡改。
3.工業物聯網(IIoT)
- 場景:工業設備實時監控(如數控機床狀態、生產線傳感器數據)、邊緣計算節點與云端的數據同步。
- 價值:支持海量節點(1000+)的動態接入,通過 TCP 適應工業現場復雜網絡(如多路由器、高丟包環境)。
4.航空航天與國防
- 場景:無人機集群通信、衛星與地面站的實時數據傳輸、航空器內的分布式控制系統。
- 價值:符合航空級可靠性標準,支持高抗干擾傳輸和端到端加密,保障數據安全。
6.FastDDS 的安裝與快速上手
通信中間件 Fast DDS(一) :編譯、安裝和測試_fast dds 安裝-CSDN博客
7.學習資源與社區
- 官方文檔:FastDDS 官方手冊(最權威的入門與進階資料)。
- GitHub 倉庫:eProsima/Fast-DDS(源碼、Issue 討論、貢獻指南)。
- 社區論壇:eProsima Community(提問與技術交流)。
- ROS 2 集成文檔:ROS 2 與 DDS 配置(針對機器人開發者)。
綜上,FastDDS 憑借其高性能、開源免費、豐富的生態,已成為實時分布式系統(尤其是機器人、自動駕駛)的首選中間件之一。無論是個人開發者還是企業級項目,都可基于 FastDDS 快速構建可靠的實時數據傳輸方案。