2025年9月30日 星期二

ROS2 DDS vs ROS1 roscore 通訊架構

 ROS 2 的 DDS (Data Distribution Service) 是一種去中心化的即時通訊中間件,取代了ROS 1 中依賴中央roscore 進行節點註冊、訊息管理等任務的設計。 DDS 讓ROS 2 系統的節點關係更平等,無單點故障,提供了更佳的可靠性、即時性(透過QoS 設定)和彈性,適合工業級應用,而roscore 則是ROS 1 中負責協調的中央節點。 

roscore (ROS 1)
  • 中央協調節點: 
    roscore 是ROS 1 的核心,扮演著中央伺服器的角色,負責所有節點之間的通訊協調、註冊、話題和服務的列表管理等。 
  • 單點故障: 
    系統高度依賴於roscore,一旦roscore 發生問題,整個系統的通訊就會中斷,形成一個單點故障。 
  • 通訊機制: 
    採用基於TCP/IP 的自定義通訊機制,依賴於roscore 來維持節點間的連線。 
DDS (ROS 2)
  • 去中心化架構: 
    ROS 2 透過DDS 中間件,實現了無中央節點的架構,所有節點都具備平等的地位,節點之間可以透過發現機制直接進行通訊。 
  • 高可靠性與彈性: 
    由於去中心化,不論一個節點崩潰,也不會影響其他節點的通訊,大大提高了系統的可靠性。 
  • 即時性與QoS: 
    DDS 提供了豐富的QoS (Quality of Service) 策略,讓使用者可以根據不同網路環境和需求,客製化訊息傳輸的行為,例如設定訊息的優先級、可靠性、截止時間等,滿足即時工業應用場景。 
  • 支援多種DDS 實作: 
    ROS 2 透過一個中間層抽象,可以支援不同的DDS 實作(如eProsima Fast RTPS、Cyclone DDS 等),讓使用者能根據自身需求選擇合適的DDS 進行開發。 
總結
  • ROS 1 使用roscore 作為中央控制器,: 而 ROS 2 使用DDS 作為底層的即時通訊中間件。 
  • DDS 的去中心化架構解決了ROS 1 中roscore 單點故障的問題,並提供了更佳的即時性、靈活性和可靠性,使ROS 2 更適合用於要求高效能和可靠性的工業級應用

沒有留言:

張貼留言