通信中間件 Fast DDS(二) :詳細介紹

目錄

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 快速構建可靠的實時數據傳輸方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94963.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94963.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94963.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【69頁PPT】智慧方案智慧校園解決方案(附下載方式)

篇幅所限&#xff0c;本文只提供部分資料內容&#xff0c;完整資料請看下面鏈接 https://download.csdn.net/download/2501_92808811/91776074 資料解讀&#xff1a;【69頁PPT】智慧方案智慧校園解決方案 詳細資料請看本解讀文章的最后內容 智慧校園的概念與背景 智慧校園是…

FPGA的工作原理

FPGA&#xff08;現場可編程門陣列&#xff09;的核心工作原理是通過可配置的硬件架構&#xff0c;讓用戶在芯片出廠后自主定義電路邏輯&#xff0c;實現從“通用硬件”到“專用硬件”的靈活轉換&#xff0c;本質是用可編程資源搭建出符合特定需求的數字電路。一、核心架構&…

構建生產級RAG系統:從數據處理到智能體的全流程實踐

構建生產級RAG系統&#xff1a;從數據處理到智能體的全流程實踐 檢索增強生成&#xff08;RAG&#xff09;技術已成為打造高級知識問答系統的核心&#xff0c;但從原型到穩定高效的生產級系統&#xff0c;需突破數據處理、檢索優化、智能決策等多重挑戰。本文以某型號工業設備…

Java-代理

在 Java 開發中&#xff0c;代理模式是一種非常重要的設計模式&#xff0c;它通過引入代理對象來控制對目標對象的訪問&#xff0c;從而實現額外功能的增強。一、代理模式的基本概念代理模式的核心思想是&#xff1a;通過一個代理對象來間接訪問目標對象&#xff0c;在不修改目…

【基礎知識】互斥鎖、讀寫鎖、自旋鎖的區別

從定義、工作原理、適用場景和性能開銷四個維度來剖析這三種鎖的區別 核心結論 這三種鎖的核心區別在于它們應對“鎖已被占用”情況時的行為策略不同,而這直接決定了它們的性能和適用場景。 鎖類型 核心策略 適用場景 互斥鎖 (Mutex) 等不到,就睡 通用的獨占訪問,臨界區執行…

智慧清潔革新者:有鹿機器人自述

晨曦微露&#xff0c;當城市還未完全蘇醒&#xff0c;我已悄然完成數萬平方米的清潔工作。作為有鹿智能巡掃機器人&#xff0c;我很榮幸能與您分享如何以科技之力重塑清潔行業的標準與體驗。卓越技術&#xff1a;重新定義清潔新標準我搭載的聰明大腦是基于Master2000通用具身智…

python學習打卡day48

知識點回顧&#xff1a; 隨機張量的生成&#xff1a;torch.randn函數卷積和池化的計算公式&#xff08;可以不掌握&#xff0c;會自動計算的&#xff09;pytorch的廣播機制&#xff1a;加法和乘法的廣播機制 ps&#xff1a;numpy運算也有類似的廣播機制&#xff0c;基本一致 im…

記一次雪花算法 ID 精度丟失的Bug:前端接收到的 Long 被“四舍五入”了?

后端生成的 ID&#xff1a;1961005746230337538 前端收到的 ID&#xff1a;1961005746230337500 —— 少了 38&#xff1f;&#xff01;這不是 Bug&#xff0c;是 JavaScript 的“安全整數”陷阱&#xff01;本文記錄一次真實項目中因 雪花算法 ID 精度丟失 導致的線上問題&…

零知開源——基于STM32F407VET6和ADXL345三軸加速度計的精準運動姿態檢測系統

?零知IDE 是一個真正屬于國人自己的開源軟件平臺&#xff0c;在開發效率上超越了Arduino平臺并且更加容易上手&#xff0c;大大降低了開發難度。零知開源在軟件方面提供了完整的學習教程和豐富示例代碼&#xff0c;讓不懂程序的工程師也能非常輕而易舉的搭建電路來創作產品&am…

Android14 init.qcom.usb.rc詳解

本文以高通平臺為例&#xff0c;介紹其USB子系統啟動以及USB各種配置動態切換的邏輯&#xff0c;它是以configfs架構實現動態配置USB。 相關文檔 1. USB子系統的啟動 1.1 on boot階段 1.1.1 重啟恢復用戶選擇的USB配置 當設備重啟時恢復用戶選擇的USB配置&#xff0c;避免每…

Docker的常用命令及簡單使用

1、docker的常用命令 1.1、幫助命令 docker version # 顯示docker的版本信息 docker info # 顯示docker的系統信息&#xff0c;包括鏡像和容器的數量 docker 指令 --help # 查看某個指令的幫助命令可以通過docker --help查看docker常用命…

HGDB全文檢索/中文分詞的使用

文章目錄文檔用途詳細信息文檔用途 本文用于HGDB全文檢索/中文分詞的介紹&#xff0c;其介紹內容在附件&#xff0c;使用案例見正文 詳細信息 一、創建擴展 highgo# create extension zhparser;CREATE EXTENSION highgo# \dFp List of text search parsers Schema…

baijian xiaomaodawang

我將為你創建一個基于Go 1.20.8和Gin框架的博客系統項目。以下是完整的實現方案&#xff1a; 項目創建流程 打開Goland&#xff0c;創建新項目選擇Go項目&#xff0c;設置GOROOT為Go 1.20.8項目名稱&#xff1a;blog-system啟用Go Modules 項目結構 blog-system/ ├── cmd/ │…

Node.js的特性

Node.js的特性 Node.js具有幾個顯著特性&#xff1a; 事件驅動&#xff1a;Node.js采用事件驅動機制來處理請求和響應&#xff0c;這種機制可以幫助開發者處理大量并發請求&#xff0c;提高系統的性能和可靠性。 非阻塞I/O&#xff1a;Node.js使用異步I/O原語來實現非阻塞I/O操…

交叉編譯linux-arm32位程序

目標平臺rv1126 芯片 arm32位架構 在ubuntu22.04上交叉編譯&#xff1a; 編譯器下載地址&#xff1a; Linaro Releases 或者&#xff1a; wget http://releases.linaro.org/components/toolchain/binaries/6.4-2017.11/arm-linux-gnueabihf/gcc-linaro-6.4.1-2017.11-x86_6…

S 3.1深度學習--卷積神經網絡

卷積層 圖像原理 卷積神經網絡&#xff08;Convolutional Neural Network, CNN&#xff09; 圖像在計算機中是一堆按順序排列的數字&#xff0c;數值為 0 到 255。0 表示最暗&#xff0c;255 表示最亮。 圖像識別 上圖是只有黑白顏色的灰度圖&#xff0c;而更普遍的圖片表達…

【7】SQL 語句基礎應用

SQL 語句基礎應用where (篩選)where 子句可使用到運算符查詢表中所有的數據查詢表中的數據&#xff0c;必須滿足 11&#xff08;相當于恒成立&#xff09;查詢表中的 分數(score) 大于 80 分的學生查詢表中 名稱(name) 是 趙六 的數據查詢表中 名稱(name) 不等于 哈哈 的數據.查…

android 嵌套webview 全屏展示 頁面延伸到狀態欄且不被底部導航欄遮擋

我的項目是使用webview嵌套了一個uniapp打包出的h5 本來展示很正常&#xff0c;某天突然發現uniapp的底部導航被手機底部的導航欄擋住了&#xff0c;離奇&#xff0c;某天突然出現的 有些手機會設置展示底部導航按鈕&#xff0c;有些手機會關閉底部導航 以下代碼對這兩種情況通…

【大前端】React Native 調用 Android、iOS 原生能力封裝

&#x1f4d6; React Native 調用 Android、iOS 原生能力封裝 1. 原理 React Native 的 核心思想&#xff1a;JS 層&#xff08;React 代碼&#xff09;不能直接調用 Android/iOS 的 API。RN 提供了 Native Module 機制&#xff1a; Android&#xff1a;Java/Kotlin → 繼承 Re…

HOOK安卓木馬重大升級,勒索功能擴展至107項

勒索覆蓋屏成新特征網絡安全研究人員發現名為HOOK的安卓銀行木馬新變種&#xff0c;該惡意軟件新增勒索軟件式覆蓋屏功能用于顯示勒索信息。Zimperium zLabs研究員Vishnu Pratapagiri表示&#xff1a;"最新變種的顯著特征是能夠部署全屏勒索覆蓋界面&#xff0c;旨在脅迫受…