天天看點

解讀《視覺SLAM十四講》,帶你一步一步入門視覺SLAM—— 第 1 講 預備知識

溫馨提示,嘻嘻:我寫這個系列部落格的目的是,通過解讀《視覺SLAM十四講》,将自己當初學習這本書時,困惑的不解地方進行填坑,是以書中已經詳細說明的内容,我不再贅述,對于書中省略的内容,我覺得很有用的東西,我會在後面的博文中和大家分享。是以大家想通過我的文章學習,你一定要先閱讀過《視覺SLAM十四講》對應一講的内容之後,再看我的總結和解讀。

第一講 預備知識

1.原書主要内容

在第一講中作者主要介紹了,一些學習SLAM的準備工作,包括本書的主要内容、如何使用本書等。其中最重要的一段就是解釋什麼是SLAM:

SLAM是Simultaneous Localization and Mapping的縮寫,中文譯作“同時定位與地圖建構”。它是指将搭載特定傳感器的主體,在沒有環境先驗資訊的情況下,于運動過程中建立環境的模型,同時估計自己的運動。

别的内容,大家看原書就可以了。

2.解讀

在第一講,作者雖然沒有介紹太多實質性的東西,但是第一講中實際包含的内容并不少。

嘗試運作ORB-SLAM2

我覺得對于對于一個初學者來說,在學完第一講之後,你可以把目前最流行的視覺SLAM系統——ORB-SLAM2下載下傳到你的電腦上,然後運作起來,看一下視覺SLAM實際的效果,這麼做一方面可以讓你熟悉Linux電腦的使用,另一方面可以了解一下目前最好的單目視覺SLAM架構。

  

  ORB-SLAM是目前純視覺SLAM架構中最為流行的,它是由Raúl Mur-Artal和Juan D. Tardós完成的,在2015年發表在IEEE Transactions on Robotics上,2016又進一步更新增加了對深度相機、RGB-D、雙目相機的支援,推出了ORB-SLAM2。

  該項目的網站是:http://webdiis.unizar.es/~raulmur/orbslam/

  該架構的源代碼托管在了GitHub上:https://github.com/raulmur/ORB_SLAM2

什麼是Git和GItHub

GitHub是全球最大的代碼托管平台,任何人都可以将自己的代碼托管在上面,我們在電腦上可以通過Git直接将我們的代碼上傳到GitHub的倉庫裡。GitHub是一個存放代碼的倉庫,Git是管理代碼的一個工具,Git你可以簡單的了解成是一個備份工具,它可以保護你的代碼,可以恢複到任何狀态。如果你不會使用請你找一個教程大概了解一下怎麼使用,不需要會太多,目前會用它下載下傳代碼就可以。當你會使用Git之後,你就可以将GitHub上的ORB-SLAM2的源代碼下載下傳下來了,網址就在上面。

(請忽視我先說了Git後說的Linux系統的順序,實際你在使用的時候,肯定是要先裝Linux系統,然後才能使用Git)

推薦使用的Linux系統

理論上說,你可以使用任何系統的電腦,去運作你下載下傳的ORB-SLAM2的源代碼,但是因為Linux與生俱來的優勢,是以我們做工程的一般都是選用Linux系統,這一點當你用過Linux系統之後,你就知道為啥了,Linux系統有很多發行版本,其中使用最為廣泛使用的是Ubuntu版本,當然還有别的一些很好的發行版。Ubuntu和Linux的關系,就相當于小米手機系統和谷歌原生安卓系統的差別,小米隻是把安卓系統拿過來做了一些深度定制。你可以在你的電腦上裝上Ubuntu系統,關于裝Ubuntu系統的方法太多了,請自行百度,建議安裝雙系統,不建議使用虛拟機,Ubuntu系統選用16.04的版本。

  

  安裝上Ubuntu系統之後,你就可以把ORB-SLAM2的源代碼下載下傳到你的電腦上了。下載下傳下來之後,請參考README.md檔案中的步驟編譯ORB-SLAM2,如果你的電腦是新安裝的系統,那麼一定會碰到編譯失敗的問題,這裡面可能會是因為你缺少各種庫檔案,對于這種問題,我們常常采用的方法是,缺什麼就安裝什麼。這裡的編譯過程請自行百度,網上的資料非常全,你在安裝的過程中,一定會碰到非常非常多的問題,如果你是一名剛剛開始使用Ubuntu系統的初學者,請你一定要非常耐心的去百度搜尋這些問題,請不要覺得繁瑣,初學都必須要經過這一步。

  

  我強烈建議大家,去編譯跑通ORB-SLAM2的代碼,如果你是初學者,你可以了解到終端的使用,了解到Linux常用指令的使用,你還能了解到如何在Linux系統上建構一個工程,更重要的是你能直接看到SLAM的運作效果,這對于初學者來說能直接看到效果,那是何種的興奮啊!我相信當你看到你的電腦上跑起來ORB-SLAM2的時候,你一定會激動不已。

Vim

在第一講的習題部分,作者介紹到讓大家學習一下Vim。Vim就是一款文本編輯器,它所要完成的工作就是像你Windows上使用的記事本一樣,但是它絕不是一個簡單的文本編輯器,它的強大是你想象不到的,它可以使用幾個按鍵就能完成平常通過記事本幾個小時才能完成的内容,高效的背後也就意味着你要學習的東西很多,學習門檻很高,我個人建議,初學者先别接觸Vim,更不要去接觸Vim的插件,那會浪費你非常多的時間。

總結

這一講的解讀,實際對于書中的内容,并沒有什麼可以補充的,主要是推薦大家在Ubuntu16.04上把ORB-SLAM2的代碼給跑起來,為了避免内容過于備援,我省略了很多操作的細節。不要小看跑通一個代碼,如果你沒有這樣的經曆,請一定實際嘗試一下,這裡面你會面臨很多的問題。

又有溫馨提示了,嘻嘻:對于我們工科生,特别是搞工程的,你一定要培養自己解決問題的能力,如果你這方面能力還不夠,那麼你一定要抓住每一次實際操作的機會,隻有親身試驗之後,你才會發現問題,發現問題之後解決問題所獲得的知識和能力才是最提升自己的。對于這個我有一些經驗告訴你,當你在百度上進行搜尋的時候,如果你的關鍵詞過多,以至于搜尋結果太少,那麼你就要優化你的關鍵詞,多用一些行業内的術語,或者删除一些關鍵詞,但是這樣你就會多花一些檢索資訊的時間。如果百度也獲得不到答案,你最好還是想辦法使用上谷歌搜尋,用谷歌加上英文關鍵詞搜尋,一定會解決你的問題的。總之當你碰到問題的時候,你一定要想方設法的去解決它,不要留下疑惑,這對剛開始學習的你來說很重要。

繼續閱讀