ros2

ros2

ROS 2是用於構建機器人應用程式的一套軟體庫和工具集,是對ROS 1的改進和更新,旨在適應機器人領域的變化。ROS 1的最終版本Noetic於2025年5月終止支持,標誌著生態全面轉向ROS 2。

ROS 2採用完全分散式架構,以數據分發服務(DDS)為通信中間件,取消了主節點。它使用colcon作為構建工具,支持Python、XML和YAML格式的啟動檔案。ROS 2集成了DDS-Security規範以提供通信安全,支持Linux、Windows、macOS及實時作業系統等多種平台,適用於自動化工業、醫療健康、自動駕駛等生產環境。其版本採用動物代號,如Foxy、Galactic、Humble等,由Open Robotics主導維護並擁有活躍的開發者社區。

研發背景,發展歷程,核心技術,運營模式,核心團隊,重要事件,

研發背景

自2007年ROS啟動以來,機器人技術和社區發生了很大變化。ROS 2項目的目標就是適應這些變化,在保留ROS 1優點的同時改進其不足。
ROS 2是ROS 1的一次重大更新。ROS 2是與ROS 1獨立的項目,許多組件被重新設計和實現,旨在解決ROS 1的限制。ROS 1誕生於2007年,但其整體設計存在不足,缺乏安全性、實時性,魯棒性也不符合工業和具體的行業套用需求。
ROS 1設計初衷是用於機器人科研套用,而ROS 2則採用了更完善的架構,適合生產環境,可套用於自動化工業、醫療健康、自動駕駛等多個場景。其核心改進包括採用數據分發服務(DDS)作為通信中間件,實現了完全分散式、去中心化的架構,並支持Linux、Windows、macOS及實時作業系統(RTOS)等多種平台。從安全性、實時性、服務質量(QoS)和可擴展性來看,ROS 2在這些方面進行了改進。
ROS 1和ROS 2之間的一個主要區別在於,ROS 2具備了ROS 1所不具備的模擬功能,這使其能夠在動態環境中構建功能更完備的機器人。此外,ROS 2與ROS 1在通信協定、構建系統、參數管理等方面也存在顯著差異。例如,ROS 1使用XMLRPC+TCPROS,而ROS 2使用DDS;構建系統從Catkin變為colcon/ament;參數從全局伺服器變為每節點管理。
ROS 1的最後一個長期支持版本Noetic計畫於2025年停止支持,因此向ROS 2遷移是必然趨勢。

發展歷程

ROS 2遵循按年發布版本的周期,主要版本通常以動物名稱作為代號。其版本歷史可分為已結束生命周期、當前支持以及未來規劃的發行版。ROS 2的早期版本包括:Ardent Apalone(2017年12月)、Bouncy Bolson(2018年6月)、Crystal Clemmys(2018年12月)、Dashing Diademata(2019年5月31日)、Eloquent Elusor(2019年11月22日)。ROS 2 Rolling Ridley(代號“rolling”)於2020年6月發布。ROS 2 Foxy Fitzroy(代號“foxy”)於2020年6月5日發布。ROS 2 Galactic Geochelone(代號“galactic”)於2021年5月發布。ROS 2 Humble Hawksbill(代號“humble”)於2022年5月發布,並被認定為長期支持版本(LTS)。當前支持的發行版還包括:Rolling Ridley(滾動發行版,2020年6月發布)和Jazzy Jalisco(2024年5月發布,支持至2029年)。ROS 2 Kilted Kaiju(代號“kilted”)於2025年5月發布。根據官方路線圖,未來規劃的發行版包括Lyrical Luth(預計2026年5月發布)。

核心技術

ROS 2採用完全分散式架構,取消了ROS 1中的主節點,節點間通過自動發現機制直接通信,提高了系統的魯棒性和部署靈活性。
ROS 2支持話題、服務、動作(動作專為長時間運行的任務設計,通信過程由目標、反饋和結果三部分組成)和參數四種核心通信機制,其中服務模型改進為異步設計,解決了ROS 1中同步服務導致客戶端阻塞的問題。
ROS 2採用Data Distribution Service作為底層通信中間件,通過ROS Middleware Interface層進行抽象,支持多種DDS實現(如Fast-DDS、Cyclone DDS等),並通過服務質量策略保證實時通信。
ROS 2提供豐富的服務質量策略,允許開發者調整通信行為,例如感測器數據流通常使用“盡力而為”的可靠性策略,而控制指令等關鍵數據使用“可靠”的可靠性策略。
ROS 2集成了DDS-Security規範,提供基於策略的通信加密、身份驗證和訪問控制,引入了安全區域的概念,並通過環境變數如進行配置,同時提供了命令行工具用於安全管理。此外,ROS 2還支持安全日誌功能,可通過環境變數(如ROS_SECURITY_LOG_FILE)配置,將安全事件記錄到檔案或通過DDS發布。
ROS 2採用分層軟體棧設計,底層為C語言編寫的rcl庫,上層提供rclcpp(C++)和rclpy(Python)等統一API的客戶端庫,支持現代C++標準和Python 3。
ROS 2使用colcon作為核心構建工具,替代了ROS 1的catkin,同時使用ament作為構建工具輔助函式集合。
ROS 2支持Python、XML和YAML三種格式的啟動檔案,用於配置和啟動複雜的節點系統。

運營模式

ROS 2擁有活躍的全球開發者社區,提供了多樣化的社區交流與支持渠道,包括官方的Zulip頻道、Robotics Stack Exchange問答網站以及ROS Discourse論壇。ROS 1的最終版本Noetic計畫於2025年停止支持,ROS 2社區提供了遷移支持以幫助用戶過渡。ROS 2生態積極與商業公司展開合作,例如RTI公司推出了Connext 6 ROS Middleware Wrapper (RMW) Layer。項目的文檔與教程持續更新,官方鼓勵社區成員貢獻教程和指南。

核心團隊

Open Robotics是ROS 2項目的主要維護和推動者。RTI公司作為數據分發服務(DDS)相關軟體的供應商,為ROS 2提供基礎互連架構。高通公司發布的機器人平台支持ROS 2.0。
ROS 2技術指導委員會(TSC)是項目的技術決策機構,負責技術方向、路線圖和開發者政策等。TSC成員包括創始贊助商Open Robotics,以及Apex.AI、Intel、Microsoft、Samsung、Sony、Toyota Research Institute等組織的代表。社區代表通過公開選舉產生,任期兩年。TSC下設多個工作組,專注於客戶端庫、導航、操縱、安全等技術領域。

重要事件

2020年6月5日,ROS 2 Foxy Fitzroy(代號“foxy”)作為長期支持(LTS)版本發布,並首次引入了增強的安全監控功能(安全日誌)以及ROS 2漏洞披露政策(REP 2006)。2020年6月,高通公司發布全球首個支持5G和AI的機器人平台,該平台支持ROS 2。2020年11月,RTI公司在ROS World大會上宣布推出Connext 6 ROS Middleware Wrapper (RMW) Layer,增強了ROS 2的生產級工具鏈支持,並提供了更好的系統級可視化和調試能力。
2021年5月,ROS 2 Galactic Geochelone(代號“galactic”)版本發布。2022年5月,ROS 2 Humble Hawksbill(代號“humble”)版本發布,成為最新的長期支持版本。2024年5月,ROS 2 Jazzy Jalisco(代號“jazzy”)版本發布。2025年5月,ROS 1的最終版本Noetic Ninjemys正式終止支持,標誌著ROS生態全面轉向ROS 2。2025年5月,ROS 2 Kilted Kaiju(代號“kilted”)版本發布。2026年1月,米爾宣布成功將完整的Ubuntu 22.04與ROS 2 Humble生態系統移植到國產RK3576晶片開發板上,並驗證了包括話題通信、rqt_graph、Turtlesim、RVIZ2三維可視化在內的完整功能,在2K解析度下運行流暢,驗證了ROS 2在國產硬體平台上的完整運行能力。2026年3月10日,開源硬體提供商Arduino宣布推出搭載高通躍龍IQ-8系列的Arduino VENTUNO Q平台,該平台專為生成式AI、機器人及執行技術打造,並內置支持面向ROS 2就緒的工作流程及機器人用例。
根據官方路線圖,ROS 2 Lyrical Luth(代號“lyrical”)計畫於2026年5月發布。
此外,ROS 2還發布了其他版本,包括已結束支持的Ardent Apalone (2017年12月)、Bouncy Bolson (2018年6月)、Crystal Clemmys (2018年12月)、Dashing Diademata (2019年5月)、Eloquent Elusor (2019年11月),以及持續更新的Rolling Ridley版本。

相關詞條

熱門詞條

聯絡我們