大三
大三開始的時候,你可以在學校的機器人隊里擔任重要角色了,或者能夠帶領一個小團隊參加小型的機器人比賽。你在系里甚至院里都小有名氣了,可能有的人叫你大神,有的人覺得你技術還不錯。但是一定要記得你現在的水平放到別的地方應該不算什么。每年我都往大疆的RoboMasters夏令營招進100個和你現在的水平相當的同學。
大三一定要培養出自己一個人獨立造出一個完整機器人的能力,比如一個Robocon水平的機器人,或者一個RoboMasters的戰車,或者一個四旋翼飛行器。
Robocon水平的機器人,涉及大量的機械設計,單片機開發,電機驅動的開發,碼盤和超聲波等傳感器的讀取,底盤運動學的計算,PID調試,任務調度邏輯的調試,舵機控制。RoboMasters的戰車的機械部分簡單一些,但是還需要進行云臺的控制、發彈系統的控制、功率控制等方面的知識,另外你也可以不搞這些部分,學習學習視覺識別和自動打擊,那么就要開始研究OpenCV(OpenCV | OpenCV)了。
四旋翼飛行器的機械部分最簡單,但是算法比較復雜。對于大三學生來說,從零開始一步到位寫一個穩定的飛控比較困難,因為飛控里面有很多細小的知識點要注意。目前我沒有發現什么比較好的書籍推薦,已有的一些關于四旋翼系統的書要么太淺(上來就教你焊電路),要么太深(上來就教你state estimation),聽說 @Liu Top的exbot小組在寫一個教材,我是非常期待的。學習四旋翼飛行器有下面幾個步驟:
第一步:自己調一個小四軸飛起來
現在開源社區的人言必pixhawk,其實我覺得從學習的角度來說,pixhawk太貴,而且不適合學習,我比較推薦的是 首頁-第七實驗室 這家淘寶店賣的STM32F405飛控,買回來以后自己再隨便買個機架(比如大疆F450)、接收機和遙控,就能按照飛控板附帶的學習資料、調試軟件飛起來。
第二步:看硬件圖、讀代碼
chiplab7的飛控板附帶一大堆學習資料,對加速度計、陀螺和磁感計都有很仔細的解釋,硬件鏈路圖也很詳細。chiplab7淘寶掌柜的又很認真負責,我學用的時候,發現代碼有bug和看不懂的地方,都可以直接找掌柜問。
看完代碼以后,對一個飛控系統的基本模塊:姿態解算、控制解算、混控輸出、遙控器處理、嵌入式處理就很明白了。然而這里面有很多技術是需要另外學習的。除了基本的嵌入式編程以外,還有要把大二大三學的信號處理方面的知識再撿起來看看。因為飛行器在空中有振動,會讓加速度計產生噪聲,為了把這些噪聲去除掉,需要對加速度計給出的信號做低通濾波處理,如何選擇濾波器的參數呢?如果濾波濾得太狠,延遲就會比較大,對控制的表現會有影響;如果濾波濾得不夠,可能會有一些低頻的噪聲偶爾會出現,導致加速度計的觀測不能用。另外最重要的是要理解姿態解算和控制解算這兩塊知識。chiplab7的飛控板的代碼采用的是最簡單的互補濾波算法做為姿態解算模塊,然后控制解算是對歐拉角的三個角度做閉環PID控制,基本都是基礎的基礎了。
第三步:小修小改加深理解
chiplab7的飛控是靠氣壓計定高的,飛行效果非常奔放。這時候可以淘寶買個20塊錢的超聲波模塊,然后自己寫個高度環去穩定飛控的定高表現。
我覺得這個過程至關重要,因為高度控制相對來說是個比較直觀理解PID控制的方式,而且chiplab7的飛控加高度控制非常好加。工作量不大,因為改善效果很顯著,所以可以讓人很有成就感,加深繼續學習的樂趣。
第四步:理解核心的數學和控制知識
這一部分大三是肯定來不及學的,但是我還是在這里列出來,因為這些知識你之后都需要慢慢學,我也會在之后不斷重復提到這些知識點。
姿態解算和控制解算涉及的知識有:
1、剛體姿態的表示、運動學方程和動力學方程。主要是對牛頓-歐拉方程的認識和理解、剛體姿態的歐拉角表示法、姿態與角速度的關系等等。
這部分說復雜不復雜,說簡單也不簡單,我同樣是沒有找到一本完整的書全都介紹過的,是學了好幾個不同的書和論文以后搞明白的。現在看起來是從維基百科入手比較靠譜。
2、自動控制原理。講PID的書和文章就多了去了,沒有太多復雜的書。
3、線性估計基本原理。其實就是互補濾波:Reading a IMU Without Kalman: The Complementary Filter 。拿這個關鍵詞百度各種搜就會了。
第五步:重頭開始造輪子
知乎著名網友vczh曾經說過,學習要抱著勇于造輪子的心態才能進步。所以在熟悉了別人飛控基礎上,可以自己重頭造一個飛控的輪子。可以自己從芯片開始重新畫一個飛控板,讀讀STM32的芯片手冊、讀讀各種傳感器的芯片手冊,自己手畫一個飛控的原理圖、做PCB layout、制板自己焊元件,全套花不了1000塊錢,能夠加深很多對硬件的理解。這一部分如果大三沒空,也可以不搞了。
制造整個機器人的過程中要特別重視文檔的積累。在你大三末期,你可能隨著學校的機器人隊備戰比賽,你可能主力負責一臺機器人。你應該自己列一個excel表格,把機器人用了幾顆螺絲,幾根導線,每個零件的規格是什么,都列出來。這個表格一方面可以用來幫助團隊管理機器人的物料,一方面也是你自己的經驗技術積累,將來你做的其他機器人可能多多少少都是Robocon、RoboMasters機器人的變形。
另一個積累是建一個自己的buglist,buglist包括什么呢,可以像冷大這樣:做控制、機器人等算法工程師是怎樣一種體驗? - 冷哲的回答,就簡單把一些自己的發生過的問題和最后的解決辦法羅列下來。比如說“杜邦線接插位不穩固容易脫開,接好后應該用電工膠布再裹一圈”,“外發給淘寶加工的機械圖紙,要特別注意和加工商溝通有沒有漏掉一些細節,如沉頭螺絲孔,關鍵的倒角”等等。你也可以幫其他機器人的問題也做這樣的記錄。buglist可以就是一個簡單的文本文件,如果你一直往里面積累自己工作中的記錄,等你將來工作了,這個文件可能會值很多錢。
大三的時候學校應該會開設軟件工程的課程。不管你是不是這個專業,上不上這門課,都應該主動去聽一聽,甚至跟著課程的設計作業一起做一做。軟件工程我覺得是機器人工程師必須具備的意識,因為一個機器人系統里涉及大量的硬件系統和軟件功能,軟件的部分往往還會涉及不同的語言、不同的編譯環境、不同的開發工具鏈。幾個人合作的話,大家的專業背景、編程習慣都不相同,這就導致不同的代碼和模塊之間的協議溝通非常復雜,必須盡早用UML和其他軟件工程的工具幫助團隊理解和互相溝通。
大三的時候學校應該還會開設操作系統原理和嵌入式系統原理的課程,而大二的時候講過計算機組成原理(所謂的微機原理)。從大三開始同學需要開始體會實時操作系統和非實時操作系統的區別、原理以及使用時需要注意的地方。這是一個比較雜的知識點,我目前沒有找到很好的教材去介紹。在STM32上,有freeRTOS,uCOS,Vxworks這么幾種實時操作系統;Linux是一種非實時操作系統,但是可以通過打補丁變成實時操作系統。這些操作系統的細節在機器人開發中都會多多少少被涉及到,同學們可以隨時上Google和CSDN去查大神們的介紹。
另外特別重要的一點是機器人系統里的嵌入式平臺都有燒壞的可能性,有可能在某個嵌入式Linux平臺上面辛辛苦苦寫了一個多月代碼,這個平臺突然燒壞了,代碼也就丟了。因此你的機器人如果有嵌入式Linux系統在里面,一定要盡早頂起來路由器,代碼定時提交SVN或者git。
大三的暑假你可能會作為學校機器人隊的主力去參賽了。備戰比賽和參賽是一件磨練心性的事情。我在學生時代體會過和勝利擦肩而過的痛苦,體會過沒機會再來一年的遺憾;也在負責大疆RoboMasters比賽的過程中被那些痛苦和遺憾的學生當做發泄的對象,非常有感觸。我覺得參加機器人比賽,很努力,然后失敗了,是一件讓人快速成長的事情。同學如果有機會,一定應該參加至少一屆機器人比賽。
大三的暑假你也可以選擇來參加大疆的RoboMasters夏令營,關于夏令營大家可以看這個知乎問答了解更多:參加Robomasters 2016夏令營是怎樣一種體驗? - DJI 大疆創新。每年我們都在全國范圍內尋找有一定技術基礎的學生,讓他們一起分組做一個自動機器人的挑戰。這個夏令營,作為組織負責人,不謙虛地說,我覺得應該是全世界范圍內最好的技術類夏令營。
大三的暑假有一件很重要的事情就是思考自己大四應該干什么。一般來說,你現在的能力保本校研究生肯定沒有問題,當然你也可以選擇考其他學校的研究生或者出國留學。雖然說你現在能力已經很全面了,但是你還需要2-3年的時間全面提升自己更多的能力,才能邁向卓越之路。不管是出國還是保研,最重要的目的是給自己爭取到未來2-3年能夠在一個優秀的環境中安心提升自己,有比較好的學習資源,能夠參與到一些不錯的項目中去。可能其他有些行當,出國留學始終是比在國內待著更好的選擇,但是機器人行業并不是這樣。我們國家這兩年在機器人方面提高也很快,而且我們國家現在比較有錢。就像我開始說的那樣,機器人是富人的活動,現在你在國內也能找到一些很有錢的實驗室可以造比較牛逼的機器人。另外國外很多比較強的機器人公司也都在做比較敏感的軍方項目,去找實習可能比較受限制。
出國去學機器人學方面的知識你有很多不錯的選擇,比如世界第一的機器人研究院卡耐基梅隆大學,或者麻省理工學院的CSAIL實驗室。北美傳統計算機四大名校(麻省理工學院,卡耐基梅隆大學,斯坦福大學,加州大學伯克利分校)里,除了斯坦福大學熱火朝天在搞人工智能以外,其他幾個學校的機器人研究都很不錯。除了四大名校,你還有很多其他的選擇,就像我開始說的那樣,機器人是富人的活動,如果想接觸到最好的機器人資源,你要選擇有錢的實驗室,而不是有名的實驗室。
另外你還需要在大三的尾巴上選定自己將來的細分研究方向,而且開始往這個方向深挖,也就是我在文章開始提到的感知、認知、行為幾個方向。當然同時你也不能放松其他方面的知識,尤其是數學基礎。我在大三的暑假專門找數學系的同學給我開了個數學小講座,學習了一點抽象代數的知識,對我后來學習密碼學幫助很大。同時我也讀了一些拓撲方面的教材(有一本很神奇的書叫做Topopogy Without Tears http://www.topologywithouttears.net/),這樣才理解了為什么數學分析要用奇怪的符號去解釋一些看起來很淺顯的道理。
大三階段的機器人工程師該學什么基礎數學是眾說紛紜的,在我看來,你要基本掌握“群是什么”,能夠用代數的眼光去證明“det(AB) = det(A)det(B)”,還要能理解“用一張紙就可以變出克萊因瓶”(當然是在四維空間里)。另外,你這個時候也要能夠意識到自己需要再學一遍線性代數。
大四
大四開始了,你可以開始深挖自己的研究方向,同時也要開始學一些高級一點的通用技術和理論,這時候你和一般的機械、電子、計算機學生就不太一樣了,你雖然也在狂編程,但也在狂學習物理和數學。通用技術包括ROS,simulink,gazebo和Vrep等工具。通用理論包括,再學一遍線性代數,學學凸優化、數值計算、旋轉表示法等方面的知識。這些知識你在大四僅僅只能開一個頭,因為你的大四要實習、畢業、考研、畢設,你會非常地忙。有些人會在大四進實驗室和老師發論文,我個人覺得發論文這件事沒必要操之過急。你的整個大學期間應該用在廣泛涉獵各種各樣的知識上面,而不是深入某一個細小的研究問題。
你可能早就聽說了ROS的大名,但是最好不要在大四之前去碰它。因為ROS用了很多操作系統和網絡的底層技術。我在知乎回答高手可以談談ROS機器人操作平臺開發的一些經驗嗎? - YY碩的回答里有簡單的介紹。ROS的設計目標是把機器人的控制和傳感器處理的軟件和它的硬件隔離開,用上ROS以后,你可以方便地用到很多能直接跑的軟件代碼。但是ROS從入門到精通需要至少一年以上的時間,你必須不斷地用,不斷地嘗試新的代碼和硬件,才能對它熟悉起來。
ROS的可視化工具Rviz里面對于機器人旋轉的表示用的是四元數,而在你之前研究四旋翼飛行器時,里面的代碼表示旋轉用的是歐拉角,做姿態解算用的可能是四元數。這個時候要開始有意識地去學習旋轉表示法之間的區別和聯系。
要重視大四期間的實習和畢業設計。很多大四的學生畢業設計都會非常頹地做一下,我覺得是不好的。要把做畢業設計的過程看做一個正式的項目。這個項目除了做好技術方面的工作,也要做好展示方面的工作。中國工程師的一大特點是,不會表達自己,可能做的東西水平很高,但是做出PPT就會犯字體花哨不正式、一頁上面字太多,圖文沒有聯系等表達上的問題。通過PPT介紹、展示自己的成果在工程師的職業生涯的任何一個階段都非常重要,它甚至也一定程度上限制了機器人工程師能夠達到的高度。只有能夠把自己的成果清晰地表達給自己的團隊,才能獲得其他人的反饋、通過溝通提高團隊的整體凝聚力和知識水平,這樣自己在團隊能夠獲得更多的認可,有助于團隊整體工作效率的提高。我每年去參加幾次學術會議,都在會議上感覺到一些中國的科研人員走到國際上以后,演講能力很差就會導致他們的科研成果不受重視。當然其他國家的科研人員也是這樣。
為了寫出美觀的技術報告和畢業論文,你可以開始學習Latex。Latex作為國際國內第一寫作神器,學習資料在網上有很多。Latex的學習和使用同樣也是需要不斷地熟能生巧,多寫多練就熟悉了。寫畢業論文有個問題是怎么做出精美的矢量圖,我推薦Draw Freely | Inkscape,一個比Illustrator更輕量化、但是有些功能反而更強大的免費軟件。
對于那些想申請出國留學的同學,你要做一個自己個人的成果展示,用網頁的形式呈現比較好。把自己Github鏈接(如果你按我說的,大學第一天就申請Github賬號,現在已經是一個三年的老油條了)、做過的機器人視頻、寫過的技術報告和文章(最好是英文的)放在上面。
大四到研究生之前的暑假,最好去一些比較不錯的機器人公司實習一下,比如說大疆。當然你也可以繼續做機器人比賽,比如RoboMasters和大疆的飛行器比賽。
研究生一年級
研究生的時候,你的目標比較清晰了,就是做一種機器人至少兩年時間,并從中發掘出可以發表論文的知識點。
如果做規劃算法的研究,那么還要讀偏CS一些的書,比如講A* search,random forest,圖論方面知識的教材。由于我在這方面造詣不深,就不托大了。
如果學習隨機系統的控制和最優控制,除了1、2、3,還要讀一本神書Stochastic models estimation and control(https://www.cs.unc.edu/~welch/kalman/media/pdf/maybeck_ch1.pdf)。
如果研究機器人視覺定位,幾種常用的定位算法:PTAM(Parallel Tracking and Mapping for Small AR Workspaces (PTAM)),ROS的標配VO(viso2_ros - ROS Wiki),SVO(GitHub - uzh-rpg/rpg_svo: Semi-direct Visual Odometry),LSD-SLAM(http://vision.in.tum.de/research/vslam/lsdslam)ORB-SLAM(GitHub - raulmur/ORB_SLAM2: Real-Time SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and Relocalization Capabilities),都必須自己學習之后全部跑一遍。只會用OpenCV的函數和這些工具包并不能說明你會視覺定位,必須要能自己手寫出一個能用的才算。國內有一個很厲害的SLAM專家叫高翔,他的博客要關注一下:機器人 - 標簽。由于SLAM這兩年很火,研究的人很多,所以網上可以參考的資料也很多,比如https://github.com/hcdth011/ROS-Hydro-SLAM,就在ROS上實現了幾種定位算法的對比。
我現在非常不建議同學們選擇從四旋翼飛行器的動力學控制里找問題作為研究課題。因為四旋翼飛行器的特點已經被研究透了。目前國際上對多旋翼飛行器的研究主要集中在造一些奇葩形狀的飛行器,以及給多旋翼飛行器上安裝一個機械臂去做力控制,這樣做就對多旋翼飛行器控制的動力學造成了一些影響。因此需要同學對動力學和多自由度機械臂控制有比較深的認識。
自動導航和駕駛是這兩年的熱點,一方面汽車的自動化是大勢所趨,另一方面多旋翼飛行器異軍突起,產生了很多對自動飛行的需求。除了機器人視覺定位算法以外,同學還需要學習其他的傳感器,以及這些傳感器與視覺定位算法怎么融合。這里面有很多坑,比如計算量的問題,怎么保證融合算法不崩,怎么處理傳感器的延時等等,都需要同學結合自己的項目去踩,坑踩得多了才能成長。如果大家想找一個多旋翼飛行器平臺研究自動導航,我推薦大疆的M100,我已經在知乎回答RoboMasters2015夏令營是怎樣的? - YY碩的回答里吹過一波M100,前面說過的今年夏令營的知乎回答參加Robomasters 2016夏令營是怎樣一種體驗? - DJI 大疆創新里也有人幫我吹了一波。
一些大學里學過的知識點,是必須結合研究生期間的項目的需求弄得很清楚的,比如三大變換(傅里葉變換,拉普拉斯變換,Z變換),旋轉表示法(歐拉角、四元數、旋轉矩陣),數值計算怎么防止矩陣出現數值問題等等。除了自己的項目,還需要把凸優化、卡爾曼濾波還有多自由度機械臂的控制學習一下。這三個領域的知識,是任何一種機器人都會用的到比較難的知識。
凸優化和凸優化的各種變形是非常重要的知識,因為各行各業里的研究問題,多半是會建立一個優化問題去解決的。上面提到的《Convex Optimization》https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf,也是一本神書,同學們一定要認真讀一讀。Matlab、Python、C++都有一些現成的工具包可以幫助你解優化問題,不過最好同學們能自己手寫一些基本的優化算法,比如gradient descend,barrier method等等。另外現在主流的SLAM算法,后端都是通過一種叫做g2o的優化算法來出效果的。而且g2o能夠整合bundle adjustment 和structure-from-motion這兩大計算機視覺里的關鍵問題,可以說是一種很好的計算思想了,非常有必要學習一下g2o。
卡爾曼濾波在上面書單里的1和3都有提到,同時在神書Stochastic models estimation and control(https://www.cs.unc.edu/~welch/kalman/media/pdf/maybeck_ch1.pdf)也有相當多的篇幅。卡爾曼濾波有好幾種證明的方法,同學最好能自己學會1-2種。
多自由度的機械臂的難點在于機械臂的運動學正反解、運動學控制和動力學控制,基本是一個建模分析和數值算法實現的問題。如果你所在的學校沒有一個財力雄厚的機器人實驗室的話,你基本上沒有機會接觸到多自由度的機械臂。這時候之前學到的Simulink和就要學的Gazebo就派上用場了,你可以用Simscape里面的剛體搭一個多自由度機械臂,然后通過Simulink仿真去學習機械臂的控制;也可以用Gazebo的URDF語言寫一個機械臂,然后通過Gazebo和ROS的接口去控制機械臂;也可以用ROS里面的著名工具包MoveIt! Motion Planning Framework,不過MoveIt的問題是,他只能仿真運動學,而不能仿真動力學。工業領域對多自由度的機械臂控制通常用一個叫做D-H表示法的建模工具(Denavit),這個東西我并不太會。我只會向同學們推薦我導師的著作《A mathematical introduction to robotic manipulation》(http://www.cds.caltech.edu/~murray/books/MLS/pdf/mls94-complete.pdf)。
有一個非常神奇的事實:《A mathematical introduction to robotic manipulation》這本機械臂控制領域的著名教材的第二章和計算機視覺領域的著名教材《An Invitation to 3-D Vision》的第二章基本是一樣的,都在講旋轉表示法。這是因為所有的旋轉表示法都可以歸納為一種優雅的李群結構:SO(3)群。而計算機視覺和機械臂控制都涉及到理解剛體的旋轉,事實上用計算系統去觀測和控制所有的剛體構成的系統,理解旋轉都是很關鍵的問題。旋轉表示法應該作為研究生階段的一個重要學習的知識點。
李群和李代數是剛體旋轉表示背后的數學理論,如果想要深挖一些,可以看這篇文章An elementary introduction to groups and representations的前50頁(http://www.cmls.polytechnique.fr/perso/renard/Hall_Group.pdf)。這是我自己讀著覺得最好的文章,當然網上也有很多其他的介紹。
研究生階段還要培養的一個能力是借助各種工具仿真機器人系統的能力。顯然地,很多機器人系統真的造出來的話造價昂貴,需要在實際制造之前寫一個比較真實的仿真系統出來測試算法。我覺得做仿真系統的能力直接衡量了機器人工程師的技術水平。當你開始要搭一個仿真系統的時候,第一步是通過歐拉方程和牛頓方程確定剛體的運動特點,甚至要自己寫剛體二階微分方程;第二步是確定剛體之間的互聯關系,設計不同類型的關節,如果有軟性連接需要加入彈簧阻尼模型;第三步是確定被仿真的剛體系統會不會和外界產生碰撞或者其他形式的力,如果有的話,需要設計合適的接觸力和摩擦力仿真的模型。多旋翼飛行器的仿真是很簡單的,不需要考慮什么接觸力。但是多自由度機械臂基本都需要仿真接觸力,不和物理世界去交互的機械臂只有很小的實用意義。而能夠自行運動locomotion系統,比如雙足、多足機器人,則涉及到更多的接觸力,多到接觸力都會影響仿真系統的數值穩定性。搭建一個仿真系統需要很強的系統建模能力和數值分析的能力,雖然Simulink、Gazebo、Vrep提供了不同程度的工具簡化你的工作,但是要讓仿真系統能夠穩定運行,必須要能深入其中的細節。有些看起來很高大上的仿真工具,比如Nvida的PhysX,在仿真的時候是忽略掉科里奧利力的,如果不理解仿真的本質,可能就會忽略這一個重要的缺陷。
研究生二年級
你的學習計劃接近尾聲。現在你已經進入了一個很好的狀態:看到一個機器人,能夠很果斷地分析出它用了什么傳感器、執行器、計算平臺大概是什么量級,他的執行機構能夠承受多少力量。看到一個新的算法,能夠大約判斷清楚它的執行流程,在什么環節做了優化。看到一個新的沒學過的知識,能夠分析出它和你以前學過的什么知識有聯系,你還需要再學什么才能弄明白這個知識點。
研究生二年級要深化第一年學到的那些技術和知識,要做到完整地讀過四五本書,五十篇以上的論文。你已經積累了幾萬行代碼的經驗,也能熟練地談論誰家的電機回差小,誰家的電機線性程度好。
你這個時候可以去寫作一些論文,也可以開始學習一些更高級的技術和工具,比如用FPGA和GPU優化算法、魔改Linux內核、玩玩液壓系統、了解更多機器學習的知識比如強化學習等等。你也可以從計算機圖形學或者計算力學里面找到一些幫助你更好進行機器人仿真和系統分析的工具。由于你懂很多機器人方面的知識,你可以給學校的機器人隊做指導,或者帶隊參加一些比較有挑戰性的機器人比賽。
寫到這里,我就不可能給出很多不同領域的指導了,因為隨著學習的進一步深化,我自己熟悉的領域也在收縮。我只能對幾個領域給出我的意見。
對視覺定位和傳感器融合來說,SLAM急需新的突破,目前通過幾何約束去實現loop closure看起來已經走入了死路,沒法有更多的發展了,下一步可行的方向是與深度學習進行結合。具體的一些介紹可以閱讀行業中大牛的一篇文章http://www.computervisionblog.com/2016/01/why-slam-matters-future-of-real-time.html,記述了幾個業界大牛們最新的觀點。傳感器融合技術,目前還有很多問題可以探索,因為傳感器的延時、不均勻的信號,會給定位系統造成困擾,如何去除這些干擾,需要建立比較復雜的非線性優化問題,具體可以關注香港科技大學Shaojie Shen的工作。
對于多自由度機械手和機器人的locomotion來說,這里面還有非常多可以探索的研究問題。我前面提過接觸力和摩擦力很難仿真,大神告訴我現在沒有任何一種工具和理論能把接觸力和摩擦力正確仿真出來,因此如何在機器人系統里妥善處理對這些力的控制,就是很難的問題了。現在業界的一個前沿發展方向,也是利用機器學習技術來幫助機器人學會處理這些外力,不過人類目前最優秀的多自由度機器人系統,Berkeley的Brett機器人,疊幾塊積木就要用十分鐘(New ‘deep learning’ technique enables robot mastery of skills via trial and error),顯然還有很多提升的空間。
最后我想再強調一遍表達能力的重要性。你可以從自己帶的課程和機器人隊入手,把自己這幾年來學過的知識做成PPT講給學生們聽,然后讓他們給你反饋。多做這樣的練習,提升自己做演講的能力,這將來會讓你受益匪淺。
研究生二年級之后,你可以準備進機器人公司工作了,也可以根據你自己感興趣的研究方向申請博士接著努力。由于你已經掌握了廣博的知識和技能,你的職業生涯將會大有作為。
結束語
我從2008年展開自己的機器人生涯。那一年波士頓動力剛剛發布他們的大狗機器人,Python還是很小眾的語言,Ubuntu 8.04還很不穩定,Chrome還沒有多少人知道。在之后的幾年中我目擊了深度神經網絡的復興,看到波士頓動力的機器人日漸強大,經歷了ROS的起源和繁榮,幫助了大疆的崛起,深深為這個產業的未來感到激動。我希望這篇文章能夠幫助更多的年輕人進入機器人學的海洋,為未來機器人學的繼續發展貢獻力量。
評論
查看更多