ROS 2正式版來了,到底有哪些新變化?
2017.12.09,機器人開源操作系統軟體ROS 2終於推出首個正式版,新版本命名為「Ardent Apalone」,代號「ardent」。
查了一下,中文意思為「熱心的美洲鱉」,不知ROS2是不是要從ROS1的「海龜」系列換成「土鱉」系列了,ORZ。
如果你只想用最短時間了解有哪些關鍵的新特性,只看下一段就OK了。
1.ROS2全面支持三種平台
?Ubuntu 16.04(Xenial)?Mac OS X 10.12(Sierra)
?Windows 102.實現了分散式架構取消Master中央節點,實現節點的分散式發現,發布/訂閱,請求/響應通3.支持實時4.使用新版本的編程語言 ?ROS 2廣泛使用C ++ 11。而ROS 1的核心主要使用C ++ 03,在其API並沒有使用C++ 11功能。 ?ROS 2的Python版本至少為3.5,ROS 1的Python版本為2.75.使用了新的編譯系統Ament(ROS為Catkin)6.ROS1可以通過rosbridge和ROS 2通信
接下來進行詳細介紹:
關於ROS2的起源、前世今生可參考我一年前寫的一篇文章,在此不過多重複。
ROS和ROS2.0現在到底該學習哪個呢?
https://zhuanlan.zhihu.com/p/24391444
ROS 1和ROS 2之間變化
1. 系統架構
上圖所示是ROS 2與ROS 1整體架構的對比:
ROS 1主要構建於Linux系統之上,主要支持Ubuntu。而ROS 2採用全新的架構,底層基於DDS通信機制,支持實時性、嵌入式、分散式、多操作系統。ROS 2支持的系統包括Linux、windows、Mac、RTOS,甚至是單片機等沒有操作系統的裸機。
ROS 1的通訊系統基於TCPROS/UDPROS,強依賴於master節點的處理,而ROS 2的通訊系統是基於DDS,進而取消了master,同時在ROS2內部提供了DDS的抽象層實現,有了這個抽象層,用戶就可以不去關注底層的DDS使用了哪個商家的API。
ROS 2目前已經在Ubuntu Xenial,OS X El Capitan以及Windows 10上進行了CI測試和支持(參閱http://ci.ros2.org)。
2. 編程語言
C ++標準
ROS 1的核心是針對C ++ 03,並沒有在其API中使用C ++ 11功能。ROS 2廣泛使用C ++ 11,並使用C ++ 14的某些部分。在未來,ROS 2可能會開始使用C ++ 17。
python
ROS 1是針對Python 2,ROS 2至少需要Python 3.5版本。
3. 編譯系統
ROS編譯系統從初期使用的rosbuild,到groovy版本之後的catkin,再到ROS2中的ament
雖然編譯系統並不是ROS框架中的核心部分,但卻是開發者最常接觸的一個重要功能。
ROS 2新的編譯系統ament是一種元編譯系統,用來構建組成應用程序的多個獨立功能包,它並不是一個全新的東西,是catkin編譯系統進一步演化的版本,而這兩個單詞也是近義詞。查了一下,catkin和ament的意思為柔荑花序(柳絮),而ROS最早起源於柳樹車庫公司。
ROS 2只支持隔離的構建
在ROS 1中,可以在單個CMake上下文中構建多個包。雖然這加快了構建步驟,但是每個包都需要確保正確定義了交叉包目標依賴關係。另外所有的軟體包共享相同的命名空間,導致目標名稱衝突等。
在ROS 2中,只支持隔離的構建,即每個包都是獨立構建的。安裝空間可以是隔離的或合併的。
取消了開發空間
在ROS 1中,可以在不安裝包的情況下構建包。
在ROS 2中,必須先安裝一個軟體包,然後才能使用它。
ROS 1中使用開發空間的一個原因是為了使開發人員能夠更改文件,例如Python代碼或啟動文件,並直接使用修改後的代碼,而無需重新編譯軟體包。在ROS 2中保留了這一好處,可選擇使用符號鏈接替換安裝步驟中的複製操作。
4. 消息、服務介面
ROS 2使用了新的介面。有關更多信息,請參閱ROS介面定義文章。
如果現在就想動手開發,可參閱「古月居」的相關教程。
下一個版本
ROS 2 目前還在積極的開發完善中之中。下一個正式版本將在2018年夏天發布。屆時會繼續有一些出現新特性,例如將會進一步完善C++和Python的API,開發通用構建工具,發布Windows和Mac OS軟體包,使用FastRTPS增強實時安全等。
期待更好,更強大的ROS 2 土鱉出現!
參考文獻:
https://github.com/ros2/ros2/wiki/Release-Ardent-Apalone
https://github.com/ros2/ros2/wiki/Features
https://github.com/ros2/ros2/wiki/Roadmap
http://design.ros2.org/articles/changes.html
古月居 http://www.guyuehome.com/
開始學習機器人-知乎專欄https://zhuanlan.zhihu.com/p/24391444
推薦閱讀:
※ROS機器人操作系統相關書籍、資料和學習路徑
※【ROS十周年快樂!】Science Robotics封面文章:ROS助力全世界機器人!
TAG:机器人操作平台ROS |