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 中間件,實現了無中央節點的架構,所有節點都具備平等的地位,節點之間可以透過發現機制直接進行通訊。
- 由於去中心化,不論一個節點崩潰,也不會影響其他節點的通訊,大大提高了系統的可靠性。
- DDS 提供了豐富的QoS (Quality of Service) 策略,讓使用者可以根據不同網路環境和需求,客製化訊息傳輸的行為,例如設定訊息的優先級、可靠性、截止時間等,滿足即時工業應用場景。
- ROS 2 透過一個中間層抽象,可以支援不同的DDS 實作(如eProsima Fast RTPS、Cyclone DDS 等),讓使用者能根據自身需求選擇合適的DDS 進行開發。
總結
- ROS 1 使用roscore 作為中央控制器,: 而 ROS 2 使用DDS 作為底層的即時通訊中間件。
- DDS 的去中心化架構解決了ROS 1 中roscore 單點故障的問題,並提供了更佳的即時性、靈活性和可靠性,使ROS 2 更適合用於要求高效能和可靠性的工業級應用
沒有留言:
張貼留言