什麼是ROS?

簡介

ROS(Robot Operating System)翻譯過來就是機器人作業系統,這是一個開源(Open Source)的作業系統,雖然說名子中帶有Operating System但是跟我們所使用的Windows、Linux、MacOS不同,這裡的Operating System說的是meta-operating system元作業系統,更類似於是中介軟體(Middleware),你也可以說是機器人框架(Framework),因此它是一個抽象的概念,是一個用來連接作業系統以及自己撰寫的應用層(Application)的工具,在這當中真正對元件及設備進行控制的還是Linux這些操作系統,簡單點來說就是它是一個能夠讓機器人的各個元件進行溝通的框架,提供了開發機器人所需要的各項工具以及函示庫,讓使用者可以不必要花費大量的時間重頭來構建一個全新的架構,在ROS官網的why ROS?的這個頁面上,赫然使用著醒目的字寫著

Don’t reinvent the wheel. Create something new and do it faster and better by building on ROS!

翻譯過來就是**”不要重複造輪子。在ROS上構建些新東西並且做得更快更好!”。**

ROS2與ROS的差異

首先要先了解到ROS是一個從2007年開始一值發展到現今的一個系統,一開始是由**斯坦福大學(**Stanford University)的機器人研究室所推出的,詳細發展史可以參考這部影片。

https://www.youtube.com/watch?v=Zs3ic0Im4D8

在經過了長時間的推進,時至今日ROS也有15年以上的歷史了,他的底層架構也漸漸的更不上時代,因為是使用網路進行溝通,網路通訊架構會有延遲使得ROS無法符合RTOS(Real-time operating system)即時作業系統的規範,這也導致它只能在少數的作業系統上運行,也無法保證容錯,或者進程同步等,不僅僅如此ROS還需要使用到大量的資源例如:CPU、記憶體、網路頻寬等;但不管是為了ROS社區的需求,還是因應時代的發展RTOS是至關重要的,因此為了這些才有了ROS2,在ROS2中就將考慮更多平台,例如:Linux、macOS、Windows、RTOS,所以這不像是每一代之間的小版本更新,而是一次基於底層的重構,利用DDS(Data Distribution Service**)**資料分佈服務,進行底層訊息交換機制的重構,也取消了原本Node分為Master以及Client的關係,改為每個Node都能獨立運作,這樣就解決了如果Master節點死掉整個系統都會無法運作的問題,改變如下圖。

ROS/ROS2架構。(來源:Exploring the performance of ROS2 | IEEE Conference Publication | IEEE Xplore)

ROS/ROS2架構。(來源:Exploring the performance of ROS2 | IEEE Conference Publication | IEEE Xplore)