編輯推薦
適讀人群 :本書可作為自動駕駛和機器人定位領域的教材,適用於對該方向感興趣的學生、教師和科研人員。
本書特色
√主要用C++17作為C++標準
√追求理論與實踐統一
√注重原理層面的代碼實現
√提到的演算法都有對應代碼實現
√讓演算法運行得比經典實現更流暢
√從零開始搭建一套完整的激光SLAM方案
√本書配套代碼全部開源
√配習題
本書內容架構
第1部分 基礎數學知識
√介紹基礎的幾何學、運動學知識
√回顧狀態估計理論的基礎知識
√介紹主流的處理慣性測量單元的方法:經典的誤差狀態卡爾曼濾波器;預積分方法
第2部分 激光雷達的定位與建圖
介紹激光SLAM的內容
√基礎的點雲處理方法
√實現經典的數據結構
√2D SLAM
√3D SLAM
√介紹松耦合的激光雷達–慣性導航里程計
第3部分 應用實例
介紹經典的SLAM應用
√實現一個緊耦合的激光雷達–慣性導航里程計
√介紹離線的點雲地圖構建方法
√介紹在已有點雲地圖中進行高精定位的方法
√介紹自動駕駛車輛的實時定位系統
內容簡介
本書系統介紹自動駕駛與機器人中的 SLAM 技術,從零開始搭建一套完整的激光雷達與慣性導航定位 建圖方案。理論方面使用現代化流形方法進行推導,代碼方面則使用簡潔明快的現代 C++ 語言實現。本書 從最基本的理論與程序代碼開始,一步步增加各種模塊,省略複雜的工程細節,最後形成一個完整的系統。本 書在邏輯上是完整自洽的,在內容上則是通俗易懂的。 本書從經典的卡爾曼濾波器講到現代的預積分和圖優化理論。讀者可以通過實際操作,將這些演算法重新 實現一遍,並比較它們之間的異同。本書內容包括慣性導航、組合導航、誤差拓展卡爾曼濾波器、預積分和 圖優化、二維和三維激光點雲的表達、最近鄰數據結構、點雲配准演算法,等等。最後,本書將各種演算法模塊 組合起來,形成完整的慣性里程計、離線地圖構建和實時定位系統。 本書可作為自動駕駛和機器人定位領域的教材,適用於對該方向感興趣的學生、教師和科研人員。
作者簡介
高翔,慕尼黑工業大學博士后,清華大學自動化系博士。長期從事SLAM的研究工作,研究興趣為機器人中的視覺SLAM技術、機器學習與SLAM的結合。主要著、譯作包括《視覺SLAM十四講:從理論到實踐》《機器人學中的狀態估計》,在ICRA、IROS、IEEE RA-Letters、Transactions on Mechatronics、IEEE-ASME Robotics and Autonomous Systems、Autonomous Robots等國際知名期刊和會議上發表了多篇論文。
精彩書評
名家點評
本書是高翔的又一力作,涵蓋了自動駕駛與機器人中SLAM技術的關鍵理論和應用。本書深入淺出地介紹了激光SLAM的基礎知識、前沿演算法,並通過詳細的代碼示例將理論落到實處。本書既適合SLAM初學者進行學習實踐,也能讓富有經驗的專家從中獲益。無論是學術研究還是工程實踐,本書都能為自動駕駛和機器人領域的同學和工程師提供全面、豐富的資料。
——香港科技大學教授 譚平
一套完整的SLAM系統涉及許多問題,包括數學、演算法、編程和硬體,其入門難度很大,而目前成體系的教材較少。本書凝聚了高翔在SLAM領域多年的經驗,相信會成為SLAM經典教材。無論是新手還是有經驗的專家都可以從這本書中獲益。尤為難得的是,本書結合自動駕駛和機器人中許多實際問題給出了可以執行的C++源代碼。力薦本書給一線科研和工程實踐人員。
——哈佛大學助理教授 周昊胤
本書是高翔為SLAM學習者提供的又一精品之作,書中深入淺出地介紹了激光SLAM的基礎理論知識和一些前沿演算法,並且提供了大量實用的演算法代碼實現,非常適合SLAM初學者學習。
——東北大學機器人科學與工程學院教授 方正
本書以簡潔、精練的語言向讀者介紹了許多實用知識,包括卡爾曼濾波器、組合導航、激光雷達里程計、點雲建圖定位,等等。這些都是自動駕駛和機器人中廣泛應用的演算法與模塊。本書可以幫助讀者深入理解這些模塊的底層原理,也可以培養讀者寫出高質量的代碼。
——清華大學自動化系教授、系主任,信息科學技術學院副院長 張濤
本書全面、細緻地講解了自動駕駛和機器人中的SLAM技術,在基礎數學知識、慣性導航與組合導航、預積分的基礎上,深入淺出地講解了激光雷達定位與建圖,最後給出了應用實例。高翔在SLAM領域有深厚的功力,對技術的講解通俗易懂,並輔以代碼,能夠幫助讀者更深刻地理解其中的理論,更好地應用所學的知識和技術。本書能夠為自動駕駛和機器人領域的從業者提供全面且豐富的資料。
——西北工業大學教授 布樹輝
本書用極簡的風格把激光SLAM中的關鍵思想和理論講得一清二楚,並由淺入深、逐步遞進地展開了慣性導航系統、「慣性導航系統+衛星導航」,以及LO和LIO的神奇畫卷。同時,給出了一套完整、詳細、優雅的代碼樣例,將一切落到實處。其中的慣性導航演算法採用了極簡方案,適合新手理解和掌握,與嚴謹複雜的經典慣性導航演算法互補。本書提供了一套詳細的激光SLAM定位演算法,並以一種平易近人的方式,像一位專家一樣手把手地教你實現這套演算法。書中還在關鍵的地方給出了深入的指導和解釋。就像《視覺SLAM十四講:從理論到實踐》一樣,本書是學習激光SLAM的不二選擇。
——武漢大學衛星導航定位技術研究中心教授 牛小驥
讀者寄語
本書以流暢自然的方式介紹了自動駕駛和機器人領域中與SLAM相關的核心問題和基礎知 識。本書理論推導深入淺出,工程代碼優雅高效。讀完本書,相信讀者能夠對ESKF、預積分、卡爾曼濾波器與因子圖優化、松耦合/緊耦合LIO系統、激光SLAM與高精定位等內容有更深入的理解和體會,並能結合實際應用場景進行實踐。 ——王谷博士
本書解決了長期以來困擾我的問題:雖然在與機器人相關的期刊和會議中,新的SLAM論文不斷湧現,但我無法通過閱讀這些論文獲得具體的實現細節(雖然不少論文有開源代碼,但代碼的可讀性有限,我越看越迷惑)。本書用有限的文字和豐富規範的開源代碼,向讀者解釋了很多SLAM方法的核心演算法和詳細實現。機器人學是一門實踐科學,本書為讀者提供了大量SLAM關鍵演算法的知識和實現細節。例如,如何利用IMU產品手冊設置IMU運動方程雜訊參數,NDT有什麼高效直接的實現方法,如何實現松耦合/緊耦合的激光雷達里程計,等等。 ——林郁蔥
高翔所著的《視覺SLAM十四講:從理論到實踐》帶領我入門了視覺SLAM。本書循序漸進的內容設計使我的學習過程非常愉快,前面章節的理論和實踐不斷地成為後續章節的子模塊。讀到最後一章時,我發現自己不知不覺地搭建了非常複雜的 SLAM 系統。雖然本書著眼于自動駕駛和機器人領域,但以點見面,很多技術在其他領域的SLAM系統中同樣重要。例如VR、AR中的SLAM,同樣要用到卡爾曼濾波、預積分、子地圖、迴環檢測等技術! ——張博文
高翔所著的《視覺SLAM十四講:從理論到實踐》和本書給我帶來了莫大的幫助。學習SLAM后,我時常陷入複雜的知識體系中,找不到清晰的知識脈絡。本書對激光雷達及其他傳感器融合SLAM的知識框架進行梳理,讓我對SLAM技術體系的學習更加明確清晰。 ——在讀碩士 崔同學
本書延續了高翔的寫作風格,在理論方面講得通俗易懂,條理清晰,框架完整。書中提到、用到的理論,有開源代碼與之對應,對初學者來說,可以實現從理論到實踐的跨越。相信本書可以給許多SLAM初學者帶來收穫。 ——李勇良
本書由底層演算法講到頂層SLAM框架,循序漸進,有理論、有實踐,是不可多得的SLAM好書。尤其是其中關於多傳感器融合定位的知識,使我受益匪淺。 ——劉貴濤
閱讀完本書,我感到酣暢淋漓。所有的推理過程都非常流暢,前後邏輯嚴密。它像一本精彩的小說,卻沒有喪失專業性。本書的內容既有我預料中的,也有出乎意料的部分。總之,它非常精彩! ——孫天闊
本書延續了《視覺SLAM十四講:從理論到實踐》中生動有趣的語言風格、簡明易懂的公式推導過程、理論與實踐相結合的特點,為讀者揭開了SLAM技術在自動駕駛與機器人應用中的面紗,講解了ESKF、預積分、點雲處理、LIO系統、建圖定位等核心知識點。 ——劉宸希
本書是不可多得的寶藏書!書中詳細推導了LIO系統的各個組成部分並給出了非常有趣的代碼實現,為我學習道路中缺失的知識做了全面的補充。 ——在讀碩士 馮同學
本書兼具學術深度和實際應用價值。對學者而言,書中深入探討的SLAM理論基礎和前沿進展是一筆寶貴的知識財富。對初學者而言,將受益於其清晰的圖解和通俗易懂的文字,能夠在較短時間內建立起對SLAM的基本理解。在工程實踐方面,本書通過直觀、完善的代碼案例,為工 程師提供了實用的指南和參考方案。總的來說,本書為讀者提供了一把鑰匙,開啟了無限可能。 ——縱目科技演算法工程師 路古
本書採用統一的數學符號,並保持代碼與理論統一,內容循序漸進,乾貨滿滿!本書使用了極簡的代碼風格,涉及大量C++新特性。這些新特性正是我們在學校,甚至在工作中難以接觸到的代碼經驗。一種高效的學習方法是:閱讀本書的過程中,遇到不熟悉或不理解的地方就在cppreference文檔中進行查找,而不是必須先完整地閱讀新特性,再去查看本書提供的代碼示例。此外,每學習完一章就合上書,嘗試自己復現公式,即使沒達到復現的水平,也可以對著源碼手敲一遍,加深印象。只要動手實踐,就會有收穫!最後,本書的課後習題是對學習內容的拓展與提 升,請讀者認真思考,這樣才能「榨乾」本書的養分! ——陳梓傑博士
目錄
第一部分 基礎數學知識 1
第1章 自動駕駛 3
1 1 自動駕駛技術 3
1 1 1 自動駕駛能力與分級 3
1 1 2 L4 的典型業務 6
1 2 自動駕駛中的定位與地圖 10
1 2 1 為什麼L4自動駕駛需要定位與地圖 10
1 2 2 高精地圖的內容與生產 12
1 3 本書內容的介紹順序 14
第2章 基礎數學知識回顧 17
2 1 幾何學 19
2 1 1 坐標系 19
2 1 2 李群與李代數 26
2 1 3 SO(3)上的BCH線性近似式 27
2 2 運動學 27
2 2 1 李群視角下的運動學 28
2 2 2 四元數視角下的運動學 29
2 2 3 四元數的李代數與旋轉矢量間的轉換 30
2 2 4 其他幾種運動學表達方式 32
2 2 5 線速度與加速度 34
2 2 6 擾動模型與雅可比矩陣 35
2 3 運動學演示案例:圓周運動 37
2 4 濾波器與最優化理論 40
2 4 1 狀態估計問題與最小二乘法 40
2 4 2 卡爾曼濾波器 40
2 4 3 非線性系統的處理方法 41
2 4 4 最優化方法與圖優化 42
2 5 本章小結 44
習題 44
第3章 慣性導航與組合導航 47
3 1 IMU系統的運動學 49
3 1 1 關於IMU測量值的解釋 51
3 1 2 IMU測量方程中的雜訊模型 51
3 1 3 IMU的離散時間雜訊模型 53
3 1 4 現實中的IMU 54
3 2 使用IMU進行航跡推算 56
3 2 1 利用IMU數據進行短時間航跡推算 56
3 2 2 IMU遞推的代碼實驗 57
3 3 衛星導航 61
3 3 1 GNSS的分類與供應商 61
3 3 2 實際的RTK安裝與接收數據 63
3 3 3 常見的世界坐標系 64
3 3 4 RTK讀數的顯示 66
3 4 使用誤差狀態卡爾曼濾波器實現組合導航 72
3 4 1 ESKF的數學推導 72
3 4 2 離散時間的ESKF運動方程 77
3 4 3 ESKF的運動過程 78
3 4 4 ESKF的更新過程 79
3 4 5 ESKF的誤差狀態後續處理 80
3 5 實現ESKF的組合導航 82
3 5 1 ESKF的實現 82
3 5 2 實現預測過程 83
3 5 3 實現RTK觀測過程 84
3 5 4 ESKF系統的初始化 87
3 5 5 運行ESKF 90
3 5 6 速度觀測量 95
3 6 本章小結 98
習題 98
第4章 預積分學 99
4 1 IMU 狀態的預積分學 101
4 1 1 預積分的定義 101
4 1 2 預積分測量模型 103
4 1 3 預積分雜訊模型 106
4 1 4 零偏的更新 109
4 1 5 預積分模型歸結至圖優化 112
4 1 6 預積分的雅可比矩陣