視覺SLAM十四講:從理論到實踐(第2版)
  • 推薦1
  • 收藏5
  • 瀏覽266

視覺SLAM十四講:從理論到實踐(第2版)

高翔 (作者) 

  • 書  號:978-7-121-36942-1
  • 出版日期:2019-07-01
  • 頁  數:408
  • 開  本:16(185*235)
  • 出版狀態:圖書立項
  • 維護人:鄭柳潔
紙質版 ¥108.00
本書系統介紹了視覺 SLAM(同時定位與地圖構建)所需的基本知識與核心算法,既包括數學理論基礎,如三維空間的剛體運動、非線性優化,又包括計算機視覺的算法實現,例如多視圖幾何、回環檢測等。此外,我們還提供了大量的實例代碼供讀者學習研究,從而更深入地掌握這些內容。
本書可以作為對 SLAM 感興趣的研究人員的入門自學材料,也可以作為 SLAM 相關的高校本科生或研究生課程教材使用。
視覺SLAM入門比較難,編程實踐很少,本書在這兩方面有所突破。
高翔,清華大學自動化系博士,慕尼黑工業大學博士后。研究興趣主要為計算機視覺、定位與建圖、機器學習等,主要著、譯作包括《視覺SLAM十四講:從理論到實踐》、《機器人學中的狀態估計》,在RAS、Auto Robotics、IROS等期刊會議上發表論文,現從事自動駕駛車輛研發工作。
第二版序
《視覺 SLAM 十四講:從理論到實踐》出版已經兩年多。兩年來,這本書經歷了 13 次重印,在 GitHub 上擁有 2500 個星星,也在業界引起了廣泛的關注和討論。大多數讀者評價是正面的,當然,書中也有些地方不夠令人滿意。例如,這本書面向初學者,有些應該深入的地方講得不夠深入;書中的數學符號不夠統一,有些地方容易令讀者產生誤解;工程實踐章節內容不夠豐富,介紹較淺,等等。實際上,我在 2016 年中期開始創作第 1 版,所有文字、圖片和代碼都是從零開始準備的,再加上當時在讀博士,也是第一次寫這么厚的書,錯漏在所難免。2018 年,我在慕尼黑工大給學生講 SLAM 課程,期間又積累了一些材料,所以本書從內容上更豐富、更合理。在第 1 版的基礎上做了如下改動:
1. 更多的實例。增加了一些實驗代碼來介紹算法的原理。在第 1 版中,多數實踐代碼調用了各種庫中的內置函數,現在我認為更深入地介紹底層計算會更好,所以本書中的許多代碼,除了調用庫函數,還提供了底層的實現。
2. 更深入的內容。主要是從第 7 講至第 12 講的部分,同時刪除了一些泛泛而談的邊角料(比如 GTSAM 相關內容?)。對第 1 版大部分數學公式進行了審查,重寫了那些容易引起誤解的內容。
3. 更完善的工程項目。將第 1 版的第 9 講移至第 13 講。于是,我們可以在介紹了所有必要知識之后,向大家展現一個完整的 SLAM 系統是如何工作的。相比于第 1 版,我在本書的項目中將追求以精簡的代碼實現完整的功能,你會得到一個由幾百行代碼實現的、有完整前后端的 SLAM 系統。
4. 更通俗、簡潔的表達。我覺得這是一本好書的標準,特別是當介紹一些看起來高深莫測的數學知識時。我重新制作了部分插圖,使它們即使在黑白印刷條件下也能看起來很清楚。
當然,每講前的簡筆畫我是不會改的!
總之,我盡量做到深入淺出,也希望本書能夠給你帶來更加舒適的閱讀體驗。

目錄

第 1 講 預備知識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 本書講什么....................................................................................................... 1
1.2 如何使用本書 ................................................................................................... 3
1.2.1 組織方式................................................................................................ 3
1.2.2 代碼....................................................................................................... 5
1.2.3 面向的讀者............................................................................................. 6
1.3 風格約定.......................................................................................................... 6
1.4 致謝和聲明....................................................................................................... 8

第 1 部分 數學基礎 10
第 2 講 初識 SLAM. . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1 引子:小蘿卜的例子 ......................................................................................... 13
2.2 經典視覺 SLAM 框架 ........................................................................................ 19
2.2.1 視覺里程計............................................................................................. 20
2.2.2 后端優化................................................................................................ 21
2.2.3 回環檢測................................................................................................ 22
2.2.4 建圖....................................................................................................... 23
2.3 SLAM 問題的數學表述...................................................................................... 24
2.4 實踐:編程基礎................................................................................................ 27
2.4.1 安裝 Linux 操作系統................................................................................ 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 旋轉矩陣.......................................................................................................... 42
3.1.1 點、向量和坐標系................................................................................... 42
3.1.2 坐標系間的歐氏變換 ............................................................................... 43
3.1.3 變換矩陣與齊次坐標 ............................................................................... 46
3.2 實踐:Eigen...................................................................................................... 47
3.3 旋轉向量和歐拉角............................................................................................. 53
3.3.1 旋轉向量................................................................................................ 53
3.3.2 歐拉角 ................................................................................................... 54
3.4 四元數 ............................................................................................................. 56
3.4.1 四元數的定義 ......................................................................................... 56
3.4.2 四元數的運算 ......................................................................................... 57
3.4.3 用四元數表示旋轉................................................................................... 59
3.4.4 四元數到其他旋轉表示的轉換.................................................................. 59
3.5 * 相似、仿射、射影變換.................................................................................... 61
3.6 實踐:Eigen 幾何模塊 ....................................................................................... 62
3.6.1 Eigen 幾何模塊的數據演示....................................................................... 62
3.6.2 實際的坐標變換例子 ............................................................................... 64
3.7 可視化演示....................................................................................................... 66
3.7.1 顯示運動軌跡 ......................................................................................... 66
3.7.2 顯示相機的位姿...................................................................................... 69
第 4 講 李群與李代數 . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.1 李群與李代數基礎............................................................................................. 73
4.1.1 群.......................................................................................................... 73
4.1.2 李代數的引出 ......................................................................................... 74
4.1.3 李代數的定義 ......................................................................................... 76
4.1.4 李代數 so(3)........................................................................................... 76
4.1.5 李代數 se(3) ........................................................................................... 77
4.2 指數與對數映射................................................................................................ 78
4.2.1 SO(3) 上的指數映射................................................................................ 78
4.2.2 SE(3) 上的指數映射 ................................................................................ 80
4.3 李代數求導與擾動模型...................................................................................... 81
4.3.1 BCH 公式與近似形式 .............................................................................. 81
4.3.2 SO(3) 上的李代數求導............................................................................. 83
4.3.3 李代數求導............................................................................................. 84
4.3.4 擾動模型(左乘)................................................................................... 85
4.3.5 SE(3) 上的李代數求導............................................................................. 85
4.4 實踐:Sophus.................................................................................................... 86
4.4.1 Sophus 的基本使用方法 ........................................................................... 86
4.4.2 例子:評估軌跡的誤差............................................................................ 89
4.5 * 相似變換群與李代數 ....................................................................................... 92
4.6 小結................................................................................................................. 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 講 非線性優化 . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
6.1 狀態估計問題 ................................................................................................... 121
6.1.1 批量狀態估計與最大后驗估計.................................................................. 121
6.1.2 最小二乘的引出...................................................................................... 123
6.1.3 例子:批量狀態估計 ............................................................................... 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 進行曲線擬合 ......................................................................... 136
6.3.3 使用 g2o 進行曲線擬合............................................................................ 141
6.4 小結................................................................................................................. 148

第 2 部分 實踐應用 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 本質矩陣................................................................................................ 168
7.3.3 單應矩陣................................................................................................ 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 進行 BA 優化 ............................................................................ 191
7.9 3D?3D:ICP..................................................................................................... 196
7.9.1 SVD 方法 ............................................................................................... 196
7.9.2 非線性優化方法...................................................................................... 198
7.10 實踐:求解 ICP................................................................................................. 199
7.10.1 實踐:SVD 方法 ..................................................................................... 199
7.10.2 實踐:非線性優化方法............................................................................ 201
7.11 小結................................................................................................................. 203
第 8 講 視覺里程計 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.1 直接法的引出 ................................................................................................... 207
8.2 2D 光流............................................................................................................ 208
8.3 實踐:LK 光流 ................................................................................................. 210
8.3.1 使用 LK 光流.......................................................................................... 210
8.3.2 用高斯牛頓法實現光流............................................................................ 211
8.3.3 光流實踐小結 ......................................................................................... 218
8.4 直接法 ............................................................................................................. 218
8.4.1 直接法的推導 ......................................................................................... 218
8.4.2 直接法的討論 ......................................................................................... 221
8.5 實踐:直接法 ................................................................................................... 221
8.5.1 單層直接法............................................................................................. 221
8.5.2 多層直接法............................................................................................. 226
8.5.3 結果討論................................................................................................ 227
8.5.4 直接法優缺點總結................................................................................... 230
第 9 講 后端 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
9.1 概述................................................................................................................. 234
9.1.1 狀態估計的概率解釋 ............................................................................... 234
9.1.2 線性系統和 KF........................................................................................ 236
9.1.3 非線性系統和 EKF .................................................................................. 239
9.1.4 EKF 的討論 ............................................................................................ 241
9.2 BA 與圖優化..................................................................................................... 242
9.2.1 投影模型和 BA 代價函數......................................................................... 242
9.2.2 BA 的求解.............................................................................................. 243
9.2.3 稀疏性和邊緣化...................................................................................... 245
9.2.4 魯棒核函數............................................................................................. 251
9.3 實踐:Ceres BA ................................................................................................ 253
9.3.1 BAL 數據集............................................................................................ 253
9.3.2 Ceres BA 的書寫 ..................................................................................... 253
9.4 實踐:g2o 求解 BA ........................................................................................... 257
9.5 小結................................................................................................................. 263
第 10 講 后端 2. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
10.1 滑動窗口濾波和優化 ......................................................................................... 266
10.1.1 實際環境下的 BA 結構 ............................................................................ 266
10.1.2 滑動窗口法............................................................................................. 267
10.2 位姿圖 ............................................................................................................. 270
10.2.1 位姿圖的意義 ......................................................................................... 270
10.2.2 位姿圖的優化 ......................................................................................... 270
10.3 實踐:位姿圖優化............................................................................................. 272
10.3.1 g2o 原生位姿圖....................................................................................... 272
10.3.2 李代數上的位姿圖優化............................................................................ 277
10.3.3 小結....................................................................................................... 282
第 11 講 回環檢測 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
11.1 概述................................................................................................................. 285
11.1.1 回環檢測的意義...................................................................................... 285
11.1.2 回環檢測的方法...................................................................................... 286
11.1.3 準確率和召回率...................................................................................... 287
11.2 詞袋模型.......................................................................................................... 289
11.3 字典................................................................................................................. 291
11.3.1 字典的結構............................................................................................. 291
11.3.2 實踐:創建字典...................................................................................... 292
11.4 相似度計算....................................................................................................... 295
11.4.1 理論部分................................................................................................ 295
11.4.2 實踐:相似度的計算 ............................................................................... 296
11.5 實驗分析與評述................................................................................................ 300
11.5.1 增加字典規模 ......................................................................................... 300
11.5.2 相似性評分的處理................................................................................... 302
11.5.3 關鍵幀的處理 ......................................................................................... 302
11.5.4 檢測之后的驗證...................................................................................... 303
11.5.5 與機器學習的關系................................................................................... 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 其他的改進............................................................................................. 327
12.4 RGB-D 稠密建圖............................................................................................... 328
12.4.1 實踐:點云地圖...................................................................................... 328
12.4.2 從點云重建網格...................................................................................... 333
12.4.3 八叉樹地圖............................................................................................. 336
12.4.4 實踐:八叉樹地圖................................................................................... 338
12.5 * TSDF 地圖和 Fusion 系列................................................................................. 340
12.6 小結................................................................................................................. 343
第 13 講 實踐:設計 SLAM 系統 . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
13.1 為什么要單獨列工程章節................................................................................... 346
13.2 工程框架.......................................................................................................... 347
13.3 實現................................................................................................................. 349
13.3.1 實現基本數據結構................................................................................... 349
13.3.2 前端....................................................................................................... 354
13.3.3 后端....................................................................................................... 357
13.4 實驗效果.......................................................................................................... 361
第 14 講 SLAM:現在與未來 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
14.1 當前的開源方案................................................................................................ 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 視覺 + 慣性導航 SLAM............................................................................ 373
14.2.2 語義 SLAM............................................................................................. 374
14.2.3 SLAM 的未來 ......................................................................................... 375
附錄 A 高斯分布的性質 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
附錄 B 矩陣求導 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
附錄 C ROS 入門 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
參考文獻 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

本書勘誤

印次
  • 頁碼:1  •  行數:2  •  印次: 1

    第一頁右上角第一幅圖 2D拓撲地圖沒有圖字。

    冬瓜大俠 提交于 2019/8/23 10:43:01
    鄭柳潔 確認于 2019/9/18 9:05:33

讀者評論

  • 您好!第五講實踐中雙目視覺,我把代碼下載來,編譯一直無法成功。我用的是16.04版本,是不是和18版的有差別。您這能否提供個ubuntu16.04成功的CMakeList.tex文件(編譯失敗,感覺是這個文件出的問題),謝謝

    zhengjianjie發表于 2019/9/29 16:20:57
  • 您好,我想問一下為什么運行VO的時候,第一幀ORB耗時非常長,比后面慢一個量級

    jingjing發表于 2019/9/8 9:02:45
  • 高博您好,買了第一版以后覺得有一些還是很迷惑,然后看網上說第二版比第一版增加了很多東西,所以又買了一本。想問一下會有后面幾章節的視頻講解么,以及代碼解析什么的?

    燒雞發表于 2019/8/18 9:43:37
    • 請仔細看第一章哈,可以回答您的疑問

      鄭柳潔發表于 2019/9/29 9:42:22

相關博文

  • SLAM——計算機對世界的感知與理解

    SLAM——計算機對世界的感知與理解

    管理員賬號 2019-08-14

    在移動互聯網大潮之后,自動駕駛、無人機、服務機器人等人工智能硬件會成為下一個產業爆發點,其中關鍵的技術之一就是動態定位和環境建模的SLAM技術。 在計算機視覺(Computer Vision)創立之初,人們就想象著有朝一日計算機能...

    管理員賬號 2019-08-14
    126 3 0 0

推薦用戶

0k000澳客网竞彩