DDS(Data Distribution Service)
定義
DDS(Data Distribution Service)是 ROS2 底層採用的去中心化通訊中介軟體標準,負責節點探索(發現彼此存在)、序列化、實際的訊息傳輸,取代了 ROS1 時代所有通訊都要透過單一 roscore Master 節點協調的架構。
關鍵特性
- 去中心化:沒有單點故障——ROS1 的 Master 一旦掛掉整個系統通訊就中斷,DDS 底下的節點各自獨立探索彼此,沒有這種單點依賴。
- QoS 是 DDS 帶來的能力:Reliability、Durability 等 QoS 設定,本質上是 DDS 規範定義的通訊政策,ROS2 只是把這些能力包裝成
rclpy/rclcpp裡好用的 API。 - 可替換的實作:ROS2 不綁定單一 DDS 廠商實作,系統可以在多種相容的 DDS 實作之間切換(透過
RMW_IMPLEMENTATION環境變數),這是 ROS2 架構上刻意留出的彈性。
使用情境
- 理解「為什麼 ROS2 不需要像 ROS1 一樣先啟動一個 Master」,答案就是 DDS 的去中心化探索機制。
- 排查多機互連問題時,常需要確認多播(multicast)封包是否能在網路環境裡正常傳遞,這正是 DDS 探索機制依賴的底層網路能力。