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 探索機制依賴的底層網路能力。

延伸閱讀