iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
自我挑戰組

ROS 筆記:要怎麼叫無人機自己飛系列 第 3

【ROS 筆記:要怎麼叫無人機自己飛】Day 3:簡述 ROS 的系統架構

  • 分享至 

  • xImage
  •  

前一篇說到 ROS 的核心精神,其中對一般初學者最有關還是它的模組化架構。因此,這一篇想要繼續介紹 ROS 系統的模組化架構,講講它具體長什麼樣子,有哪些功能可以使用。

ROS 的內容物

ROS 系統功能可以分成兩大部份:檔案系統(Files System)、計算圖形(Compute Graph)。

檔案系統(Files System)

檔案系統是 ROS 用來管理我們在開發過程中建立、執行的檔案以及相關編譯文件。其中最重要的兩個角色是套件(Package)工作區(Workspace)

  • 套件(Package):

    套件是開發機器人軟體的最基本單位,每一個套件會包含幾個功能單一的程序,組合起來可以完成特定的任務。

    假設我想要開發一個可以自由行走的四足機器人,那麼我就需要開發「起身坐下」、「走路奔跑」、「保持平衡」等功能的「行走套件」。這個套件可以用於任何合適的情境,也可以分享出來讓其他開發者使用,這就是 ROS 模組化架構的精髓。

  • 工作區(Workspace):

    工作區是 ROS 提供給開發者一個管理專案的區塊,它是一種特殊的資料夾,透過 ROS 內建的管理工具建構,專案內使用或建立的套件、檔案都會放在裡面。

計算圖形(Compute Graph)

計算圖形這個名字看起來抽象,可以理解成它是 ROS 通訊網路,這個網路由節點(Node) 和節點之間流通的訊息(Message) 組成。

  • 節點(Node):

    節點是通訊網路的基本元件,每一個在 ROS 中運作的程序被視為一個節點。每一個節點都可以獨立運作,即使某些節點意外掛掉了,其他節點也不會受影響。

    在節點之中有一個特殊的節點叫做主節點(Master),它的工作是協調其他節點互相通訊。主節點會維護一個名稱服務(Name Service) 的表格,裡面儲存每一個節點的名字,以便他們找到彼此並建立連結。

  • 訊息(Message):

    訊息是節點通訊使用的一種資料結構,不同的訊息類型(Message type)對應不同的資料型別,如:整數、浮點數、字串等。

雖然節點彼此是分散式架構,但訊息流通需要靠主節點來維護。如果主節點停止運作了,即使節點仍然可以持續運作,但通訊會中斷。

ROS 社群(Community)

ROS 的社群並非 ROS 軟體本身的功能,而是泛指 ROS 官方文件、社群論壇和套件平台這些線上服務,ROS 的開發者們可以透過這些管道去熟悉 ROS 的功能,或是取得他人建立的套件。

ROS 官方維基

ROS Wiki 是 ROS 官方維基,它涵蓋了 ROS 的入門指南、進階教學、API (如 rospyroscpp)、內建工具和常用套件等的使用方式 。

這個網站比較麻煩的一點是沒有搜尋功能(以前還有,不知道什麼時候拿掉了),而且網站導航也沒有做得很好,所以有時候特定功能的說明頁面明明就在裡面,卻無法直接在 ROS Wiki 裡找到,需要自己 Google 搜尋才能找到。需要注意 ROS Wiki 會在每一個頁面標註適用的版本,因此需要根據自己使用的版本來切換內容。
這裡列出初學者通常會用到的頁面,也是這個系列文主要的參考內容:

ROS 論壇

ROS AnswersRobotics Stack Exchange 是專門為 ROS 使用者設立的問答平台,類似於 Stack Overflow。前者已於 2023 年 8 月停止使用,大部份的問答都轉移到 Robotics Stack Exchange 上了。

ROS 資源儲存庫

ROS Index 是一個列出所有可用的 ROS 套件和資源的平台,裡面包含各種官方與第三方開發的 ROS 套件。

在 ROS Index 中,分成套件列表(Package list)和儲存庫列表(Repository list),使用者可以根據自己需求搜尋特定套件,或是直接從儲存庫將所有相關套件一併下載安裝。


這一篇只先簡單介紹了 ROS 系統架構有什麼東西,篇幅就快要爆炸了。之後會再分別詳細說明這些東西實際上要怎麼使用。

不過在那之前,下一篇會先來說明如何安裝 ROS 系統。


上一篇
【ROS 筆記:要怎麼叫無人機自己飛】Day 2:ROS 是什麼
下一篇
【ROS 筆記:要怎麼叫無人機自己飛】Day 4:安裝 ROS 與環境配置
系列文
ROS 筆記:要怎麼叫無人機自己飛14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言