新書推薦:
《
中国经济发展的新阶段:机会与选择
》
售價:NT$
454.0
《
DK月季玫瑰百科
》
售價:NT$
959.0
《
为你想要的生活
》
售價:NT$
301.0
《
关键改变:如何实现自我蜕变
》
售價:NT$
352.0
《
超加工人群:为什么有些食物让人一吃就停不下来
》
售價:NT$
454.0
《
历史的教训(浓缩《文明的故事》精华,总结历史教训的独特见解)
》
售價:NT$
286.0
《
不在场证明谜案(超绝CP陷入冤案!日本文坛超新星推理作家——辻堂梦代表作首次引进!)
》
售價:NT$
265.0
《
明式家具三十年经眼录
》
售價:NT$
2387.0
編輯推薦:
高博个性签名限量!SLAM华语原创首著升级版!彩色插图|更多实例|更深内容|更完善的工程项目|更易懂的表达。余凯谭平等业内大咖力荐!
SLAM华语原创首著升级版
彩色插图|更多实例|更深内容|更完善的工程项目|更易懂的表达
內容簡介:
本书系统介绍了视觉 SLAM(同时定位与地图构建)所需的基本知识与核心算法,既包括数学理论基础,如三维空间的刚体运动、非线性优化,又包括计算机视觉的算法实现,例如多视图几何、回环检测等。此外,我们还提供了大量的实例代码供读者学习研究,从而更深入地掌握这些内容。本书可以作为对 SLAM 感兴趣的研究人员的入门自学材料,也可以作为 SLAM 相关的高校本科生或研究生课程教材使用。
關於作者:
高翔,清华大学自动化系博士,慕尼黑工业大学博士后。研究兴趣主要为计算机视觉、定位与建图、机器学习等,主要著、译作包括《视觉SLAM十四讲:从理论到实践》、《机器人学中的状态估计》,在RAS、Auto Robotics、IROS等期刊会议上发表论文,现从事自动驾驶车辆研发工作。
目錄 :
第 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 李代数 so3 76
4.1.5 李代数 se3 77
4.2 指数与对数映射 78
4.2.1 SO3 上的指数映射 78
4.2.2 SE3 上的指数映射 80
4.3 李代数求导与扰动模型 81
4.3.1 BCH 公式与近似形式 81
4.3.2 SO3 上的李代数求导 83
4.3.3 李代数求导 84
4.3.4 扰动模型(左乘)85
4.3.5 SE3 上的李代数求导 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
內容試閱 :
第二版序
《视觉 SLAM 十四讲:从理论到实践》出版已经两年多。两年来,这本书经历了 13 次重印,在 GitHub 上拥有 2500 个星星,也在业界引起了广泛的关注和讨论。大多数读者评价是正面的,当然,书中也有些地方不够令人满意。例如,这本书面向初学者,有些应该深入的地方讲得不够深入;书中的数学符号不够统一,有些地方容易令读者产生误解;工程实践章节内容不够丰富,介绍较浅,等等。实际上,我在 2016 年中期开始创作第 1 版,所有文字、图片和代码都是从零开始准备的,再加上当时在读博士,也是第一次写这么厚的书,错漏在所难免。2018 年,我在慕尼黑工大给学生讲 SLAM 课程,期间又积累了一些材料,所以本书从内容上更丰富、更合理。在
第 1 版的基础上做了如下改动:
1. 更多的实例。增加了一些实验代码来介绍算法的原理。在第 1 版中,多数实践代码调用了各种库中的内置函数,现在我认为更深入地介绍底层计算会更好,所以本书中的许多代码,除了调用库函数,还提供了底层的实现。
2. 更深入的内容。主要是从第 7 讲至第 12 讲的部分,同时删除了一些泛泛而谈的边角料(比如 GTSAM 相关内容?)。对第 1 版大部分数学公式进行了审查,重写了那些容易引起误解的内容。
3. 更完善的工程项目。将第 1 版的第 9 讲移至第 13 讲。于是,我们可以在介绍了所有必要知识之后,向大家展现一个完整的 SLAM 系统是如何工作的。相比于第 1 版,我在本书的项目中将追求以精简的代码实现完整的功能,你会得到一个由几百行代码实现的、有完整前后端的 SLAM 系统。
4. 更通俗、简洁的表达。我觉得这是一本好书的标准,特别是当介绍一些看起来高深莫测的数学知识时。我重新制作了部分插图,使它们即使在黑白印刷条件下也能看起来很清楚。
当然,每讲前的简笔画我是不会改的!
总之,我尽量做到深入浅出,也希望本书能够给你带来更加舒适的阅读体验。