ROS1 vs ROS2:從通訊架構到即時性,技術本質到底差在哪
2026-08-30
表面上是同一套框架,底層是完全不同的通訊哲學
ROS2 常被介紹成「ROS1 的升級版」,但如果只看成 API 名稱換了一些寫法、多了幾個新功能,會低估兩者之間真正的差異——ROS2 的核心通訊架構是徹底重新設計的,這個差異不是表面的版本迭代,而是解決了 ROS1 在設計之初就沒有考慮到的一整類問題:多機器人協作、不穩定網路環境下的可靠通訊、以及工業與商用部署對即時性與安全性的要求。理解這個底層差異,比記住 API 名稱怎麼從 rospy 換成 rclpy 更能幫助判斷什麼場景該用哪一個版本。
通訊架構:中心化 Master vs 去中心化 DDS
ROS1 的通訊建立在一個中心化的 ROS Master 節點上——所有節點啟動時都要先跟 Master 註冊自己發布或訂閱的主題,節點之間要通訊,必須先透過 Master 完成「配對」(node discovery),配對完成後才會建立點對點的直接連線做實際資料傳輸。這個架構簡單直觀、容易除錯(rosnode list、rostopic list 這類指令都是直接問 Master),但也帶來一個結構性弱點:Master 是單點故障——一旦 Master 行程當掉,即使既有的點對點連線可能還能運作一小段時間,任何新節點都無法加入系統,也無法建立任何新的訂閱配對關係。
ROS2 放棄了中心化 Master,改用 DDS(Data Distribution Service,工業界既有的即時發布訂閱通訊標準)作為底層通訊層。DDS 本身就是去中心化設計——節點透過網路上的探索協定(discovery protocol)互相廣播自己的存在與可提供/需要的資料介面,不需要依賴任何單一中心節點居中協調。這個改變直接消除了 ROS1 架構裡的單點故障風險,也是 ROS2 能原生支援多機器人系統(每台機器人各自運行自己的節點群,彼此透過 DDS 探索協定自動互聯,不需要指定某一台機器人的 Master 當作全網路的協調中樞)的架構基礎,這跟本站在多機器人系統一文中討論的協作場景直接相關。
QoS:ROS1 完全沒有原生方案的可靠度分級
ROS1 的主題通訊,本質上只有一套固定的傳輸行為——所有訊息都盡力傳送,沒有內建機制讓開發者針對不同資料類型調整可靠度與延遲的取捨。實務上這造成一個現實問題:像雷射雷達掃描資料這種高頻率、可以容忍偶爾漏收(反正下一次掃描很快又來)的資料,跟像緊急停止指令這種絕對不能漏收的資料,在 ROS1 裡走的是同一套沒有差異化的傳輸機制,如果要做可靠度分級,只能在應用層自己額外加上重傳確認邏輯,等於是重新發明 DDS 本來就內建的功能。
ROS2 直接把 DDS 的 QoS(Quality of Service) 策略體系搬進了通訊層——同一個系統裡,不同的主題可以各自設定不同的可靠度(Reliable 保證送達、Best Effort 允許漏失換取更低延遲)、歷史保留策略(只保留最新一筆、還是保留一段佇列深度)、以及存活時間等參數。這讓一套系統可以同時滿足「感測器串流要低延遲、允許偶爾漏收」跟「控制指令必須保證送達」這兩種互相衝突的需求,不需要為了遷就其中一種需求犧牲另一種,這也是本站在 QoS 完整解析 詞條中詳細討論的機制,是 ROS2 相對 ROS1 在通訊層最直接可感受到的實務差異。
即時性與工業部署:生命週期節點的意義
ROS1 的節點沒有標準化的狀態管理機制——一個節點啟動之後就直接進入運行狀態,沒有內建的「已配置但尚未啟動」「已啟動但暫停」這類中介狀態,這對單一實驗室的研究原型不成問題,但對工業產線這種需要嚴謹啟動順序、且必須能在特定條件下優雅暫停或重啟個別模組而不中斷整個系統的場景,就是明顯的限制。
ROS2 引入的 生命週期節點(Lifecycle Node,詳見生命週期節點)提供了一套標準化的狀態機(unconfigured、inactive、active、finalized),讓系統可以精確控制每個節點的啟動時序與運行狀態轉換,這對本站在 micro-ROS 即時系統 與 ROS2 安全機制 SROS2 文章中討論過的工業與嵌入式部署場景尤其關鍵——工廠產線的機器人系統往往需要協調數十個節點依特定順序啟動、且要能在異常發生時安全地暫停個別模組而不影響其他仍在運行的子系統,這種精細的生命週期管理需求,在 ROS1 裡完全沒有標準化方案,只能靠開發者各自土法煉鋼。
該怎麼看待這個技術世代交替
ROS1 到 ROS2 的轉變,本質上是機器人軟體從「服務單一實驗室原型驗證」的工具,演進成「服務多機協作、工業部署、需要安全與即時性保證」的通訊基礎設施的必然結果——這些需求在 ROS1 設計之初的機器人研究場景裡並不突出,但隨著機器人技術從實驗室走向真實商業部署(本站報導過的大量倉儲機器人車隊、工廠 AMR 部署案例都是多機協作場景),ROS1 的架構限制逐漸從「無傷大雅的簡化」變成「結構性瓶頸」,這也是為什麼即使遷移成本不低,整個機器人產業與研究社群仍然全面轉向 ROS2 作為新專案的預設起點。
- ros2
- ros1
- dds
- qos
- real-time