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 10

2.實現了分散式架構

取消Master中央節點,實現節點的分散式發現,發布/訂閱,請求/響應通

3.支持實時

4.使用新版本的編程語言

?ROS 2廣泛使用C ++ 11。而ROS 1的核心主要使用C ++ 03,在其API並沒有使用C++ 11功能。

?ROS 2的Python版本至少為3.5,ROS 1的Python版本為2.7

5.使用了新的編譯系統Ament(ROS為Catkin)

6.ROS1可以通過rosbridge和ROS 2通信

接下來進行詳細介紹:

關於ROS2的起源、前世今生可參考我一年前寫的一篇文章,在此不過多重複。

ROS和ROS2.0現在到底該學習哪個呢?

zhuanlan.zhihu.com/p/24

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測試和支持(參閱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 土鱉出現!

參考文獻:

github.com/ros2/ros2/wi

github.com/ros2/ros2/wi

github.com/ros2/ros2/wi

design.ros2.org/article

古月居 guyuehome.com/

開始學習機器人-知乎專欄zhuanlan.zhihu.com/p/24


推薦閱讀:

ROS機器人操作系統相關書籍、資料和學習路徑
【ROS十周年快樂!】Science Robotics封面文章:ROS助力全世界機器人!

TAG:机器人操作平台ROS |