编辑推荐
适读人群:本书适合对SLAM感兴趣的读者阅读,也适合有志于从事计算机视觉、机器人研究等领域的广大学生阅读,可作为SLAM技术的入门教材。
SLAM技术是全自动无人驾驶、无人机、机器人等人工智能产品的核心技术之一。
本书作者是SLAM领域非常杰出的青年专家。书中不仅有深入浅出的讲解,同时注重理论和实践结合,大大降低了国内学生和相关从业者的进入门槛。
高翔 张涛 等 著 / 2017年3月出版
内容提要
《视觉SLAM十四讲:从理论到实践》系统介绍了视觉SLAM(同时定位与地图构建)所需的基本知识与核心算法,既包括数学理论基础,如三维空间的刚体运动、非线性优化,又包括计算机视觉的算法实现,例如多视图几何、回环检测等。此外,还提供了大量的实例代码供读者学习研究,从而更深入地掌握这些内容。
《视觉SLAM十四讲:从理论到实践》可以作为对SLAM 感兴趣的研究人员的入门自学材料,也可以作为SLAM 相关的高校本科生或研究生课程教材使用。
作者简介
高翔
2008年就读清华大学自动化系,2012年免试进入清华大学自动化系攻读博士学位。研究课题为视觉SLAM,兴趣包括计算机视觉与机器学习。曾撰写过与SLAM相关的论文和技术博客。
张涛
清华大学自动化系教授、党委书记、副系主任。1995年9月至1999年9月在清华大学自动化系检测技术与自动化装置专业学习,获博士学位。1999年10月至2002年9月在日本国立佐贺大学大学院工学系研究科系统控制专业学习,获博士学位。研究课题包括机器人、航空航天、计算机视觉等。
刘毅
华中科技大学图像与人工智能研究所在读博士,本科毕业于武汉理工大学数学系。读博期间专注于图像处理、三维重建、视觉SLAM,以及传感器融合研究和应用,读博期间先后于深圳市大疆创新公司,英特尔中国研究院等单位实习。
颜沁睿
比利时荷语鲁汶大学人工智能硕士,电子工程学士(GroupT)。电子科技大学信息显示与光电技术学士。长期致力于研究人工智能技术在机器人领域的应用,包括计算机视觉、机器学习和SLAM。现担任地平线机器人公司智能驾驶部算法工程师。
精彩导读
前言
这是一本介绍视觉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 相关的理论知识,你的编程能力也将有明显的进步。在很多时候,您会有一种“我在陪你一起做科研”的感觉,这正是我所希望的。但愿您能在此过程中发现研究的乐趣,喜欢这种“通过一番努力,看到事情顺利运行”的成就感。
好了,话不多说,祝你旅行愉快!
积跬步以至千里。每天读本书,为您搜罗最具权威专业书籍,更多图书推荐请关注每日读书。
好知识需要分享,如您有喜欢的书籍想与广大开发者分享,请在文章下方评论留言,我们将为大家推荐您的爱书!