ROS101

indigo
ROS不是一個作業系統,這是每每講到ROS要先提的。
它的層級比如手機的android是一個middleware。
手機作業系統是linux, 上層是像facebook, twitter之類的app。
機器人則是底層是linux,上層是視覺辨識, 路徑規劃的app, ROS就是提供呼叫以及訊息轉送的中介層。

ROS一開始源於2007年美國國防部DARPA urban challenge 無人車比賽。
一台無人車上通常有許多的sensor以及process需要溝通, 因此需要一個溝通的架構。
史丹佛大學於是開發了ROS,同時間MIT 也有LCM https://lcm-proj.github.io/
其差別在於ROS是基於server client TCP/IP , XMLRPC中心化架構; 而LCM則是可以做到
peer-to-peer 傳資料,相教於ROS有較小的延遲。然而它不能做remote process call從另一台電腦
叫起別台電腦的process。

一言以蔽之 ROS 一開始是解決”溝通”的問題。
而後來Standford的人比較會推廣,於是越來越多的軟體被包裝成ROS格式,於是就變成我們現在
公認ROS的特色–上面有許多現成的軟體套件。

機器人系統從視覺辨識、定位、運動控制、路徑規劃,是一個高度整合系統。因此這些套件package
在於避免重複發明輪子,能夠展在巨人的肩膀上繼續開發。

學習ROS建議以見樹又見林的方式學習。
使用版本請以ubuntu14.04 LTS,  ROS版本indigo 比較不會一直追著版本跑
從第一天開始請做到Continuously Integration (CI) 開發 避免binary package常常造成的版本問題

我認為可以從

a.使用catkin去編譯ROS package
b.學會建自己的ROS package
c.知道怎麼publish, subscribe
d.寫launch file
e.了解狀態機
方面了解ROS

to be continue…

關於一些名詞
Kennywai wordpress

ROS中文學習資源

 

Kickoff

Because lots of information generate and  lose everyday. I would like to start a Blog to take some notes, also push me to learn more and practicing English writing. Most topics will cover to ROS and robotics. Nice to meet you!