ROS 教學系列(二)-認識 Robot Operating System 2(ROS 2)

ROS 教學系列(二)-認識 Robot Operating System 2(ROS 2)

還沒閱讀上一篇文章「ROS 教學系列(一)-認識 Robot Operating System (ROS)」的夥伴們,建議大家可以先閱讀唷!

本篇文章就要帶大家一起學習 Robot Operating System 2(ROS 2) 到底是什麼?現在就跟著我們一起進入 ROS 2 的世界吧!

一、 ROS 2 的設計目的

ROS 2 的出現是為了要改進 ROS 1 的侷限性,它具有以下五個特點:

1. 支援多機器人系統的開發與應用

ROS 2 增加了對多機器人系統的支援,進而提升了多機器人之間通訊的網路效能,更詳細的介紹可參考「ROS 2 的關鍵中介軟體」說明。

2. 跨系統平台的支援

在 ROS 1 中,系統的設計高度依賴 Ubuntu 系統。而 ROS 2 改善了這一項侷限,在 WindowsmacOS、RTOS 等經常使用的作業系統上也有更多的支援,這讓機器人開發者擁有更多選擇的空間。

3. 支援即時控制

ROS 2 也能夠支援即時控制,這項功能可以提高對於機器人控制的時效性與機器人整體性能。更多詳細的資訊可以參考 ROS 官方網站

4. 降低原型設計至實際產品的過渡時期

ROS 1 最初是以研究目的所開發的系統,而 ROS 2 在設計上增加了應用方面的支援,大幅降低機器人從研究開發到實際應用的過渡時期,讓更多機器人能夠直接搭載 ROS 2 投入市場。

5. 微控制器的支援

ROS 2 不僅可在現有的 x86 或 ARM 架構上實現,還可以支援微控制器(Microcontroller Unit,MCU),更多詳細的資訊可以參考 micro-ros 官網。

二、ROS 2 的系統架構

ROS 2 在系統的架構上,有更明確的分層設計,這讓 ROS 2 更能夠部署在各式各樣的平台上,改善了 ROS 1 對部份系統或通訊方式擁有高度依賴的缺點,如下圖所示:

ROS 教學系列(二)-認識 Robot Operating System 2(ROS 2)

接下來我們將從系統層至應用層往上逐步介紹每一層的設計:

1. 系統層(Operating System Layer)

ROS 2 支持的作業系統包括 Linux、Windows、macOS、RTOS 等常見的作業系統,但卻又不僅限於此;若有需要,也能夠設計在沒有作業系統的機器上。

2. 中介軟體層(Middleware Layer)

ROS 1 中最重要的概念「節點(node)」,是一個可以讓開發者進行低耦合(low coupling)設計與公開發行的功能模組,並且能夠方便地進行二次開發。

ROS 2 也擁有同樣的特點,並且在通訊系統上採用「資料分散式服務」 (Data Distribution Service,DDS),這是一種分散式即時系統中,資料發佈與訂閱的標準解決方案,更多的介紹可參照「ROS 2 的關鍵中介軟體」。ROS 2 提供了 DDS 的抽象層,這表示開發者不需要花費太多時間在找尋提供資料分布服務的廠商。

3. 應用層(Application Layer)

在 ROS 2 中,節點之間使用分散式發現機制(distributed discovery process)進行連結。這項機制讓 ROS 2 中的節點不再需要依賴一個主要節點(Master Node)進行連結,意謂著即使系統中的主要機器失去連線,其餘的機器人仍能夠正常運作。

三、ROS 2 的關鍵中介軟體– 資料分散式服務(Data Distribution Service,DDS)

DDS 是一種專門為即時系統設計的資料分布與訂閱標準,並且在 2004 年由國際協會—目標管理組織(Object Management Group)發佈第一代版本。

DDS 最早被應用在美國海軍的艦艇上,是為了解決艦艇複雜網路中大量軟體升級的兼容性問題,而現在已成為美國國防部的強制性標準,其關鍵技術在於以資料為核心的發佈與訂閱模型(Data-Centric Publish-Subscribe)。

這種模型建立一個「全局資料空間(Global Data Space)」的概念,可以看作是應用程式透過相關的應用程式介面(Application Programming Interface, API),獲取機器本地端的記憶體資訊。現在市面上已有多家廠商提供 DDS 的相關技術,包括可以供給 ROS 2 使用的開源版本與商業版本,相關資訊如下圖所示( 僅列出部分廠商):

ROS 教學系列(二)-認識 Robot Operating System 2(ROS 2)
ROS 教學系列(二)-認識 Robot Operating System 2(ROS 2)

四、ROS 2 的通訊架構

ROS 2 的通訊是建構在 ROS 1 的基礎上,也就是主題(Topic)、服務(Service)、動作(Action)等通訊機制。較為不同的是,因為 ROS 2 採用了 DDS 作為通訊標準,因此也新增了一些 DDS 的通訊機制,接下來將以下圖所示的 ROS 2 通訊架構來說明:

ROS 教學系列(二)-認識 Robot Operating System 2(ROS 2)

1. 參與者(Participant)

在 DDS 的架構中,每一個發佈者(Publisher)或訂閱者(Subscriber)都被稱為參與者,以機器人之間的通訊來看,可以想像每台使用 DDS 的機器都是以參與者的方式存在。對於使用 DDS 的機器來說,彼此之間都可以依照定義好的資料類型進行「讀/寫」。

2. 發佈者(Publisher)

資料發佈的執行者,能夠發佈多種類型的資料,可以與多個資料寫入器(Data Writer)相連,發佈一種或多種 Topic 的訊息。

3. 訂閱者(Subscriber)

資料訂閱的執行者,能夠訂閱多種類型的資料,可以與多個資料讀取器(Data Reader)相連,訂閱一種或多種 Topic 的訊息。

4. 資料寫入器(Data Writer)

在應用層中,向發佈者更新資料的存在,每個資料寫入器對應一個指定的 Topic。

5. 資料讀取器(Data Reader)

在應用層中,從訂閱者讀取資料的存在,每個資料讀取器對應一個指定的 Topic。

6. 主題(Topic)

Topic 需要定義一個名稱與一種資料結構,而在 ROS 2 中每個主題皆為一個實例,可以用來儲存該 Topic 中的歷史訊息。

7. 服務品質原則(Quality of Service Policy)

這是在 ROS 2 中一個非常重要的概念,是用來控制各種不同面向與底層之間的通訊機制。主要從歷史紀錄、持續性、可靠性、耐用性、深度等多種面向滿足使用者對於不同場景的資料使用需求,後續內容將以 QOS 簡稱服務品質原則。

五、小結

閱讀完上述關於 ROS 2 的內容後,各位夥伴是不是對 ROS 2 有更清楚的瞭解了呢?「ROS 教學系列」下一篇文章要為大家介紹 ROS 1(Robot Operating System)與 ROS 2(Robot Operating System 2)的差異喔!

喜歡我們文章的夥伴們,別忘了幫我們多多分享,並且持續關注我們喔!