視覺SLAM十四講:從理論到實踐(第2版)
鏈接:https://pan.baidu.com/s/1ESYoXAb7xe5PUo2ZHD1XKQ?pwd=k2qu?
提取碼:k2qu

編輯推薦
適讀人群 :本書可以作為對 SLAM 感興趣的研究人員的入門自學(xué)材料,也可以作為 SLAM 相關(guān)的高校本科生或研究生課程教材使用。
高博個性簽名限量!SLAM華語原創(chuàng)首著升級版!彩色插圖|更多實例|更深內(nèi)容|更完善的工程項目|更易懂的表達(dá)。余凱譚平等業(yè)內(nèi)大咖力薦!
√ SLAM華語原創(chuàng)首著升級版
√ 彩色插圖|更多實例|更深內(nèi)容|更完善的工程項目|更易懂的表達(dá)
內(nèi)容簡介
本書系統(tǒng)介紹了視覺 SLAM(同時定位與地圖構(gòu)建)所需的基本知識與核心算法,既包括數(shù)學(xué)理論基礎(chǔ),如三維空間的剛體運動、非線性優(yōu)化,又包括計算機視覺的算法實現(xiàn),例如多視圖幾何、回環(huán)檢測等。此外,我們還提供了大量的實例代碼供讀者學(xué)習(xí)研究,從而更深入地掌握這些內(nèi)容。本書可以作為對 SLAM 感興趣的研究人員的入門自學(xué)材料,也可以作為 SLAM 相關(guān)的高校本科生或研究生課程教材使用。
作者簡介
高翔,清華大學(xué)自動化系博士,慕尼黑工業(yè)大學(xué)博士后。研究興趣主要為計算機視覺、定位與建圖、機器學(xué)習(xí)等,主要著、譯作包括《視覺SLAM十四講:從理論到實踐》、《機器人學(xué)中的狀態(tài)估計》,在RAS、Auto Robotics、IROS等期刊會議上發(fā)表論文,現(xiàn)從事自動駕駛車輛研發(fā)工作。
目錄
第 1 講 預(yù)備知識 1
1.1 本書講什么 1
1.2 如何使用本書 3
1.2.1 組織方式 3
1.2.2 代碼 5
1.2.3 面向的讀者 6
1.3 風(fēng)格約定 6
1.4 致謝和聲明 8
第 1 部分 數(shù)學(xué)基礎(chǔ) 10
第 2 講 初識 SLAM 11
2.1 引子:小蘿卜的例子 13
2.2 經(jīng)典視覺 SLAM 框架 19
2.2.1 視覺里程計 20
2.2.2 后端優(yōu)化 21
2.2.3 回環(huán)檢測 22
2.2.4 建圖 23
2.3 SLAM 問題的數(shù)學(xué)表述 24
2.4 實踐:編程基礎(chǔ) 27
2.4.1 安裝 Linux 操作系統(tǒng) 27
2.4.2 Hello SLAM 29
2.4.3 使用 cmake 30
2.4.4 使用庫 32
2.4.5 使用 IDE 35
第 3 講 三維空間剛體運動 40
3.1 旋轉(zhuǎn)矩陣 42
3.1.1 點、向量和坐標(biāo)系 42
3.1.2 坐標(biāo)系間的歐氏變換 43
3.1.3 變換矩陣與齊次坐標(biāo) 46
3.2 實踐:Eigen 47
3.3 旋轉(zhuǎn)向量和歐拉角 53
3.3.1 旋轉(zhuǎn)向量 53
3.3.2 歐拉角 54
3.4 四元數(shù) 56
3.4.1 四元數(shù)的定義 56
3.4.2 四元數(shù)的運算 57
3.4.3 用四元數(shù)表示旋轉(zhuǎn) 59
3.4.4 四元數(shù)到其他旋轉(zhuǎn)表示的轉(zhuǎn)換 59
3.5 * 相似、仿射、射影變換 61
3.6 實踐:Eigen 幾何模塊 62
3.6.1 Eigen 幾何模塊的數(shù)據(jù)演示 62
3.6.2 實際的坐標(biāo)變換例子 64
3.7 可視化演示 66
3.7.1 顯示運動軌跡 66
3.7.2 顯示相機的位姿 69
第 4 講 李群與李代數(shù) 71
4.1 李群與李代數(shù)基礎(chǔ) 73
4.1.1 群 73
4.1.2 李代數(shù)的引出 74
4.1.3 李代數(shù)的定義 76
4.1.4 李代數(shù) so(3) 76
4.1.5 李代數(shù) se(3) 77
4.2 指數(shù)與對數(shù)映射 78
4.2.1 SO(3) 上的指數(shù)映射 78
4.2.2 SE(3) 上的指數(shù)映射 80
4.3 李代數(shù)求導(dǎo)與擾動模型 81
4.3.1 BCH 公式與近似形式 81
4.3.2 SO(3) 上的李代數(shù)求導(dǎo) 83
4.3.3 李代數(shù)求導(dǎo) 84
4.3.4 擾動模型(左乘)85
4.3.5 SE(3) 上的李代數(shù)求導(dǎo) 85
4.4 實踐:Sophus 86
4.4.1 Sophus 的基本使用方法 86
4.4.2 例子:評估軌跡的誤差 89
4.5 * 相似變換群與李代數(shù) 92
4.6 小結(jié) 93
第 5 講 相機與圖像 95
5.1 相機模型 97
5.1.1 針孔相機模型 97
5.1.2 畸變模型 100
5.1.3 雙目相機模型 103
5.1.4 RGB-D 相機模型 104
5.2 圖像 106
5.3 實踐:計算機中的圖像 107
5.3.1 OpenCV 的基本使用方法 107
5.3.2 圖像去畸變 112
5.4 實踐:3D 視覺 113
5.4.1 雙目視覺 113
5.4.2 RGB-D 視覺 115
第 6 講 非線性優(yōu)化 119
6.1 狀態(tài)估計問題 121
6.1.1 批量狀態(tài)估計與最大后驗估計 121
6.1.2 最小二乘的引出 123
6.1.3 例子:批量狀態(tài)估計 125
6.2 非線性最小二乘 126
6.2.1 一階和二階梯度法 127
6.2.2 高斯牛頓法 128
6.2.3 列文伯格—馬夸爾特方法130
6.3 實踐:曲線擬合問題 132
6.3.1 手寫高斯牛頓法 132
6.3.2 使用 Ceres 進(jìn)行曲線擬合 136
6.3.3 使用 g2o 進(jìn)行曲線擬合 141
6.4 小結(jié) 148
第 2 部分 實踐應(yīng)用 150
第 7 講 視覺里程計 1 151
7.1 特征點法 153
7.1.1 特征點 153
7.1.2 ORB 特征 155
7.1.3 特征匹配 158
7.2 實踐:特征提取和匹配 159
7.2.1 OpenCV 的 ORB 特征 159
7.2.2 手寫 ORB 特征 162
7.2.3 計算相機運動 165
7.3 2D-2D:對極幾何 165
7.3.1 對極約束 165
7.3.2 本質(zhì)矩陣 168
7.3.3 單應(yīng)矩陣 170
7.4 實踐:對極約束求解相機運動 172
7.5 三角測量 177
7.6 實踐:三角測量 178
7.6.1 三角測量代碼 178
7.6.2 討論 179
7.7 3D?2D:PnP 180
7.7.1 直接線性變換 180
7.7.2 P3P 182
7.7.3 最小化重投影誤差求解 PnP 184
7.8 實踐:求解 PnP 188
7.8.1 使用 EPnP 求解位姿 188
7.8.2 手寫位姿估計 189
7.8.3 使用 g2o 進(jìn)行 BA 優(yōu)化 191
7.9 3D-3D:ICP 196
7.9.1 SVD 方法 196
7.9.2 非線性優(yōu)化方法 198
7.10 實踐:求解 ICP 199
7.10.1 實踐:SVD 方法 199
7.10.2 實踐:非線性優(yōu)化方法 201
7.11 小結(jié) 203
第 8 講 視覺里程計 2 205
8.1 直接法的引出 207
8.2 2D 光流 208
8.3 實踐:LK 光流 210
8.3.1 使用 LK 光流 210
8.3.2 用高斯牛頓法實現(xiàn)光流 211
8.3.3 光流實踐小結(jié) 218
8.4 直接法 218
8.4.1 直接法的推導(dǎo) 218
8.4.2 直接法的討論 221
8.5 實踐:直接法 221
8.5.1 單層直接法 221
8.5.2 多層直接法 226
8.5.3 結(jié)果討論 227
8.5.4 直接法優(yōu)缺點總結(jié) 230
第 9 講 后端 1 232
9.1 概述 234
9.1.1 狀態(tài)估計的概率解釋 234
9.1.2 線性系統(tǒng)和 KF 236
9.1.3 非線性系統(tǒng)和 EKF 239
9.1.4 EKF 的討論 241
9.2 BA 與圖優(yōu)化 242
9.2.1 投影模型和 BA 代價函數(shù) 242
9.2.2 BA 的求解 243
9.2.3 稀疏性和邊緣化 245
9.2.4 魯棒核函數(shù) 251
9.3 實踐:Ceres BA 253
9.3.1 BAL 數(shù)據(jù)集 253
9.3.2 Ceres BA 的書寫 253
9.4 實踐:g2o 求解 BA 257
9.5 小結(jié) 263
第 10 講 后端 2 265
10.1 滑動窗口濾波和優(yōu)化 266
10.1.1 實際環(huán)境下的 BA 結(jié)構(gòu) 266
10.1.2 滑動窗口法 267
10.2 位姿圖 270
10.2.1 位姿圖的意義 270
10.2.2 位姿圖的優(yōu)化 270
10.3 實踐:位姿圖優(yōu)化 272
10.3.1 g2o 原生位姿圖 272
10.3.2 李代數(shù)上的位姿圖優(yōu)化 277
10.3.3 小結(jié) 282
第 11 講 回環(huán)檢測 283
11.1 概述 285
11.1.1 回環(huán)檢測的意義 285
11.1.2 回環(huán)檢測的方法 286
11.1.3 準(zhǔn)確率和召回率 287
11.2 詞袋模型 289
11.3 字典 291
11.3.1 字典的結(jié)構(gòu) 291
11.3.2 實踐:創(chuàng)建字典 292
11.4 相似度計算 295
11.4.1 理論部分 295
11.4.2 實踐:相似度的計算 296
11.5 實驗分析與評述 300
11.5.1 增加字典規(guī)模 300
11.5.2 相似性評分的處理 302
11.5.3 關(guān)鍵幀的處理 302
11.5.4 檢測之后的驗證 303
11.5.5 與機器學(xué)習(xí)的關(guān)系 303
第 12 講 建圖305
12.1 概述 306
12.2 單目稠密重建 308
12.2.1 立體視覺 308
12.2.2 極線搜索與塊匹配 309
12.2.3 高斯分布的深度濾波器 311
12.3 實踐:單目稠密重建 314
12.3.1 實驗分析與討論 323
12.3.2 像素梯度的問題 324
12.3.3 逆深度 325
12.3.4 圖像間的變換 326
12.3.5 并行化:效率的問題 327
12.3.6 其他的改進(jìn) 327
12.4 RGB-D 稠密建圖 328
12.4.1 實踐:點云地圖 328
12.4.2 從點云重建網(wǎng)格 333
12.4.3 八叉樹地圖 336
12.4.4 實踐:八叉樹地圖 338
12.5 * TSDF 地圖和 Fusion 系列 340
12.6 小結(jié) 343
第 13 講 實踐:設(shè)計 SLAM 系統(tǒng) 345
13.1 為什么要單獨列工程章節(jié) 346
13.2 工程框架 347
13.3 實現(xiàn) 349
13.3.1 實現(xiàn)基本數(shù)據(jù)結(jié)構(gòu) 349
13.3.2 前端 354
13.3.3 后端 357
13.4 實驗效果 361
第 14 講 SLAM:現(xiàn)在與未來 363
14.1 當(dāng)前的開源方案 364
14.1.1 MonoSLAM 364
14.1.2 PTAM 365
14.1.3 ORB-SLAM 366
14.1.4 LSD-SLAM 369
14.1.5 SVO 370
14.1.6 RTAB-MAP 371
14.1.7 其他 372
14.2 未來的 SLAM 話題 372
14.2.1 視覺 + 慣性導(dǎo)航 SLAM 373
14.2.2 語義 SLAM 374
14.2.3 SLAM 的未來 375
附錄 A 高斯分布的性質(zhì) 377
附錄 B 矩陣求導(dǎo) 380
附錄 C ROS 入門 382
參考文獻(xiàn) 385
查看全部↓
前言/序言
《視覺 SLAM 十四講:從理論到實踐》出版已經(jīng)兩年多。兩年來,這本書經(jīng)歷了 13 次重印,在 GitHub 上擁有 2500 個星星,也在業(yè)界引起了廣泛的關(guān)注和討論。大多數(shù)讀者評價是正面的,當(dāng)然,書中也有些地方不夠令人滿意。例如,這本書面向初學(xué)者,有些應(yīng)該深入的地方講得不夠深入;書中的數(shù)學(xué)符號不夠統(tǒng)一,有些地方容易令讀者產(chǎn)生誤解;工程實踐章節(jié)內(nèi)容不夠豐富,介紹較淺,等等。實際上,我在 2016 年中期開始創(chuàng)作第 1 版,所有文字、圖片和代碼都是從零開始準(zhǔn)備的,再加上當(dāng)時在讀博士,也是第一次寫這么厚的書,錯漏在所難免。2018 年,我在慕尼黑工大給學(xué)生講 SLAM 課程,期間又積累了一些材料,所以本書從內(nèi)容上更豐富、更合理。在第 1 版的基礎(chǔ)上做了如下改動:
1. 更多的實例。增加了一些實驗代碼來介紹算法的原理。在第 1 版中,多數(shù)實踐代碼調(diào)用了各種庫中的內(nèi)置函數(shù),現(xiàn)在我認(rèn)為更深入地介紹底層計算會更好,所以本書中的許多代碼,除了調(diào)用庫函數(shù),還提供了底層的實現(xiàn)。
2. 更深入的內(nèi)容。主要是從第 7 講至第 12 講的部分,同時刪除了一些泛泛而談的邊角料(比如 GTSAM 相關(guān)內(nèi)容?)。對第 1 版大部分?jǐn)?shù)學(xué)公式進(jìn)行了審查,重寫了那些容易引起誤解的內(nèi)容。
3. 更完善的工程項目。將第 1 版的第 9 講移至第 13 講。于是,我們可以在介紹了所有必要知識之后,向大家展現(xiàn)一個完整的 SLAM 系統(tǒng)是如何工作的。相比于第 1 版,我在本書的項目中將追求以精簡的代碼實現(xiàn)完整的功能,你會得到一個由幾百行代碼實現(xiàn)的、有完整前后端的 SLAM 系統(tǒng)。