解读《视觉SLAM十四讲》,带你一步一步入门视觉SLAM—— 前言
什么是SLAM
隨著無人駕駛的發展,人們發現對于車輛外部環境的感知,以及車輛自身空間位置的確定變得尤為重要,知道外部環境就解決了“知彼”,而知道車輛本身在環境中的位置,就是“知己”,當我們達到“知己知彼”時,操控車輛在環境中運行,就顯得游刃有余。
其實我們可以想象一下我們自己在生活中行走時候的場景,我們首先觀察環境,同時我們可以獲得自己在環境中的位置,然后我們就可以大膽的向前走了,一邊走一邊再觀察環境獲得自己的位置,不斷地往復,我們就可以在任何未知、復雜的環境中運動自如。
而這個同時了解外部環境和自身定位的過程就叫做 SLAM,它的英文全稱是:Simultaneous Localization and Mapping,譯作“同時定位與地圖構建”。
SLAM的就業情況
自動駕駛的火熱,就代表了SLAM的火熱,現在(2019年)不管大小無人駕駛公司,基本都有SLAM的崗位,而且普遍工資都不低,對于一個應屆的研究生,拿下三四十萬的年薪并不是很難。SLAM相關的博士畢業生工資更是可觀,前段時間VINS-MONO的作者,港科大沈邵劼組的博士秦通,拿到華為201萬年薪的offer。當然這樣的大牛是少數,但是也足以說明SLAM的火熱。
SLAM工程師的年薪之所以這么高,一方面是因為自動駕駛的火熱,另一方面SLAM是一個門檻很高的方向,它的理論知識很多,而且有些十分抽象,并且國內現在做這個方向的人還不是很多。不像是深度學習一個月就能入門,立馬就能著手做一些東西,SLAM可能學了一年,還會覺得自己好像啥也不會,連一個完整的簡單代碼都寫不出來。
我的SLAM學習歷程
我是研一下的時候開始接觸并學習SLAM,當時我們組調研一些資料,最終確定學習視覺SLAM。從那時起我的主要經歷就放在SLAM的學習上了。現在還有大半年我就畢業了,算來學習SLAM也有兩年的時間了,盡管看上去兩年時間挺長的,但是我的大部分時間都是在自學,所以期間走了不少彎路,直到現在我都不覺得自己已經入門SLAM了,我覺得我只是找到了一些學習SLAM的感覺了。
趁著畢業之前最后一些時間,給自己定下一個目標,擠出一些時間來,總結一下自己SLAM上學到一些東西,一方面是將知識記錄下來,另一方面也是將自己前期學習中留下的坑,填一填。
關于《視覺SLAM十四講》
對于SLAM初學者,一本高質量內容友好的教材非常重要,我在學習SLAM的時候,高翔的《視覺SLAM十四講 從理論到實踐》,給了我巨大的幫助,這本書是國內目前能看到的SLAM教材中,我覺得它算的上是最全面,最通俗的一本教材了。有些人說它不好,不適合初學者,這也無可厚非,確實這本書,為了突出一些內容和節省篇幅,省掉了很多算法的介紹,初學者讀起來,會很吃力。
比方說第七講,
尺度不變性由構建圖像金字塔,并在圖像金字塔的每一層上檢測角點來實現
盡管這一句話并沒有幾個字,但是這一句話中隱藏的算法知識非常多,首先我們要知道什么是尺度不變性,其次我們還要知道什么是圖像金字塔,但是這些東西在書中并沒有給出解釋。
像這樣被省略掉的算法知識點很多,有些對于公式的推導也省略了一些過程,對于初學者的理解造成不少麻煩。我在初讀這本書的時候,其中很多這樣的知識令我困惑。經過一些時間的學習之后,對其中的內容有了一些了解,我想借此再次拜讀一下這本書,對其中的一些內容進行解讀,對于一句話就帶過的,但是很重要的算法,進行進一步的擴充,對于一些代碼,再加上更詳細的注釋。
希望我可以堅持住,直到寫完整本書的內容解讀,加油。
你所浪費的今天,是許多人祈求奢望的明天;你所面對的現在,是未來的你回不去的曾經。
更新(2020年3月7日)
解讀十四講的內容基本就要寫完了,過程中我不斷地翻看之前的內容,每次看都覺得自己的寫東西還不夠好,常常寫著寫著就沒有新東西,就完全變成解釋書中的內容了,這一點是我特別不滿意的地方,感覺這樣一方面自己沒有得到很大提高,另一方面內容也不夠完善。
在又一遍通讀此書之后,我還是覺得這本書離你能自己寫出一個簡單的SLAM系統還很遙遠,一個原因是因為書中的內容實際還是過于簡單,另外一個重要的原因是書中為了考慮篇幅,省略了一些非常重要的算法的介紹,這些算法稍顯復雜,但是在工程實際中確實是最常使用的,比如在PnP求解中常采用的一種方法是EPnP,而書中卻并未介紹,又比如對于E矩陣和H矩陣,實際上的從它們分解出R和t也是非常重要的一步,但是書中也并未解釋,我覺得這些內容對于初學SLAM的同學來說,會稍顯復雜,但是這是一個必不可少的環節,你終究是要去學習一些更復雜的算法。這些被作者省略的內容,實際上你都能很容易的找到對應的資料或者論文研讀,但是如果沒有一些基礎知識,直接看勢必有些晦澀。
所以我準備繼續填補我在學習十四講中的一些坑,繼續挖掘一些更深層次的算法,也許這些算法都已經有人介紹過了,我想在別人的基礎之上,再學習理解一下,然后將自己的理解記錄在博客中,以達到促進自己不斷學習的目的,如果能為那些初學SLAM的朋友帶來幫助,我將不勝榮幸。
后續我希望繼續補充之前解讀的內容,但是新加入的內容,我會明顯標示出來。
我還有一句忠告,送給那些正在學習的人,學習算法一定要多動手,如果你是初學者一定要耐下性子,去自己實現一些簡單的算法,不要覺得這樣是浪費時間,我就是因為這方面欠缺,現在開始顯露一下問題。
最后最后,我要感謝那些在抗疫一線奮斗的可愛的同學,是你們的辛苦讓我們擁有健康的生活。
總結
以上是生活随笔為你收集整理的解读《视觉SLAM十四讲》,带你一步一步入门视觉SLAM—— 前言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python按键盘上哪个键运行_pyth
- 下一篇: laravel 队列学习