當前位置: 華文星空 > 汽車

碩士研究生階段如何學習slam機器人?

2020-05-20汽車

實驗室的師兄剛畢業,都找的是slam方向的工作,自己也正在往這個方向努力.所以在這裏總結以下學習經驗吧.

個人認為看影片的效率較低,更傾向於看書,以下的推薦的 英文書籍 大都可以在Library Genesis(需富強上網)上找到, 都是個人已經看完或者正在看的書 ,相信會對你有所幫助.

1. 基礎篇

1.1 C++

C++是slam所有知識的基礎 ,它的作用和地位怎麽強調都不為過,在學習其他所有知識之前一定要先過這一關.否則你的接下來的路會很難走.

在這裏推薦兩本書: C++ Prime Plus Effective C++ ,特別是第一本,它將陪伴你整個slam的學習生涯.我當時大概花了兩個月左右每天練習上面的例子,後面發現C/C++的使用貫穿了所有學習環節,所以每次遇到不會的都會重新來讀這兩本書.

C++四大組成部份,每一個都要懂其用法,至少做到遇到問題時能快速定位到書裏相應的部份:

  • 以C語言為載體的 程序導向的編程(Procedure Oriented Programming)
  • 物件導向的編程(Object-Oriented Programming) :類,多型,繼承,虛擬函式
  • 為了解決程式碼重用問題而出現的 泛型編程(Generic Programming) 以及對應的 標準樣版庫(STL)
  • 1.2 OpenCV

    有了C++的基礎,你就可以來學習一些影像處理的內容了 .影像處理很多演算法原理上會比較難以理解,不過沒關系,我們有強大的影像處理的函數庫可以呼叫,那就是OpenCV.

    學習OpenCV最最推薦的教材是官方的Tutorial.最開始看完 Introduction to OpenCV The Core Functionality(core modeule) 這兩個就行,剩余的可以以後用到再回來尋找.

    如果你英文水平不夠好的話,可以看看【OpenCV3編程入門】.個人更加推薦看英文的入門文件,畢竟轉譯過程會有資訊遺失,不利於理解學習.

    1.3 Linux & ROS

    Linux是slam常用的搭載環境,它其實有很多的發行商,但是只推薦使用Ubuntu,原因很簡單,只有機器人作業系統ROS是基於它開發的.

    關於Linux的學習,推薦兩本書 【鳥哥的Linux私房菜】 The Linux Command Line .前者是基於CentOS寫的,但是這並不影響使用,後者是基於Ubuntu寫的,但是是英文書,

    自己學著 安裝Ubuntu的雙系統 (虛擬機器和Windows直接安裝都不推薦,會出各種意想不到的Bug).然後拿著The Linux Command Line,將裏面常見的命令自己敲一遍看看效果.

    個人認為比較重要的幾個點:

  • 終端的使用
  • Linux檔目錄結構
  • 怎麽安裝軟件
  • 怎麽新建和刪除檔/資料夾
  • 檔打包及解壓
  • 至於ROS的學習,目前只推薦官方的Wiki文件.

    1.4 機器人學數學基礎

    這裏涉及到了 三維旋轉矩陣,四元數,李群李代數 的知識.由於在學校選了相應的課(聽老師說現在全國只有北航開設了相關課程?),所以在課外沒怎麽學習.不過最近倒是在Github上發現了一個很好的專案,主要是講三維旋轉和四元數的,可以去下載下來看.

    我自己也有開了相關的專欄,感興趣的可以去看看(隨緣佛性更新):

    2. 實踐篇

    2.1【視覺slam十四講】

    之所以把這本書放在第二部份講,主要有三個原因:

    1. 這本書提供了大量的源碼,具有很強的實踐意義.
    2. 如果你沒有上面的基礎知識作為支撐,看這本書可能會有些吃力
    3. 從找工作的角度講,個人認為 基礎知識的意義大於slam知識本身

    關於這本書,其他回答說的很多了,不再贅述.值得強調的是, 裏面的程式最好自己寫一遍,修改修改部份程式碼看看會出來什麽樣的效果 .

    2.2 相機 & 激光雷達

    在學習好理論知識後,家庭條件允許的話,,可以自己設計組裝一個機器人來玩玩.上淘寶購買相應的零部件.把它們架設到能移動的機器人上,自己編程實作建圖啥的.

    2.3 TurtleBot

    TurtleBot是一款搭載ROS的移動機器人,上面內建了激光雷達或者雙目視覺系統.

    TurtleBot

    學校開設了移動機器人的課程,去年(2019)剛剛購買了一批TurtleBot2,所以很有幸使用了一段時間.原本還想著自己買一台玩玩,但是看了一下淘寶將近6000元的價格,只能說一句"打擾了,再見!".

    你可以打聽打聽學校有沒有實驗室有這個玩意兒,如果有的話可以去蹭一蹭,這將會對你的實踐能力的提升有很大的幫助.

    3. 進階篇

    基礎有了,實踐有了,接下來就是理論水平的提高了.

    主要從兩個方向努力,一個是看相關論文,還有一個是看兩本書:

    【概率機器人】 對應的英文書名叫 Probabilistic Robotics ,還有一個多視覺幾何的書籍 Multiple View Geometry in computer vision

    這兩本書不知道各位大佬感覺如何,我最近正在啃,覺得還是比較吃力的.近期準備把這兩本書看完然後去看【視覺slam十四講】後面羅列的一些論文.

    4. 就業篇

    這個是上面答主都都忽略的一點,這個可能要潑一些冷水了.前兩年隨著百度宣布搞無人車,帶動了一大批的slam就業崗位,但是現在風口漸漸平息,最近在媒體上也少有看到相應的報道.雖然slam現在看起來還是一個比較火的方向.但是很多單位已經開始減少招收的人數.至於薪金,年薪大概在25w左右,還算是可以的.

    不過,既然選擇了這條路就勇敢向前走吧,一起加油!

    最後,求點贊,求關註,求收藏,你的支持是我更新的最大動力!