如何學習ROS—— 轉載自:盛盛經驗談(發表於exbot.net)

如何系統學習ROS,發現Exbot的文本教程中貌似也沒有介紹。個人的經驗是初學者要麼跑完20篇基礎之後就不知道要幹什麼了,要麼就是有各種前輩的指導可以從項目中練手來獲取深一些的認知,當然更多還是根本無從下手。

我先說一下“西工大小學生”當初教我們如何學習ROS的過程吧,反正當時自己真的不知道這樣的學習路線有什麼用,直到做過項目之後才恍然大悟,知道原來是這樣的。下面這一段算是題外話吧。當然下面主要是對沒有參加課程的同學學習有幫助,你參加課程的話,應該已經有一些瞭解吧,當然看看無妨。

  1. 首先是ROS的20篇基礎(http://wiki.ros.org/ROS/Tutorials),不用想太多,直接跑下來。不用很深入瞭解這是什麼東西,把烏龜玩一玩,一定要快速跑下來,這個與背單詞大概一樣吧,一次一定要量大,反正你之後還是會忘記的。(學習基礎可以去:http://www.rosclub.cn/post-69.html,這條是不要face的小編dajianli添加的廣告

如何學習wiki?

在wiki裏,什麼ROS的組件有那一些啊,它的用處是什麼啊,其實這種不是重點的東西一開始,根本沒有必要看,掃一掃就行了,我是說看英文的教程。然後關於那個中級的教程,其實看一下無妨的,但是你真以爲這就是中級教程那就呵呵了,中級教程具體的功能說實話,感覺就像是湊字數,直接說這是中級教程真是不敢恭維。至於中間出現的python版本,根據需要來看吧....不過爲了理解,先看C++也就可以了。如果教程是有問題,當然一定是有問題的,對於具體的問題,還請使用(http://answers.ros.org/questions/)以及其他的搜索引擎,千萬不要把羣當作唯一的搜索引擎.....

  1. 跑完了一次20篇基礎之後肯定茫然啊,這是什麼東西啊,幹嘛的啊?感覺就像是沒看過一樣啊。這是很正常的。一開始我們是看着古月居前輩的教程來走的,但是前輩的教程畢竟是涵蓋了之後的一些內容,而且內容相對較雜,比如你沒理解前面的基礎知識,跑去搞搞slam,navigation是準備跑個例程搞一個大新聞嗎?其實一開始真沒必要看後面的那一些高級的。小學生之前告誡我們一定要把基礎的知識學好,不要以跑例子爲目的。所以搞一個例程來跑一下還不如去看論文呢,那纔是力量。當然一開始誰都想跑一跑高級的東西嘛,不過跑起來還是不知道他是幹嘛的,他是怎麼實現的,以及ROS在裏面起到了哪一些作用。 所以,跑完20篇之後雖然茫然,但是還請淡定,之後會不斷溫習的, 繼續向下走就行。
  2. 之後看的部分就是API了(http://wiki.ros.org/APIs),這個怎麼看呢,其實按照順序看下來就ok,但是這個有三列(ROS,C++,python),我們一開始主要選擇一列看就ok了,比如把C++的那一列看了。其中肯定會遇到問題,比如沒有對應的數據啊,因爲GFW導致的視頻丟失等問題,有一些還是不知所云,還有一些是因爲ROS中的引用繁多,往往是看到一個知識點時告訴你,需要掌握其他的先驗知識,而相應的先驗知識點又有各自的先驗知識點,所以有的時候就會比較頭痛。所以感到吃力的時候,果斷放棄吧。換一個方向,繼續看。把相關的簡單的看完之後,再去看那一些複雜的,自然也就不會那麼難受了。此外,由於ROS本身是爲了放在硬件上跑,所以最好可以有自己的物理硬件,仿真的當然也可以,只是沒有那麼直接罷了。從硬件設計的教程可以參考HandsFree項目,當然硬件他賣得有點小貴。
  3. 在解決APIs的時候,因爲本來前面就不知所云,看的時候一定是存在不斷向前重複的迭代過程。這是必要的過程。在解決APIs的途中,也可以拿一些已有的例子上手,我不知道是否有一整個項目的開源例子,但是turtlebot那個應該可以爲理解ROS保駕護航。但是注意並不是所有的例子都是有必要看的,並不是所有的例子都是可以根據example那本書正常跑起來的,針對自己的需求看就ok了,如果你搞激光導航,你一開始就花一大把時間糾結PCL的一些問題那真是浪費時間了。不過考慮到大家往往都有自己的項目,不像我們本科生就是按照興趣玩一玩,應該可以正確的選擇對應的APIs並很快上手ROS並理解它吧。
  4. 因爲ROS本身具有一些高級的算法的實現,那麼看那一些算法也就很有用處了。官網的packages(http://www.ros.org/browse/list.php)提供了一大批已有的包,根據需求來用吧。其他的一些,因爲大家都有論文的輔助嘛,所以搭配論文一起食用就更方便了。
  5. 至於一些輔助工具,Tools頁面(http://wiki.ros.org/Tools)有一些,常用的熟練使用就ok,不常用的反正也不必要記住。
  6. 總之,官網是個很好的入口,可以滿足我們從初級開始一些需求,至少初步理解應該不成問題了。
  7. 其他的一些第三方庫,比如OpenCV,PCL,EIGEN,BOOST等等,根據項目需求再組合吧。不過我們往往想要一步到位,一下子裝上各種庫來滿足一下,個人感覺沒必要,反正這個系統是經常壞的,指不定哪一天你把根目錄的某一個權限改了,你就等着重裝吧,畢竟這個東西經常折騰。當然使用remastersys爲自己打包系統是很好的手法,但是打包之後的系統是否真的可以使用,還請注意,存在可以在虛擬機中使用但是無法安裝在硬盤的情況。
  8. 至於虛擬機,個人不推薦,但是你一定要用,那也無法阻止你,一開始是無所謂,但是如果後面出現各種BUG,那到時候再換也ok。
  9. 由於基礎知識的缺失或是理解出錯,會導致難以解決之後項目中對的一些基本問題,所以基礎的知識還是得不斷溫習...
  10. 最後記住:ROS只是一個工具,方便進行算法的驗證。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章