對於機械背景的可能是欠缺Linux和Ubuntu的基礎以及程序基礎,對於計算機背景的可能是運動學和座標變換。大家在入門ROS的時候最大的困難是什麼?是如何克服的?如果可能,希望得到怎樣的幫助?
想要零基礎學ROS,不如來學我們Berkeley的EECS206A。發了鏈接騙一下Stars(內含所有courses material和我個人做的Lab答案(已更新完)
Junzeng-x14/EECS206A?
github.com
說白了ROS只是個架構問題,如果感覺困難,並不是ROS困難,其實是其他領域有不懂的地方,比如一輩子都無法熟練掌握的cpp。
=====
我個人的情況如下:
第一天接觸ROS:把Tutorials做了一遍,深感CMakeLists真的是煩人吶(第一門語言學的是Java)
接觸ROS大約三十天:一直source /devel/setup.bash以及各種改來改去真的是好煩人,滾去學了一下CMU課件上關於shell scripts的東西,讓自己處在一個舒服的工作環境。
接觸ROS大約四十五天:聽說qtcreator可以配置來編譯roscpp,喜大普奔,然而折騰一下之後還是轉頭回去接著用terminal了嗷。
接觸ROS大約六十天:做Research,遇到了很多ros在無人機上的周邊問題,比如和硬體之間的通信架構。
自己課餘嘗試下一個3D路徑規劃+模擬+Visualization的純軟體的包,通過從零開始造輪子,發現了很多過去沒搞明白的事情,比如怎麼寫測試單元檢查Node之類之類,如何寫package讓其可擴展,其間去看了Effective Modern C++,刷了一下LeetCode。
接觸ROS一年後:滾去上EECS206A,這時關於ROS的問題對於我基本就是炒冷飯了,主要還是想了解一下機器人學的Big picture。課本是a mathematical introduction to robotic manipulation,課程上使用rospy,這門課基本就是去學會如何在各種機器人平台調包,如何快速的讀documentation,然後去做個大作業。
(預計)ROS一年半後:在實驗室的平台上引入一下現在比較成熟的用camera判斷quadrotor orientation的方法,來取代現有的motion capture system,並嘗試把一些time delay較大的controller丟到onboard上去。
我個人感覺我在ros perception的問題上還沒入門,這裡就不談了。
個人認為初學者入門ROS時遇到的最大困難是:搞明白ROS到底是什麼?
接觸新事物時,我們一般先要明確這個新事物的定義,才好進行下一步的研究,那ROS到底是什麼?
這個問題包含的內容很多:
- ROS的定義是什麼?
- ROS包含哪些部分?
- 每個部分都是幹什麼的?
- ROS的優勢是什麼?
- ROS還有哪些不足?
- 遇到問題該去哪裡找資料?
- .....
這些問題不是通過翻閱資料就可以搞明白的,必須要經過「千錘百鍊」的實踐,等初學者邁過各種坑、搞明白後,基本就成老鳥了。
引用《ROS機器人開發實踐》前言中的一段話:
「2011年底,我第一次接觸ROS。當時一個實驗室師兄在學術會議上聽說了ROS,意識到它的前景廣闊,考慮到我當時的研究方向,於是安排我進行研究。那時國內外ROS的學習環境比較艱苦,幾乎只有wiki的基礎教程(也沒有現在完善)。所以開始的我,內心其實是拒絕的,但還是硬著頭皮開始了。於是從拒絕到接受,從未知到熟悉,我經歷了前所未有的磨難,同時也收穫了前所未有的喜悅。」
初次接觸ROS的我,和現在很多初學者一樣,學習了wiki上的教程,小海龜愉快的跑了起來,然後呢?!我要的又不是海龜!!!