视觉SLAM十四讲:从理论到实践

视觉SLAM十四讲:从理论到实践 pdf epub mobi txt 电子书 下载 2025

高翔,张涛 等 著
图书标签:
  • SLAM
  • 视觉SLAM
  • 机器人
  • 计算机视觉
  • 估计理论
  • 滤波
  • 优化
  • 传感器融合
  • 三维重建
  • 地图构建
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121311048
版次:1
商品编码:12178334
品牌:Broadview
包装:平装
开本:16开
出版时间:2017-04-01
用纸:轻型纸
页数:400
字数:500000
正文语种:中文

具体描述

产品特色

编辑推荐

适读人群 :本书适合对SLAM感兴趣的读者阅读,也适合有志于从事计算机视觉、机器人研究等领域的广大学生阅读,可作为SLAM技术的入门教材。
  SLAM技术是全自动无人驾驶、无人机、机器人等人工智能产品的核心技术之一。
  作者是SLAM领域非常杰出的青年专家。
  书中不仅有深入浅出的讲解,同时注重理论和实践结合,大大降低了国内学生和相关从业者的进入门槛。

内容简介

  《视觉SLAM十四讲:从理论到实践》系统介绍了视觉SLAM(同时定位与地图构建)所需的基本知识与核心算法,既包括数学理论基础,如三维空间的刚体运动、非线性优化,又包括计算机视觉的算法实现,例如多视图几何、回环检测等。此外,还提供了大量的实例代码供读者学习研究,从而更深入地掌握这些内容。
  《视觉SLAM十四讲:从理论到实践》可以作为对SLAM感兴趣的研究人员的入门自学材料,也可以作为SLAM相关的高校本科生或研究生课程教材使用。

作者简介

  高翔,2008年就读清华大学自动化系,2012年免试进入清华大学自动化系攻读博士学位。研究课题为视觉SLAM,兴趣包括计算机视觉与机器学习。曾撰写过与SLAM相关的论文和技术博客。

  张涛,清华大学自动化系教授、党委书记、副系主任。1995年9月至1999年9月在清华大学自动化系检测技术与自动化装置专业学习,获博士学位。1999年10月至2002年9月在日本国立佐贺大学大学院工学系研究科系统控制专业学习,获博士学位。研究课题包括机器人、航空航天、计算机视觉等。

  刘毅,华中科技大学图像与人工智能研究所在读博士,本科毕业于武汉理工大学数学系。读博期间专注于图像处理、三维重建、视觉SLAM,以及传感器融合研究和应用,读博期间先后于深圳市大疆创新公司,英特尔中国研究院等单位实习。

  颜沁睿,比利时荷语鲁汶大学人工智能硕士,电子工程学士(GroupT)。电子科技大学信息显示与光电技术学士。长期致力于研究人工智能技术在机器人领域的应用,包括计算机视觉、机器学习和SLAM。现担任地平线机器人公司智能驾驶部算法工程师。


精彩书评

  隆重向读者推荐《视觉SLAM十四讲:从理论到实践》。一方面本书是业界少有的涵盖从基础理论到代码实例,系统性讲解SLAM的书;另一方面,本书的作者和地平线颇有渊源,高翔曾经是我们的算法实习生,颜沁睿是自动驾驶算法工程师,都是在SLAM领域非常杰出的青年专家,走在技术实践前沿。在移动互联网大潮之后,自动驾驶、无人机、服务机器人等人工智能硬件会成为下一个产业爆发点,其中关键的技术之一就是动态定位和环境建模的SLAM技术。本书是国内非常有价值的有关SLAM技术的书籍,适合有志于从事机器人技术的研究生和工程师,一定会让读者很有收获。
  ——地平线机器人创始人,中国人工智能学会副秘书长,余凯

  我在新加坡和加拿大给学生讲视觉SLAM时常常觉得缺乏一本适合初学者的教材。高翔博士的《视觉SLAM十四讲:从理论到实践》从基础的四元数、李代数讲起,涵盖了卡尔曼滤波、Bundle Adjustment、Pose-Graph等高级优化工具。书中更有zui近十多年成功系统的概述,从2003年的MonoSLAM直到2016年的ORB-SLAM。通篇既有清晰的理论叙述,又辅以大量示例程序,是一本非常好的视觉SLAM教材。
  ——加拿大西蒙弗雷泽大学终身教授,谭平

  视觉SLAM随着近年增强现实、无人驾驶等应用的兴起而重新获得重大关注。视觉SLAM属于计算机视觉和机器人研究的交叉领域,因此涉及的基础知识广而分散。国内专门的研究机构相对较少,因此学生入门的门槛较高。幸运的是,本书不仅有深入浅出的讲解,同时注重理论和实战的结合,大大降低了国内学生和相关从业者的进入门槛。因此,本书非常值得初学者学习实践。
  ——网易感知与智能中心增强现实算法架构师,刘海伟

  作者的这本书既是通俗有趣的高科技演义,又是足以指导研发实践的翔实教程,对国内SLAM 界而言可谓意义重大。我甚至发现有不少目前圈内的一流人才都是因为看了本书的早期章节才决定进入这个行业并快速成长起来的。
  本书里所涵盖的知识面、技术细节,甚至是某些宝贵的实践经验,对国内刚刚起步的虚拟现实和增强现实(VR/AR)、无人机、无人车、机器人等行业而言,都将产生深远影响!
  ——uSens凌感科技联合创始人/首席运营官,时驰(Chris)博士

目录

第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

前言/序言

  这是一本介绍视觉SLAM 的书,也很可能是第一本以视觉SLAM 为主题的中文书。那么,SLAM 是什么?
  SLAM 是Simultaneous Localization and Mapping 的缩写,中文译作“同时定位与地图构建”。它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。如果这里的传感器主要为相机,那就称为“视觉SLAM”。
  本书的主题就是视觉SLAM。这里我们刻意把许多个定义放到一句话中,是希望读者有一个较明确的概念。首先,SLAM 的目的是解决“定位”与“地图构建”这两个问题。也就是说,一边要估计传感器自身的位置,一边要建立周围环境的模型。那么怎么解决呢?这需要用到传感器的信息。传感器能以一定形式观察外部的世界,不过不同传感器观察的方式是不同的。而之所以要花一本书的内容去讨论这个问题,是因为它很难——特别是我们希望实时地、在没有先验知识的情况下进行SLAM。当用相机作为传感器时,我们要做的就是根据一张张连续运动的图像(它们形成了一段视频),从中推断相机的运动,以及周围环境的情况。
  这似乎是个很直观的问题。我们自己走进陌生的环境时不就是这么做的吗?
  在计算机视觉(Computer Vision)创立之初,人们就想象着有朝一日计算机将和人一样,通过眼睛去观察世界,理解周遭的物体,探索未知的领域——这是一个美妙而又浪漫的梦想,吸引了无数的科研人员日夜为之奋斗。我们曾经以为这件事情并不困难,然而进展却远不如预想的那么顺利。我们眼中的花草树木、虫鱼鸟兽,在计算机中却是那样的不同:它们只是一个个由数字排列而成的矩阵(Matrix)。让计算机理解图像的内容,就像让我们自己理解这些数字一样困难。我们既不了解自己如何理解图像,也不知道计算机该如何理解、探索这个世界。于是我们困惑了很久,直到几十年后的今天,才发现了一点点成功的迹象:通过人工智能(Artificial Intelligence)和机器学习(Machine Learning)技术,计算机渐渐能够辨别出物体、人脸、声音、文字——尽管它所用的方式(概率学建模)与我们是如此不同。另一方面,在SLAM 发展了将近30 年之后,我们的相机才渐渐开始能够认识到自身的位置,发觉自己在运动——虽然方式还是和我们人类有巨大的差异。不过,至少研究者们已经成功地搭建出种种实时SLAM系统,有的能够快速跟踪自身位置,有的甚至能够进行实时的三维重建。
  这件事情确实很困难,但我们已经有了很大的进展。更令人兴奋的是,近年来随着科技的发展,涌现出了一大批与SLAM 相关的应用点。在许多地方,我们都希望知道自身的位置:室内的扫地机和移动机器人需要定位,野外的自动驾驶汽车需要定位,空中的无人机需要定位,虚拟现实和增强现实的设备也需要定位。SLAM 是那样重要。没有它,扫地机就无法在房间自主地移动,只能盲目地游荡;家用机器人就无法按照指令准确到达某个房间;虚拟现实也将永远固定在座椅之上——所有这些新奇的事物都无法出现在现实生活中,那将多么令人遗憾。
  今天的研究者和应用开发人员,逐渐意识到了SLAM 技术的重要性。在国际上,SLAM 已经有近三十年的研究历史,也一直是机器人和计算机视觉的研究热点。21 世纪以来,以视觉传感器为中心的视觉SLAM 技术,在理论和实践上都经历了明显的转变与突破,正逐步从实验室研究迈向市场应用。同时,我们又遗憾地发现,至少在国内,与SLAM 相关的论文、书籍仍然非常匮乏,让许多对SLAM 技术感兴趣的初学者无从一窥门径。虽然SLAM 的理论框架基本趋于稳定,但其编程实现仍然较为复杂,有着较高的技术门槛。刚步入SLAM 领域的研究者,不得不花很长的时间,学习大量的知识,往往要走过许多弯路才得以接近SLAM 技术的核心。
  本书全面系统地介绍了以视觉传感器为主体的视觉SLAM 技术,我们希望它能(部分地)填补这方面资料的空白。我们会详细地介绍SLAM 的理论背景、系统架构,以及各个模块的主流做法。同时,极其重视实践:本书介绍的所有重要算法,都将给出可以运行的实际代码,以求加深读者的理解。之所以这么做,主要是考虑到SLAM 毕竟是一项和实践紧密相关的技术。再漂亮的数学理论,如果不能转化为可以运行的代码,那就仍是可望而不可即的空中楼阁,没有实际意义。我们相信,实践出真知,实践出真爱。只有实际地演算过各种算法之后,你才能真正地认识SLAM,真正地喜欢上科研。
  自1986 年提出以来,SLAM 一直是机器人领域的热点问题。关于它的文献数以千计,想要对SLAM 发展史上的所有算法及变种做一个完整的说明,是十分困难而且没有必要的。本书中会介绍SLAM 所牵涉的背景知识,例如射影几何、计算机视觉、状态估计理论、李群李代数等,并在这些背景知识之上,给出SLAM 这棵大树的主干,而略去一部分形状奇特、纹理复杂的枝叶。我们认为这种做法是有效的。如果读者能够掌握主干的精髓,那么自然会有能力去探索那些边缘的、细节的、错综复杂的前沿知识。所以,我们的目的是,让SLAM 的初学者通过阅读本书快速地成长为能够探索这个领域边缘的研究者。另一方面,即便你已经是SLAM 领域的研究人员,本书也可能有一些你还觉得陌生的地方,可以让你产生新的见解。
  目前,与SLAM 相关的书籍主要有《概率机器人》(Probabilistic robotics)、《计算机视觉中的多视图几何》(Multiple View Geometry in Computer Vision)、《机器人学中的状态估计》(State Estimation for Robotics: A Matrix-Lie-Group Approach)等。它们内容丰富、论述全面、推导严谨,是SLAM 研究者中脍炙人口的经典教材。然而就目前来看,还存在两个重要的问题:其一,这些图书的目的在于介绍基础理论,SLAM 只是其应用之一。因此,它们并不能算是专门讲解SLAM 的书籍。其二,它们的内容偏重于数学理论,基本不涉及编程实现,导致读者经常出现“书能看懂却不会编程”的情况。而我们认为,只有读者亲自实现了算法,调试了各个参数,才能谈得上真正理解了问题本身。
  我们会提及SLAM 的历史、理论、算法、现状,并把完整的SLAM 系统分成几个模块:视觉里程计、后端优化、建图,以及回环检测。我们将陪着读者一点点实现这些模块中的核心部分,探讨它们在什么情况下有效,什么情况下会出问题,并指导大家在自己的机器上运行这些代码。你会接触到一些必要的数学理论和许多编程知识,会用到Eigen、OpenCV、PCL、g2o、Ceres 等库à,掌握它们在Linux 操作系统中的使用方法。
  从写作风格上,我们不想把本书写成枯燥的理论书籍。技术类图书应该是严谨可靠的,但严谨不意味着刻板。一本优秀的技术书应该是生动有趣而易于理解的。如果你觉得“这个作者怎么这么不正经”,敬请原谅,因为我并不是一个非常严肃的人。无论如何,有一件事是可以肯定的:只要你对这门新技术感兴趣,在学习本书的过程中肯定会有所收获!您会掌握与SLAM 相关的理论知识,你的编程能力也将有明显的进步。在很多时候,您会有一种“我在陪你一起做科研”的感觉,这正是我所希望的。但愿您能在此过程中发现研究的乐趣,喜欢这种“通过一番努力,看到事情顺利运行”的成就感。
  好了,话不多说,祝你旅行愉快!
  如何使用本书
  本书名为“视觉SLAM 十四讲”。顾名思义,我们会像在学校里讲课那样,以“讲”作为本书的基本单元。每一讲都对应一个固定的主题,其中会穿插“理论部分”和“实践”。如果你完全没有听说过它们,那么应该感到兴奋,这说明你会从本书中收获很多知识。你会经常在脚注中发现一些神奇的东西。
  “实践部分”两种内容。通常是理论部分在前,实践部分在后。在理论部分中,我们将介绍理解算法所必需的数学知识,并且大多数时候以叙述的方式,而不是像数学教科书那样用“定义—定理—推论”的方式,因为我们觉得这样的方式阅读起来更容易一些,尽管有时候显得不那么严谨。实践部分主要是编程实现,讨论程序里各部分的含义及实验结果。看到标题中带有“实践”两个字的章节,你就应该(兴致勃勃地)打开电脑,和我们一起愉快地编写代码了。
  值得一提的是,我们只会把与解决问题相关的数学知识放在书里,并尽量保持浅显。虽然我们是工科生,但也要承认,某些做法只要经验上够用,没必要非得在数学上追求完备。只要我们知道这些算法能够工作,并且数学家们告诉了我们在什么情况下可能不工作,那么我们就表示满意,而不追究那些看似完美但实际复杂冗长的证明(当然它们固有自己的价值)。由于SLAM 牵涉到了太多数学背景,为了防止使本书变成数学教科书,我们把一些细节上的推导和证明留作习题和补充阅读材料,方便感兴趣的读者进一步阅读参考文献,更深入地掌握相关细节。
  每一讲正文之后,我们设计了一些习题。其中,带* 号的习题是具有一定难度的。我们强烈建议读者把习题都练习一遍,这对你掌握这些知识很有帮助。
  全书内容主要分为两个部分。
  第一部分为数学基础篇,我们会以浅显易懂的方式,铺垫与视觉SLAM 相关的数学知识,包括:
  第1 讲是前言,介绍这本书的基本信息,习题部分主要包括一些自测题。
  第2 讲为SLAM 系统概述,介绍一个SLAM 系统由哪些模块组成,各模块的
  具体工作是什么。实践部分介绍编程环境的搭建过程以及IDE 的使用。
  第3 讲介绍三维空间运动,你将接触到旋转矩阵、四元数、欧拉角的相关知识,并且在Eigen 当中使用它们。
  第4 讲为李群和李代数。即便你现在不懂李代数为何物,也没有关系。你将学到李代数的定义和使用方式,然后通过Sophus 操作它们。
  第5 讲介绍针孔相机模型以及图像在计算机中的表达。你将用OpenCV 来调取相机的内外参数。
  第6 讲介绍非线性优化,包括状态估计理论基础、最小二乘问题、梯度下降方法。你会完成一个使用Ceres 和g2o 进行曲线拟合的实验。
  这些就是我们要用到的所有数学知识了,当然,其中还隐含了你以前学过的高等数学和线性代数。我们保证它们看起来都不会很难。当然,若你想进一步深入挖掘,我们会提供一些参考资料供你阅读,那些材料可能会比正文里讲的知识难一些。 它们也可能成为今后相关行业的面试题,或许还能帮你在找工作时留个好印象。
  第二部分为SLAM 技术篇。我们会使用第一部分所介绍的理论,讲述视觉SLAM中各个模块的工作原理。
  第7 讲为特征点法的视觉里程计。该讲内容比较多,包括特征点的提取与匹配、对极几何约束的计算、PnP 和ICP 等。在实践中,你将用这些方法去估计两个图像之间的运动。
  第8 讲为直接法的视觉里程计。你将学习光流和直接法的原理,然后利用g2o 实现一个简单的RGB-D 直接法。
  第9 讲为视觉里程计的实践章,你将搭建一个视觉里程计框架,综合运用先前学过的知识,实现它的基本功能。这个过程中,你会碰到一些问题,例如优化的必要性、关键帧的选择等。
  第10 讲为后端优化,主要为对Bundle Adjustment 的深入讨论,包括基本的BA,以及如何利用稀疏性加速求解过程。你将用Ceres 和g2o 分别书写一个BA 程序。
  第11 讲主要讲后端优化中的位姿图。位姿图是表达关键帧之间约束的一种更紧凑的形式。你将用g2o 和gtsam 对一个位姿球进行优化。
  第12 讲为回环检测,主要介绍以词袋方法为主的回环检测。你将使用dbow3书写字典训练程序和回环检测程序。
  第13 讲为地图构建。我们会讨论如何使用单目进行稠密深度图的估计(以及这是多么不可靠),然后讨论RGB-D 的稠密地图构建过程。你会书写极线搜索与块匹配的程序,然后在RGB-D 中遇到点云地图和八叉树地图的构建问题。
  第14 讲主要介绍当前的开源SLAM 项目以及未来的发展方向。相信在阅读了前面的知识之后,你会更容易理解它们的原理,实现自己的新想法。
  最后,如果你完全看不懂上面在说什么,那么恭喜你!这本书很适合你!加油!
  代码。本书所有源代码均托管在github 上:https://github.com/gaoxiang12/slambook
  强烈建议读者下载它们以供随时查看。代码是按章节划分的,比如,第7 讲的内容就会放在ch7 文件夹中。此外,对于书中用到的一些小型库,会以压缩包的形式放在3rdparty 文件夹下。对于像OpenCV 那种大中型库,我们会在它们第一次出现时介绍其安装方法。如果你对代码有任何疑问,请单击GitHub 上的Issues 按钮,提交问题。如果确实是代码出现问题,我们会及时进行修改;即使是你的理解有偏差,我们也会尽可能回复。如果你不习惯使用Git,那么单击右侧包含download 字样的按钮将代码下载至本地即可。
  面向的读者。本书面向对SLAM 感兴趣的学生和研究人员。阅读本书需要一定的基础,我们假设你具备以下知识:
  高等数学、线性代数、概率论。这些是大部分读者应该在大学本科阶段接触过的基本数学知识。你应当明白矩阵和向量是什么,或者做微分和积分是什么意思。对于SLAM 中用到的专业知识,我们会额外加以介绍。
  C++ 语言基础。由于我们采用C++ 作为编码语言,所以建议读者至少熟悉这门语言的语法。比如,你应该知道类是什么,如何使用C++ 标准库,模板类如何使用,等等。我们会避免过多地使用技巧,但有些地方确实无法避免。此外,我们还使用了一些C++ 11 标准的内容,不过,我们会在用到的地方加以解释。
  Linux 基础。我们的开发环境是Linux 而非Windows,并且只提供Linux 下的源程序,不会再提供Windows 下的开发方法介绍。我们认为,掌握Linux 是一个SLAM 研究人员所必需的,请初学者暂时不要问为什么,把本书的知识学好之后相信你会和我们有同样的想法。各种程序库在Linux 下的配置都非常便捷,
  你也会在此过程中体会到Linux 的便利。如果读者此前从未使用过Linux,那么最好找一本Linux 的教材稍加学习(掌握基本知识即可,一般就是相关图书的前面几章内容)。我们不要求读者具备高超的Linux 操作技能,但希望读者至少知道“打开终端,进入代码目录”是如何操作的。本讲的习题里有一些Linux 知识自测题,如果你清楚自测题的答案,那么阅读本书代码不会有任何问题。
  对SLAM 感兴趣但不具备上述知识的读者,可能在阅读本书时会感到困难。如果你不了解C++ 的基本知识,可以读一点C++ Primer Plus 之类的图书入门;如果你缺少相关的数学知识,也可以先阅读一些相关数学教材补充知识,不过我们认为,对大多数大学本科水平的朋友,读懂本书所需的数学背景肯定是具备了。代码方面,你最好花点时间亲自输入一遍,再调节里面的参数,看看效果会发生怎样的改变。这会对学习很有帮助。
  本书可作为SLAM 相关课程的教材,亦可作为课外自学材料使用。
  致谢和声明
  在本书漫长的写作过程中,我们得到了许多人的帮助,包括但不限于:
  中科院的贺一家博士为第5讲的相机模型部分提供了材料。
  颜沁睿提供了第7讲的公式推导材料。
  华中科大的刘毅博士为本书第6讲和第10讲提供了材料。
  众多的老师、同学为本书提供了修改意见:肖锡臻、谢晓佳、耿欣、李帅杰、刘富强、袁梦、孙志明、陈昊升、王京、朱晏辰、丁文东、范帝楷、衡昱帆、高扬、李少朋、吴博、闫雪娇、张腾、郑帆、卢美奇、杨楠,等等。在此向他们表示感谢。
  此外,感谢我的导师张涛教授一直以来对我的支持和帮助。感谢电子工业出版社郑柳洁编辑的支持。没有他们的帮助,本书不可能以现在的面貌来到读者面前。本书的成书与出版是所有人共同努力的结晶,尽管我没法把他们都列在作者列表中,但是它的出版离不开他们的工作。
  本书写作过程中参考了大量文献和论文。其中大部分数学理论知识是前人研究的成果,并非我的原创。一小部分实验设计亦来自各开源代码的演示程序,不过大部分是我自己编写的。此外,也有一些图片摘自公开发表的期刊或会议论文,文中均已注明。
  未做说明的图像,或为原创,或来自网络,恕不一一列举。如有问题,请与我们联系,我们会在第一时间加以修正。
  本书涉及知识点众多,错漏在所难免。如有疑问,欢迎通过电子邮件与我联系。
  感谢我的爱人刘丽莲女士长期的理解和支持。这本书是献给她的。


穿越时空的边界:探索未知的维度 在浩瀚的宇宙中,存在着无数我们尚未触及的领域,而探索这些未知的维度,一直是人类文明不断前行的动力。从古老的星图绘制到现代的深空探测,我们从未停止过对未知的好奇与渴求。本书将带您踏上一段穿越时空的奇幻旅程,深入探索那些隐藏在日常感知之下的奇妙世界。 第一章:时间的低语——遗忘的边界与回响 时间,是我们最熟悉的陌生人。它悄无声息地流淌,定义着我们的存在,却又常常在不经意间被我们忽视。在本章中,我们将拨开历史的迷雾,追溯人类对时间理解的演变。从古人对日月交替的朴素认知,到爱因斯坦的相对论对时间和空间的革命性解读,我们将看到人类智慧如何一步步挑战着我们对时间的直观感受。 我们将探讨“时间旅行”这一引人入胜的科幻概念,从理论物理学的角度审视其可能性与悖论。是否有可能回到过去,改变历史?抑或是前往未来,窥探未知的命运?虽然目前这仍是遥不可及的梦想,但科学探索的精神从未停止。我们将从虫洞、曲速引擎等假说出发,勾勒出理论物理学家们试图突破时间束缚的奇思妙想。 更重要的是,我们将关注时间在现实世界中的体现。时间的流逝如何在生命中留下痕迹?记忆如何承载着过去,塑造着现在?我们将深入探讨记忆的形成、储存与遗忘机制,了解为何有些画面深刻烙印,有些则随风而逝。从神经科学的视角,我们将揭示大脑如何编码和检索信息,以及情感在记忆中的重要作用。 此外,本章还将触及时间在艺术、哲学与文化中的深刻影响。古老的诗歌如何捕捉岁月的痕迹?哲学家们如何思考时间的本质与意义?不同的文化又如何看待过去、现在与未来的关系?我们将通过文学作品、哲学思辨与跨文化比较,展现时间这一维度在人类精神世界中的多重维度。 第二章:空间的折叠——超越感官的现实 我们身处空间之中,却常常局限于我们所能感知的范围。空间,不仅仅是三维的体块,它更可能隐藏着我们尚未发现的维度,等待着我们去探索。本章将带领您突破感官的限制,去理解那些超越我们日常经验的空间形态。 我们将从几何学的角度,重新审视空间的本质。欧几里得几何学为我们勾勒了一个平直、稳定的宇宙,但非欧几里得几何学的出现,却让我们看到了空间弯曲的可能性。我们将通过形象的比喻和直观的例子,理解黎曼几何中的曲面如何描绘出引力场对时空的影响,以及广义相对论如何将引力解释为时空的几何形变。 在本章中,我们还将涉足高维空间的概念。想象一下,如果我们不仅仅生活在三维空间,而是存在更高维度的“维度”,那将会是怎样的景象?我们将通过数学模型和可视化工具,尝试理解这些抽象的高维空间,并探讨它们在理论物理学中的应用,例如弦理论中对额外维度的构想。 同时,我们将关注空间在人类感知与认知中的角色。我们如何通过视觉、听觉、触觉等感知器官来构建对世界的空间认知?大脑如何处理这些感官信息,形成我们对周围环境的“心智地图”?我们将探讨空间错觉、立体视觉等现象,理解我们感知的局限性以及大脑如何巧妙地弥补这些不足。 此外,本章还将深入研究那些我们日常接触却又容易忽略的空间现象。例如,网络空间如何打破物理距离的限制,重塑我们的人际交往与信息获取方式?虚拟现实技术如何创造出逼真的沉浸式体验,模糊了真实与虚拟的界限?我们将分析这些新兴技术如何拓展我们对“空间”的理解,并对其未来的发展进行展望。 第三章:意识的潮汐——探寻内在的宇宙 如果说时间与空间是我们探索外部世界的钥匙,那么意识则是我们认识自我、理解内在宇宙的终极疆域。意识的本质是什么?它从何而来?又将去往何方?本章将带领您踏入人类意识的深邃海洋,试图解答这些古老而又充满挑战的问题。 我们将从神经科学的视角,剖析意识的物质基础。大脑,这个由 billions of neurons 构成的复杂网络,是如何产生如此丰富而多样的意识体验的?我们将了解神经元之间的信息传递、大脑不同区域的功能分工,以及这些活动如何最终汇聚成我们所感知到的“自我”。我们将探讨“意识的神经相关物”这一研究领域,寻找支持意识现象的大脑活动模式。 同时,本章还将从心理学的角度,审视意识的表象与深层结构。我们熟悉的意识是我们日常思考、决策、感受的载体,但潜意识又扮演着怎样的角色?梦境、直觉、情绪,这些来自潜意识的信号,对我们的行为和决策又有多大的影响?我们将深入了解心理学理论,探讨意识的不同层次以及它们之间的相互作用。 我们将触及哲学领域中关于意识的经典辩论。从笛卡尔的“我思故我在”,到当代哲学家们关于“心物二元论”与“物理主义”的争论,我们将看到人类在理解意识本质上的不懈努力。为何物质的大脑能够产生非物质的意识体验?“难问题”(hard problem of consciousness)又为何如此难以解答? 此外,本章还将探索意识的边界与可能性。冥想、催眠、药物诱导的状态,这些特殊的意识体验又揭示了怎样的意识本质?不同文化中的神秘主义传统,又如何通过特定的练习来探寻更深层的意识境界?我们将从科学与人文的多个维度,审视意识的无限可能性,并思考人类意识的未来走向。 第四章:连接的织锦——信息、符号与现实的构建 我们所生活的现实,并非仅仅是物理物质的堆砌,更是由无数信息、符号与意义交织而成的复杂织锦。理解这些连接,我们才能更深入地把握世界的本质。本章将带您探索信息的流动、符号的解读以及现实的构建过程。 我们将从信息论的视角,理解信息在宇宙中的普适性。从物理世界中的能量与物质,到生物体内的遗传密码,再到人类社会中的语言与文化,信息无处不在。我们将学习信息量的度量、信息的编码与解码,以及信息传输中的损耗与失真。 同时,本章还将深入研究符号的意义世界。语言、文字、图像、声音,这些符号如何承载和传递意义?我们如何通过对符号的解读来理解世界、表达思想?我们将探讨符号学、语言学等学科的理论,理解意义的产生与演变过程。 在本章中,我们还将关注现实的构建过程。我们对世界的认知,很大程度上是通过信息与符号的加工与整合形成的。媒体、教育、社会互动,这些都在塑造着我们对现实的看法。我们将分析信息传播的机制,探讨谣言的传播与辨别,以及算法如何影响我们接收到的信息,进而影响我们对世界的认知。 此外,本章还将触及人工智能与信息时代的挑战。当机器能够处理海量信息,生成逼真内容时,我们如何界定真实与虚假?我们如何应对信息过载与数字鸿沟?我们将思考在信息爆炸的时代,如何保持清醒的头脑,辨别真伪,并利用信息的力量构建更美好的未来。 结语:永不止步的探索 时间、空间、意识、信息,这些看似独立的维度,实则相互关联,共同构成了我们所理解的宇宙。本书的旅程并非终点,而是一个起点。对未知维度的探索,是人类永不止步的追求。无论是在宏观的宇宙尺度,还是在微观的意识层面,亦或是在信息交织的数字世界,总有新的发现等待着我们。 希望通过本书的阅读,您能够开启一扇新的认知之门,以更加广阔的视角去审视世界,以更加深刻的理解去体验生活。愿您在这趟探索未知的旅程中,收获知识,激发灵感,并最终找到属于自己的独特维度。

用户评价

评分

这本书的魅力在于其“实践”二字。在理论讲解的间隙,作者穿插了大量的代码示例和项目实战指导。我一直认为,学习技术最好的方式就是动手实践,而这本书恰恰满足了我这个需求。书中提供的代码片段简洁高效,并且有详细的注释,即使是初学者也能很快地理解其逻辑。更令我惊喜的是,作者还提供了一些基于真实数据集的演示项目,让我能够亲身体验SLAM算法的运行过程,观察结果,并根据自己的理解进行调整。我记得其中一个关于ORB-SLAM的实现讲解,详细到了每一个关键函数的逻辑,让我茅塞顿开。这种理论与实践紧密结合的方式,让我不仅理解了“是什么”,更理解了“怎么做”。阅读这本书的过程中,我尝试着复现了一些代码,虽然遇到了一些小问题,但通过书中提供的调试技巧和作者在论坛上的分享,我都能一一解决,这种成就感是阅读纯理论书籍所无法比拟的。

评分

这本书的封面设计相当吸引人,那种深邃的蓝色背景搭配科技感的字体,一下子就抓住了我的眼球。翻开第一页,扑面而来的不是枯燥的公式堆砌,而是作者充满热情的前言,字里行间透露着对SLAM技术的无限热爱和希望将这份热情传递给读者的决心。我一直对计算机视觉领域非常感兴趣,而SLAM作为其核心技术之一,其魅力自然不言而喻。这本书的排版也非常清晰,代码和理论讲解部分泾渭分明,不会让初学者感到迷茫。我特别喜欢其中关于传感器选择和预处理的章节,它不像其他一些书籍那样简单带过,而是深入浅出地分析了不同传感器的优缺点,以及在实际应用中需要注意的各种细节。这对于我这种想要将理论知识转化为实际项目的人来说,简直是雪中送炭。而且,书中还穿插了一些作者在实际研发过程中遇到的趣事和挑战,让原本可能枯燥的技术讲解变得生动有趣,仿佛在和一位经验丰富的同行交流,而不是单方面地接受知识灌输。这种“接地气”的讲解方式,极大地激发了我继续深入阅读的动力。

评分

我是在一次偶然的机会下了解到这本书的,当时正为一些SLAM相关的论文阅读感到困惑,希望能找到一本能够系统梳理知识体系的书籍。拿到这本书后,我被其扎实的理论基础和丰富的实践案例深深吸引。它不仅仅停留在概念层面,而是对SLAM的各个关键环节进行了深入的剖析,比如特征提取、数据关联、地图构建以及位姿估计等。作者在解释这些复杂算法时,并没有回避数学公式,而是选择了恰当的方式将其呈现,并辅以直观的图示和通俗的解释,让我这个数学功底不算特别扎实的读者也能逐渐理解其中的奥妙。尤其值得一提的是,书中关于非线性优化的章节,解释得非常透彻,让我对BA(Bundle Adjustment)等优化方法有了更深刻的认识。而且,作者还非常细心地在每章末尾设置了思考题和推荐阅读,这对我进一步拓展知识面非常有帮助。我感觉这本书就像一位循循善诱的老师,引导我一步步地走进SLAM的殿堂,让我能够更自信地去探索这个充满挑战的领域。

评分

我特别欣赏这本书的结构和叙事方式。它并非简单的罗列知识点,而是以一种故事化的方式展开,从SLAM的起源、发展,到核心算法的演进,再到当前的研究热点,都描绘得栩栩如生。作者仿佛在带领我们进行一场穿越SLAM发展历程的时光旅行。每一章的过渡都非常自然,前一章的知识点为下一章的内容打下了坚实的基础。这种循序渐进的学习路径,极大地减轻了我的学习压力。我尤其喜欢关于多传感器融合的章节,它系统地介绍了激光雷达、相机、IMU等不同传感器如何协同工作,以及它们在SLAM中的作用。这让我对SLAM技术在现实世界中的广泛应用有了更宏观的认识。而且,作者在讲解过程中,经常会引用一些经典的论文和研究成果,并对其进行简要的评价,这对于我想要深入了解某个具体方向的研究者来说,提供了宝贵的线索。

评分

从这本书中,我收获的不仅仅是技术知识,更是一种对技术探索的热情和严谨的态度。作者在书中多次强调了debug的重要性,以及在面对问题时如何进行系统性的分析和解决。这种“工匠精神”的传递,让我觉得这本书的价值远超一本技术手册。我非常喜欢书中关于“SLAM的挑战与未来”的讨论,作者并没有故步自封,而是展望了SLAM技术在自动驾驶、机器人、AR/VR等领域的广阔前景,并对未来的研究方向提出了自己的见解。这让我感受到了这项技术强大的生命力和无限的可能。读完这本书,我感觉自己对SLAM的理解不再是零散的碎片,而是形成了一个完整的知识体系,并且对未来的学习和研究方向有了更清晰的规划。这本书的价值,在于它能够真正激发读者的求知欲,并赋予他们解决实际问题的能力。

评分

朋友推荐这家店买的。朋友在这家买过,说质量不错,就找朋友要了链接,买了之后发货很快,物流给力,东西收到是不错的,看着很好,性价比高,也是对比了好几家店才最终选择这家店的,我买东西还是看的时间蛮久的,最后一般留下来的都是感觉不错,或者性价比高的情况,喜欢,希望后面没其他问题,那就更好了。哈哈

评分

知识点全面,肯定比书店便宜,应该是正版吧,字迹很清晰

评分

不错不错不错不错不错不错不错不错

评分

经典图书,讲解的很棒,物流也很给力,好评!

评分

还不错。。。。。。。。。。

评分

商品很好我很喜欢支持?

评分

书印刷质量,包装质量都很好。

评分

东西挺好,挺好,好,子。好好好,紫薯布丁,紫薯布丁,布丁。

评分

字体挺好,印刷也好,内容也好

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有