ROS的英文全名是Robot Operating System(機器人作業系統),起初由Willow Garage實驗室打造,ROS wiki介紹道:「ROS是一個開源(open-source)的meta-operating system,能讓你在正在使用中的作業系統(window、ubuntu)更好的去操縱機器人。」
稍微看了一下meta-operating system的意義,說是介於作業系統與中介軟體(Middleware),又中介軟體是一種能讓不同的應用程式用來彼此進行通訊的軟體,這一層一層的關係是不是有點混亂,我也這麼覺得。總之,就把ROS當作是一個開源的的軟體開發套件,它提供了我們開發機器人所需要的各項工具與函式庫,你不需要為了ROS特別組一台高級電腦,即可以在Linux、Windows 和 macOS以及各種嵌入式平台上使用。
ROS的出現就是為了要提高前人研發機器人領域程式碼的使用率,減少新人開發的時間,避免在開發機器人的路上遇到前人踩過的坑,能更專心地往新的技術發展。
(不過我還是踩了很多奇奇怪怪的坑,看來是我我很不會擅長避雷呢?其實好像我自己的問題居多XD但也趁此機會讓你們見識見識愚蠢的我)
Don’t reinvent the wheel. Create something new and do it faster and better by building on ROS!
拒絕重複造輪子!!!!! 來源:ROS
最早的構想從2007年開始,到2020年發布第13個版本「Noeitc Ninjemys」,目前已經不再更新。三年過去了,網路上大部分的package大部分還是ros1的版本,常見的教學也以ros1居多,所以還是稍微提一下。
想看更詳細的介紹可以去看我大大學姐幾年前的鐵人賽ROS自學筆記、他後來也有寫ROS2!
It all started one fall day, November 7th, 2007. That’s when the first commit to ROS was made at Willow Garage by a bunch of enterprising young engineers and researchers. ...
來源:openrobotics
Ros1 擁有「roscore」功能,也就是一定有master node(主節點)來連結其他節點,若是忘記開或是停止,其他節點也會一起停用!
那接下來要講的(我正在使用中)ROS2大大的改善這點。
<--PR2 <--ROS2 Iron Irwini
ROS1原先的設計是為了應用在Willow Garage自家的PR2身上,但隨著時間推移,機器人領域愈發成熟,使用ROS的族群也逐漸擴大、需求改變,而ROS2就這樣被催生了出來。剛提到ROS2的改版是為了改善ROS1現存的問題,這些問題包含:
還有一些使用上的不同,如編譯系統、Launch支援更多種語法等等,日後會提到~