ROS 教學系列(四)-如何安裝 ROS 2?

ROS 教學系列(四)-如何安裝 ROS 2?

ROS 教學系列(一)~(三)文章中,我們分別認識了 ROS 1 與 ROS 2,並且也了解兩者的差異,接下來將開始帶領大家進行 ROS 2 的開發環境配置。

一、版本的選擇

1. ROS 2 版本的選擇

ROS 2 版本的演進,可以參考 ROS 2 Foxy 的說明文件,或參考下圖:

為了保持使用上的穩定性,長期支援版本 Foxy 是一個很棒的選擇。當然,若是想體驗 ROS 2 的最新功能,那麼選擇最新版本 Galactic 會更好一些。除此之外,預計在 2022 年 5 月 23 日發佈的版本 Humble 將會是擁有 5 年長期支援的版本。

※ 本教學將使用 ROS 2 Foxy 作為學習 ROS 2 的版本

2. 作業系統的選擇

本教學的作業系統將使用 Ubuntu 20.04 LTS,它將會持續更新至 2025 年 4 月。

3. DDS 的選擇

可從 ROS 2 Foxy 官方文件說明中,查詢支援的 DDS 服務,如下表所示:

由上表可以看到,目前 ROS 2 的中介軟體(ROS Middleware)可支援的項目有三個,分別是 eProsima Fast DDS、Eclipse Cyclone DDS、RTI Connext。

本教學將選擇使用 Eclipse Cyclone DDS 作為使用 ROS 2 Foxy 的中介軟體,它具有下列特點:

(1) 目標管理組織(Object Management Group, OMG)的新一代標準

OMG 是一個國際協會,開始的目的是為分布式物件導向系統建立標準,目前則致力於建立對程序、系統和業務流程的建模標準,以及基於模型的標準。

Eclipse Cyclone DDS 已作為 OMG 的新一代標準,可以預期未來將會有更多的產品或技術圍繞著 Eclipse Cyclone DDS 進行開發,在往後的 ROS 2 上也會有更多相關的技術支援。

(2) 台灣廠商凌華科技的推動與支援

凌華科技股份有限公司(ADLINK),是一家設計和製造用於嵌入式計算,測試和測量以及自動化應用產品的公司,其產品線包含模組電腦、工業主板、資料採集模組和完整的系統。除了位於台灣的總部外,在北京、曼海姆、巴黎、聖何塞、首爾、上海、深圳、新加坡和東京均設有辦事處。目前與 Eclipse Foundation IoT 組織、OpenADx 工作坊及 ROS 2 技術指導委員會合作,合作推動 Eclipse Cyclone DDS 成為 ROS 2 的中介軟體,隨著 ROS 2 版本 Foxy Fitzroy 發佈,將會使機器人開發變得更簡單、快速、安全及可靠。

※ 更多關於 Eclipse Cyclone DDS 的使用回報可參考:https://osrf.github.io/TSC-RMW-Reports/humble/eclipse-cyclonedds-report.html

二、安裝步驟

請依照下列的操作步驟進行安裝配置 ROS 2 的操作環境:

1. 確保使用中的作業系統為 Ubuntu 20.04 LTS

若目前的主機使用的是 Windows 系統,為了保護硬碟資料,可以使用虛擬機器來安裝 Ubuntu 20.04 LTS。使用 Virtualbox 作為第一個接觸的虛擬機器軟體是一個很好的選擇,它擁有對初學者來說較為友善的圖形化介面,請先下載 Virtualbox 軟體

2. 安裝必要套件

我們將透過版本控制器 git,從 ADLINK 的開源程式碼中,取得「ros_menu」的完整程式碼,以便進行安裝 ROS 2。因此請先開啟 Ubuntu 20.04 LTS 中的終端機(快捷鍵為【ctrl】+【alt】+【T】),接著輸入指令:

$ sudo apt install git

由於我們使用了 sudo 指令,因此記得要輸入該使用者帳戶的密碼。安裝完成後可在終端機視窗中查看相關資訊,如下圖所示:

ROS 教學系列(四)-如何安裝 ROS 2 ?

3. 取得開源程式碼「ros_menu」

ADLINK 已將「ros_menu」的完整程式碼公開在 github 網站上,可參考:https://github.com/Adlink-ROS/ros_menu

我們可以直接使用 git 進行下載「ros_menu」的完整程式碼,請在終端機的目錄中輸入指令:

$ git clone https://github.com/Adlink-ROS/ros_menu

操作結果如下圖所示:

ROS 教學系列(四)-如何安裝 ROS 2 ?

4. 使用「ros_menu」安裝 ROS 1 與 ROS 2

「ros_menu」已擁有自動安裝 ROS 1 與 ROS 2 的腳本檔案可以使用,因此請直接輸入指令:

$ cd ~/ros_menu && source install.sh

輸入完畢後,將會出現提示文字,並詢問是否要自動安裝 ROS,輸入「y」後腳本檔案便會開始自動安裝 ROS 1 與 ROS 2,並且別忘記輸入該使用者帳戶的密碼,操作結果如下圖所示:

ROS 教學系列(四)-如何安裝 ROS 2 ?

ROS 1 與 ROS 2 安裝完畢後,腳本檔案還會詢問是否需要安裝 OpenVINO,這是一個協助快速開發電腦視覺應用的功能包,本教學將不會使用到,但仍建議按下「y」鍵先行安裝,以便未來的學習與使用,如下圖所示:

ROS 教學系列(四)-如何安裝 ROS 2 ?

三、配置 ROS 1 與 ROS 2 共用的操作環境

透過「ros_menu」安裝好 ROS 1 與 ROS 2 系統後,便可以開始配置操作環境。

ADLINK 已將配置的檔案與方法額外放置在「config.yaml」設定檔案中,如下圖所示:

ROS 教學系列(四)-如何安裝 ROS 2 ?

使用者不必再冒著風險自行修改終端機的環境設定檔。「config.yaml」被放置在「ros_menu」的目錄當中,開啟「config.yaml」後,就可以查看配置情形。

注意

此處是以文字編輯器 gedit 開啟檔案,若預設文字編輯器不是 gedit,將無法以如下圖的同樣方法查看「config.yaml」檔案。
ROS 教學系列(四)-如何安裝 ROS 2 ?

YAML 文件檔案,是一個可讀性高,用來表達資料序列化的格式,這也是目前在 ROS 1 與 ROS 2 中最常使用的文件檔案,主要目的是用來儲存專案中的各種參數與配置。現在就可以從「config.yaml」文件檔案,來學習該如何使用 YAML。

YAML 使用空白字元與分行來分隔資料,資料結構可以用類似大綱的縮排方式呈現,在縮排中,空白字元的數目並不是非常重要,只要相同階層的元素左側對齊就可以了(不過不能使用 TAB 字元)。

從上圖可以看出,「config.yaml」檔案的頂層由兩個鍵值組成:「Config」與「Menu」。在鍵值後面想要賦予資料,需要加上符號「:」與「 」(空白字元),才能夠接續輸入想要賦予的資料。除此之外,若是資料想要賦予的是「清單(陣列)」的結構,則可以使用符號「-」與「 」(空白鍵)。

最後若是想要為資料內容進行註解,使用符號「#」就可以了,需要注意的是,若是想要在資料的同一行內進行註解,請記得在資料內容的最後一個字元加上「 」(空白鍵),否則 YAML 會認為符號「#」也是資料內容的一部分。

根據上述的介紹,就能解讀 「config.yaml」的內容,接著我們將擷取一小段內容向大家進行說明。

  • 第一層的鍵值「Menu」:記錄著鍵值「ROS 1 noetic」、「ROS 2 foxy」、「ROS 2/ROS 1_bridge」。
  • 第二層的鍵值「ROS 2 foxy」:記錄著鍵值「option_num」、「ROS_version」、「distro_name」、「ros_path」、「domain_id」與「cmds」。其中「cmds」:使用清單(陣列)的方式記錄著資料內容,並且使用了符號「#」進行註解,說明使用方式。

這裡我們先以預設的內容配置操作環境,因此請直接關閉 config.yaml 檔案後,開啟終端機(快捷鍵【ctrl】+【alt】+【T】),便會出現先前沒有出現過的資訊,如下圖所示:

ROS 教學系列(四)-如何安裝 ROS 2 ?

依照終端機所顯示的資訊,輸入相對應的數字後,便可以執行相關的操作環境:

0) Do nothing:不做任何事情,讓終端機保持系統的原始設定。

1) ROS 1 noetic:將當前的終端機切換至ROS 1 – noetic 的操作環境。

2) ROS 2 foxy:將當前的終端機切換至ROS 2 – foxy 的操作環境。

3) ROS 2/ROS 1_bridge: 將當前的終端機環境執行功能套件包 ROS 2/ROS 1_bridge,這可以讓 ROS 2 的訊息連接埠與 ROS 1 的訊息連接埠連接,使得 ROS 2能夠與 ROS 1 系統進行資料的交互使用。

h) Help:顯示幫助資訊。

本教學使用 ROS 2 的操作環境,因此將一律輸入「2」執行 ROS 2 的操作環境,如下圖所示:

ROS 教學系列(四)-如何安裝 ROS 2 ?

四、小結

經過上述的 ROS 2 安裝教學解說後,各位夥伴們是不是都已經成功安裝 ROS 2 了呢?

如果想要學習更多有關 ROS 的內容,推薦大家可以到「ROS 機器人線上課程平台」,有許多關於 ROS 的專業課程、企業講座和工作坊,此教學平台是桃園市政府青年事務局凌華科技(ADLINK)合作推出,CIRCUS Pi x iCShop 榮幸成為協力教育團隊之一,因此可以看到我們專業講師在上面的線上課程喔!

ROS 教學系列(四)-如何安裝 ROS 2 ?