視覺SLAM十四講

視覺SLAM十四講

《視覺SLAM十四講》 全稱《視覺SLAM十四講:從理論到實踐》,作者是高翔、張濤等,電子工業出版社2017年3月出版

基本信息

內容提要

《視覺SLAM十四講:從理論到實踐》系統介紹了視覺SLAM(同時定位與地圖構建)所需的基本知識與核心算法,既包括數學理論基礎,如三維空間的剛體運動、非線性最佳化,又包括計算機視覺的算法實現,例如多視圖幾何、迴環檢測等。此外,還提供了大量的實例代碼供讀者學習研究,從而更深入地掌握這些內容。

《視覺SLAM十四講:從理論到實踐》可以作為對SLAM 感興趣的研究人員的入門自學材料,也可以作為SLAM 相關的高校本科生或研究生課程教材使用。

目錄

第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 致謝和聲明7

第2 講初識SLAM 9

2.1 引子:小蘿蔔的例子11

2.2 經典視覺SLAM 框架17

2.2.1 視覺里程計17

2.2.2 後端最佳化19

2.2.3 迴環檢測20

2.2.4 建圖21

2.3 SLAM 問題的數學表述22

2.4 實踐:編程基礎 25

2.4.1 安裝Linux 作業系統25

2.4.2 Hello SLAM27

2.4.3 使用cmake28

2.4.4 使用庫30

2.4.5 使用IDE32

第3 講三維空間剛體運動37

3.1 旋轉矩陣39

3.1.1 點和向量,坐標系39

3.1.2 坐標系間的歐氏變換40

3.1.3 變換矩陣與齊次坐標42

3.2 實踐:Eigen 44

3.3 旋轉向量和歐拉角48

3.3.1 旋轉向量48

3.3.2 歐拉角50

3.4 四元數51

3.4.1 四元數的定義51

3.4.2 四元數的運算53

3.4.3 用四元數表示旋轉55

3.4.4 四元數到旋轉矩陣的轉換55

3.5 * 相似、仿射、射影變換56

3.6 實踐:Eigen 幾何模組57

3.7 可視化演示60

第4 講李群與李代數62

4.1 李群與李代數基礎 64

4.1.1 群64

4.1.2 李代數的引出65

4.1.3 李代數的定義 67

4.1.4 李代數so(3) 67

4.1.5 李代數se(3)68

4.2 指數與對數映射69

4.2.1 SO(3) 上的指數映射69

4.2.2 SE(3) 上的指數映射.70

4.3 李代數求導與擾動模型72

4.3.1 BCH 公式與近似形式72

4.3.2 SO(3) 李代數上的求導73

4.3.3 李代數求導74

4.3.4 擾動模型(左乘)75

4.3.5 SE(3) 上的李代數求導76

4.4 實踐:Sophus76

4.5 * 相似變換群與李代數.79

4.6 小結81

第5 講相機與圖像82

5.1 相機模型 84

5.1.1 針孔相機模型84

5.1.2 畸變87

5.1.3 雙目相機模型 90

5.1.4 RGB-D 相機模型92

5.2 圖像93

5.3 實踐:圖像的存取與訪問95

5.3.1 安裝OpenCV95

5.3.2 操作OpenCV 圖像96

5.4 實踐:拼接點雲99

第6 講非線性最佳化104

6.1 狀態估計問題106

6.1.1 最大後驗與最大似然106

6.1.2 最小二乘的引出 108

6.2 非線性最小二乘109

6.2.1 一階和二階梯度法110

6.2.2 高斯牛頓法111

6.2.3 列文伯格—馬夸爾特方法113

6.2.4 小結114

6.3 實踐:Ceres115

6.3.1 Ceres 簡介 116

6.3.2 安裝Ceres116

6.3.3 使用Ceres 擬合曲線 117

6.4 實踐:g2o121

6.4.1 圖最佳化理論簡介121

6.4.2 g2o 的編譯與安裝122

6.4.3 使用g2o 擬合曲線123

6.5 小結128

第7 講視覺里程計1130

7.1 特徵點法132

7.1.1 特徵點132

7.1.2 ORB 特徵134

7.1.3 特徵匹配137

7.2 實踐:特徵提取和匹配138

7.3 2D−2D: 對極幾何141

7.3.1 對極約束141

7.3.2 本質矩陣143

7.3.3 單應矩陣146

7.4 實踐:對極約束求解相機運動148

7.5 三角測量153

7.6 實踐:三角測量154

7.6.1 三角測量代碼154

7.6.2 討論156

7.7 3D−2D:PnP157

7.7.1 直接線性變換158

7.7.2 P3P159

7.7.3 Bundle Adjustment 161

7.8 實踐:求解PnP165

7.8.1 使用EPnP 求解位姿165

7.8.2 使用BA 最佳化166

7.9 3D−3D:ICP172

7.9.1 SVD 方法173

7.9.2 非線性最佳化方法 175

7.10 實踐:求解ICP176

7.10.1 SVD 方法176

7.10.2 非線性最佳化方法178

7.11 小結180

第8 講視覺里程計2182

8.1 直接法的引出184

8.2 光流(Optical Flow)185

8.3 實踐:LK 光流187

8.3.1 使用TUM 公開數據集187

8.3.2 使用LK 光流188

8.4 直接法(Direct Method)192

8.4.1 直接法的推導 192

8.4.2 直接法的討論195

8.5 實踐:RGB-D 的直接法196

8.5.1 稀疏直接法196

8.5.2 定義直接法的邊197

8.5.3 使用直接法估計相機運動 199

8.5.4 半稠密直接法200

8.5.5 直接法的討論 202

8.5.6 直接法優缺點總結 203

第9 講實踐:設計前端205

9.1 搭建VO 框架 206

9.1.1 確定程式框架207

9.1.2 確定基本數據結構208

9.1.3 Camera 類210

9.1.4 Frame 類212

9.1.5 MapPoint 類 213

9.1.6 Map 類 213

9.1.7 Config 類 214

9.2 基本的VO:特徵提取和匹配216

9.2.1 兩兩幀的視覺里程計216

9.2.2 討論224

9.3 改進:最佳化PnP 的結果 224

9.4 改進:局部地圖 227

9.5 小結233

第10 講後端1 235

10.1 概述237

10.1.1 狀態估計的機率解釋237

10.1.2 線性系統和KF239

10.1.3 非線性系統和EKF242

10.1.4 EKF 的討論243

10.2 BA 與圖最佳化245

10.2.1 投影模型和BA 代價函式 245

10.2.2 BA 的求解247

10.2.3 稀疏性和邊緣化248

10.2.4 魯棒核函式255

10.2.5 小結256

10.3 實踐:g2o257

10.3.1 BA 數據集257

10.3.2 g2o 求解BA258

10.3.3 求解262

10.4 實踐:Ceres 264

10.4.1 Ceres 求解BA 265

10.4.2 求解267

10.5 小結269

第11 講後端2 270

11.1 位姿圖(Pose Graph)271

11.1.1 Pose Graph 的意義271

11.1.2 Pose Graph 的最佳化272

11.2 實踐:位姿圖最佳化274

11.2.1 g2o 原生位姿圖 274

11.2.2 李代數上的位姿圖最佳化278

11.2.3 小結284

11.3 * 因子圖最佳化初步285

11.3.1 貝葉斯網路285

11.3.2 因子圖286

11.3.3 增量特性288

11.4 * 實踐:gtsam 289

11.4.1 安裝gtsam 4.0289

11.4.2 位姿圖最佳化290

第12 講迴環檢測297

12.1 迴環檢測概述299

12.1.1 迴環檢測的意義299

12.1.2 方法 300

12.1.3 準確率和召回率301

12.2 詞袋模型303

12.3 字典 305

12.3.1 字典的結構305

12.3.2 實踐:創建字典306

12.4 相似度計算309

12.4.1 理論部分309

12.4.2 實踐:相似度的計算310

12.5 實驗分析與評述314

12.5.1 增加字典規模314

12.5.2 相似性評分的處理316

12.5.3 關鍵幀的處理316

12.5.4 檢測之後的驗證317

12.5.5 與機器學習的關係317

第13 講建圖319

13.1 概述320

13.2 單目稠密重建322

13.2.1 立體視覺322

13.2.2 極線搜尋與塊匹配323

13.2.3 高斯分布的深度濾波器325

13.3 實踐:單目稠密重建328

13.4 實驗分析與討論339

13.4.1 像素梯度的問題339

13.4.2 逆深度340

13.4.3 圖像間的變換 341

13.4.4 並行化:效率的問題342

13.4.5 其他的改進343

13.5 RGB-D 稠密建圖343

13.5.1 實踐:點雲地圖344

13.5.2 八叉樹地圖347

13.5.3 實踐:八叉樹地圖350

13.6 *TSDF 地圖和Fusion 系列352

13.7 小結356

第14 講SLAM:現在與未來357

14.1 當前的開源方案358

14.1.1 MonoSLAM358

14.1.2 PTAM359

14.1.3 ORB-SLAM361

14.1.4 LSD-SLAM363

14.1.5 SVO 364

14.1.6 RTAB-MAP366

14.1.7 其他367

14.2 未來的SLAM 話題367

14.2.1 視覺+ 慣性導航SLAM367

14.2.2 語義SLAM369

14.2.3 SLAM 的未來 370

附錄A 高斯分布的性質371

A.1 高斯分布371

A.2 高斯分布的運算371

A.2.1 線性運算371

A.2.2 乘積372

A.2.3 複合運算372

A.3 複合的例子372

附錄B ROS 入門374

B.1 ROS 是什麼374

B.2 ROS 的特點375

B.3 如何快速上手ROS375

參考文獻377

熱門詞條

聯絡我們