博客專欄

        EEPW首頁 > 博客 > 聊聊這兩年學習slam啃過的書!

        聊聊這兩年學習slam啃過的書!

        發布人:計算機視覺工坊 時間:2020-11-04 來源:工程師 發布文章

        入坑2年多,零七零八買了7、8本書,正好最近研一的新師弟讓我來推薦幾本,那么,獨樂樂不如眾樂樂,我就來巴拉巴拉一下我買的這些書吧。

        以下測評,僅代表個人觀點,與書的作者無關(狗頭保命)

        1、【C++ Primer Plus】

        9.png

        嗯~這個灰常灰常厚的c++書是我買的第一本書,也是我所有書里除了java最厚的一本(java買了就沒看),But,這本巨厚的c++我竟然翻完了!!!當年,年輕的我以為,看完這本書,我就可以橫掃slam了,哦,我還是太年輕。

        言歸正傳,這本書我覺得是每一個學C++的人都可先入手的一本基礎類書籍,講的雖然沒有特別深,但很全面,比較容易懂。可以在2-3月內大致了解C++的主要構造,而且里面包括了可實現的代碼,講解的也比較詳細。有C語言基礎的學生和沒有C語言基礎的同學都建議入手。

        【食用指南】這本書很厚,不需要每一節都必看,也不需要每一節都一次性全部看懂。學過C語言的童鞋:可以跳過Ch1~Ch7,直接看函數重載和對象部分。沒有學過C語言的童鞋,就得從第一章開始看了,但也不需要很慢,這部分很基礎,大概一個多星期就可以看完。重點推薦Ch10~13,這部分是C++的重頭戲,可以多看幾遍,加深印象,至于Ch14~18章,可以在需要的時候再看。C++只是一個工具,不需要每一個地方你都一清二楚,這本書可以在后續學習中反復查看。總之,建議入手。

        【推薦指數】★★★★★

        2、【視覺SLAM十四講(第一版)】

        8.png

        這個是我入手的第二本書,研一上學期就買了。當年年輕的我問師兄:師兄,怎么學習SLAM?師兄說:看完這本書,你就會了。如今,我的師弟問我,師姐,怎么學習SLAM?我也會笑著來一句,看完這本書,你就會了。

        當然以上是個段子。不過SLAM十四講的基礎性地位是不可撼動的,第一版講的很詳細,有很多用不到,但是又很難理解的知識點。但是一本很好的書,很適合入門級別,里面的每一章都會有相應的代碼,而且網上對于這些代碼的解讀也很多,通過這本書可以基本了解SLAM的結構。師弟說很多地方看不懂,看了2遍,還是不懂。我想著這可能是很多剛入門的小白的難處,我來大致講解一下

        【食用指南】整個SLAM系統分為前端和后端,對于第一版來說,第九講之前都介紹的是前端,我覺得是碩士研究生,短時間內沒有想要讀博的,可以只看1-8章,重點看6-7-8章節,這三章是前端的關鍵。一二三章是基礎,就不多說。第四章開始,就不美好了,李代數是什么玩意?尤其是第一版中還加入了李代數求導和擾動模型,當年的我看的也是一頭霧水(可能我的頭發就是看這章看沒的,請高博還我頭發)。其實這部分大家只要學會推到李代數和李群之間的轉換關系就可以了,擾動模型什么的,可以留給你的博士師兄們研究,后面的推導用的也不多,可以等需要的時候再詳細看。第五章也不用說,沒什么難點。第六章又來了,第六章、第七章、第八章感覺都是在講一個東西,那么在講什么呢?其實第六章和前五章一樣,仍然是一個工具,非線性優化,相當于最小二乘法,這只是一種優化手段和方式,不需要執著于用在哪里,其實在后面的工程中可以發現,只要是用到最小二乘優化算法的地方,都會出現非線性優化。至于第七章第八章,其實就是在求解非線性優化中所用到的初值。前八章看起來也沒那么難,是不是?后端部分,等前端掌握了,再看,也不遲,或者說你在看論文的時候,需要補充后端的知識,再來看后端的知識點也可以。

        【推薦指數】★★★★★

        3、【視覺SLAM十四講(第二版)】

        7.png

        是的,我前兩天又買了第二版,其實第一版我已經看了很多遍了,那么為什么買第二版呢?首先,我覺得我研究SLAM,還是個博士,書架上不擺個2、3本專業書感覺不太好,大多數情況下還是要裝個B的。其次,插圖好看,翻開書就有4頁的彩色插圖,感覺很高端的樣子,老夫還是有少女心的。第三,當然這肯定不是最重要的地方,老板報銷。于是乎,我就開開心心買了第二版。

        那么第二版和第一版的區別在于什么呢?整體上分為了三部分:預備知識、數學基礎、實踐應用。預備知識對應第一版的第一講,數學基礎部分包括了第一版的第二講至第六講,其他的全是實踐應用。具體來看,第二版增加了代碼實驗部分,例如3.7節,第一版就是可視化演示,用了一頁多就講完了,第二版分為了兩小節,顯示運動軌跡和顯示相機位姿,用了4頁紙詳細講了可視化的代碼使用。而且在4.4節增添了評估軌跡誤差的代碼,第五講增添了3D視覺的實踐代碼…從內容上講,刪減了部分內容,比如因子圖。總體來看,第一版理論性更強一些,第二版實踐性更強一些,如果是新入門的孩子,還是推薦第二版的,更好的通過代碼理解理論,避免了理論與代碼對不上的情況。

        【食用指南】章節結構上和第一版的推薦相同,建議大家多動手,多看代碼,不過不要糾結于每一句為什么這樣寫,前幾次看的時候可以先大致了解這一部分的代碼講的是什么,如果給你一個新的代碼,類似的代碼,你能不能大致看出來是哪部分的代碼?

        【推薦指數】★★★★★

        4、【ROS機器人開發實踐】

        6.png

        剛開始看到這本書的時候,我很喜歡這個封面,沒仔細看,我以為是兩個機器人手拉手,中間放著個東西,我覺得我也是一個手拉手的機器人,買了才知道,哦,我是中間那只狗。這本書是看著網上推薦買的,是一個ROS系統化的書,如果實驗室有ROS小車的同學可以買來看看,我覺得博士可以入手一下,比較系統化,但碩士的話,網上有零散的ROS知識,我覺得也足夠你們完成畢業設計和小論文了。這本書比較全面,SLAM和機械臂方向都有,還有一些仿真模型的介紹,但書籍的缺點在這上面都體現了:全面但深度不夠。所以說如果你只是學習如何使用,我覺得網上的知識足夠了,沒必要再投資一下。不過還是推薦博士們購買的,比較系統化的介紹了整個構架,可以閱讀一波。

        【食用指南】如果是SLAM方向的,我覺得8、10、11這幾章可以PASS了,都是機械臂,機器學習方向的,第二章和第三章比較基礎,詳細講解了節點、消息、話題、服務等,可以仔細閱讀一下,4.1節的launch文件是重點,但書中的內容不夠深,沒有將的很詳細,大家可以去ROS官網或CSDN上找找補充資料,掌握好launch的寫法,第五章機器人平臺搭建和第七章機器視覺,實驗室準備配置小車的同學可以看看,主要講了ROS搭配相機和激光雷達以及標定。后續章節我還是推薦需要再看,不需要就不用看。

        【推薦指數】★★★☆

        5、【STL源碼剖析】

        5.png

        這本書吧,一言難盡。。。這是我在看源碼的時候買的,在看代碼過程中,我發現C++ primer看完了,怎么代碼還是看不懂,感覺看了本假書。頭禿,然后我去網上看資料,說是代碼中使用了STL寫法,要看這本書,于是乎,斥巨資買了(自己的腰包)。我以為,它像C++ Primer一樣淺顯易懂,然而,我還是太年輕。代碼注釋較少,是分塊化的代碼,沒有整體可運行的,代碼結構我不喜歡,總之,這本書我看不下去。當然,我并不會把這歸為書不好,一定是我修煉的等級太低,還沒有體會到這書的內涵,我準備再修煉一段時間再學習。但是,這書的好處也有,很多源碼中使用了map容器、vector容器以及list容器等,都會在源碼中用到,在閱讀源碼的過程中,我會翻看這些章節,可以有效補充容器相關的知識點。

        【食用指南】用到時再按需求詳細閱讀

        【推薦指數】★★

        6、【Effective C++】

        4.png

        哦,又是一本語言類的書,是的,看了這么多,我的C++技術并沒有得到顯著提升,我常安慰自己,我還沒開竅,等開竅了,就起飛了。這本書也是我在看代碼期間買的,我覺得這本書還是不錯的,算是C++ Primer的補充,有些Primer中沒有細化的知識點這本書都講了,而且會進行強調,我覺得可以和Primer一起看,不算很難懂,也不是很容易,屬于中等水平。

        【食用指南】不需要特地留出大片時間看,可以在日常看代碼過程中,每天看幾頁,后期有需要強化的部分再回過頭多看幾遍,可細嚼慢咽。

        【推薦指數】★★★

        7、【計算機視覺中的多視圖幾何】

        3.jpg

        這本書我沒買,這是我圖書館借的一本,我還借的是第一版,沒有在當當上找到它的封面圖,就自己拍了一張,略有些破舊,請大家不要介意。這本書網傳都很好,很適合SLAM科研人,是我打開方式不對還是我太菜了,這書怎么看的下去嘛!!!知識點太多了,很詳細,超級詳細,有一種這書是百科全書的感覺,里面有講射影變換、單視圖幾何、兩視圖幾何、三視圖幾何以及N視圖幾何,這么說吧,只要是圖像變換相關的內容,都可以在這書上找到。我之前看論文講到三焦點張量,網上查了半天,沒懂,后來發現這書里講的很詳細,也很容易懂。這書還是不錯的。至于為什么沒有買第二版,有兩個原因,一是書架上放不下了,圖書館可以借,感覺沒有買的必要;第二個原因是,第二版書有點貴,我怕老板不報銷,當然了,這肯定不是主要原因。總之,我覺得如果想要持續在SLAM領域進行研究的,可以入手一本,有些時候這些小知識點可能會增加對文章的理解。但對于新入門的就不太建議了,有點摸不著頭腦的感覺。

        【食用指南】可以先閱讀目錄,對于本書大致有哪些內容有個了解,然后按需使用,論文中遇到需要補充的知識點再進行查閱,不建議從頭到尾通讀。

        【推薦指數】★★

        8、【概率機器人】

        2.png

        這本書是新入手的,上周才買的,購買原因有二,一是網上推薦的,我覺得可以買來顯擺顯擺;二是老板報銷,當然了,這肯定不是主要原因。整本書分為了四個部分,基礎知識,定位,地圖構建,規劃與控制。第一部分主要講了濾波,KF、EKF、UKF、貝葉斯等都講到了,濾波部分以理論為主,沒有代碼,但是又基本的算法流程圖,整體看來比較偏概率論,看著有點頭痛。定位部分主要講了馬爾可夫定位和柵格定位,這部分的圖很可愛,有一個小小的機器人,長得有點像小蘿卜,依然沒有代碼支持,看著有點暈。第三部分介紹了SLAM,有EKF-SLAM、GraphSLAM、FastSLAM等,我看了EKF-SLAM部分,有點難懂,當然,這和我概率論沒學好有很大關系。最后一部分規劃與控制,講的是馬爾可夫決策,具體什么我不懂,感覺很高端的樣子,但后期我應該還會仔細閱讀的。總的來說,這本書,不適合新手,比較理論,有點難理解,沒有代碼支撐,比較適合想要提升自己算法水平的同學。

        【食用指南】難嚼,得慢慢嚼

        【推薦指數】★

        9、【機器人學中的狀態估計】

        1.png

        這也是我最近新買的一本書,買它的原因和上本書一樣---都是為了學習。這本書相比概率機器人來說更偏SLAM一些,總體分為三部分,狀態估計機理,三維空間運動機理,應用。也是比較理論化的一本書,沒有代碼支撐。第一部分主要講了線性的狀態估計和非線性的狀態估計,第二部分主要講了幾何學基礎知識和李群,第三講講了位姿估計,BA等知識點。總體來看,要比概率機器人更好懂一些,兩本書都是偏理論的,但狀態估計從排版、內容上來說要比概率機器人更容易接受一些。同樣,這本書推薦想在算法上有一些提升的同學,如果碩士沒有想要以后從事這方面工作的,我覺得可以不用為難自己了,畢竟,理論看著也頭疼,而且這本書還沒有插圖,通篇公式與文字。

        【食用指南】偶爾可以拿來為難為難自己

        【推薦指數】★☆

        【寫在最后的話】

        由于網絡上的信息很多,知識也很全面,很多人開始放棄紙質書,直接從網絡上開始入門,我覺得這樣會使得你的知識沒有層次,不能很完整的搭建你的系統框架,學姐還是建議入手基本基礎的書,仔細耐心閱讀,建立自己對這個領域的框架理解,然后再通過論文逐點細看。其他一些工具書也可以按需入手,作為對自己知識點盲區的補充。這次的SLAM書籍分享就這些了,如果有其他想要咨詢的問題或者想要我測評的書籍,歡迎留言。  

        本文僅做學術分享,如有侵權,請聯系刪文。

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞:

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平远县| 西充县| 景谷| 阳东县| 高淳县| 金湖县| 晋中市| 江西省| 蓝山县| 阿克| 内丘县| 额尔古纳市| 冕宁县| 边坝县| 小金县| 临沧市| 同仁县| 金沙县| 五莲县| 德惠市| 尉犁县| 神木县| 京山县| 克东县| 洪洞县| 高要市| 绩溪县| 乌苏市| 乐平市| 玉溪市| 高邮市| 蕉岭县| 巴林左旗| 通海县| 泽库县| 大荔县| 固阳县| 泗水县| 潜江市| 桃源县| 海南省|