机器人 SLAM,三维人工智能的核心技术!
人工智能技术按照信息来源主要分为计算机视觉(视觉)、自然语言处理(文本)、语音识别(语音)三大方向。
其中,计算机视觉是需求最大、发展最快、应用最广泛的领域。
计算机视觉算法通常分为基于学习的方法和基于几何的方法。
前者主要指利用深度学习来实现图像识别、物体检测、物体分割、视频理解、图像生成等;后者主要指利用多视图立体几何来实现空间定位、三维重建、测距测绘等。
其中,基于几何方法的计算机视觉核心技术之一是同步定位与建图(Simultaneous Localization and Mapping,SLAM)。
SLAM 技术最早应用于潜艇、太空车等军用领域,之后逐渐进入民用领域。
最近几年学术界诞生了大量优秀的 SLAM 算法框架,并且随着三维传感器的飞速发展和嵌入式设备算力的快速提升,SLAM 技术开始大规模商业化应用,包括但不限于服务机器人、自动驾驶车辆、增强现实智能穿戴设备、智能无人机等。
那么什么是 SLAM 呢?
它是指移动智能体从一个未知环境里的未知地点出发,在运动过程中通过自身传感器观测周围环境,并根据环境定位自身的位置,再根据自身位置进行增量式的地图构建,从而达到同时定位和地图构建的目的。
对于初学者来说,很难从晦涩的定义中看懂 SLAM 技术到底在干什么,也无法理解机器人 SLAM 过程中有什么难点。
其实人类也能执行定位和建图的任务,为方便理解,这里不妨拿人类的探索过程和机器人视觉 SLAM 过程来做类比。
注意下面描述中括号内加粗文字表示的是机器人 SLAM 中的对应用语。
假设我们接到一个任务,需要在不借助专业设备的前提下,到一个陌生的地方探索并简单绘制当地的地图。我们如何完成上述任务呢?
首先,我们在陌生的起始点用双眼(机器人上安装的视觉传感器)观察四周的环境,并记录那些与众不同的标志物(特征点),从而确定自己的初始位置(地图初始化)。然后我们一边行走一边观察环境,记录当前位置(定位)并绘制地图(建图)。
由于我们探索的是未知的环境,难免发生意外。比如我们不小心从山坡摔下,爬起来后已经不知道自己具体的位置(跟踪丢失)。此时有两种方法,一种是重新爬回山坡上,观察周围环境并和已经绘制的地图进行对比,从而确定自己当前在已绘制地图中的位置(重定位);一种是从山坡下当前地点出发,重新开始绘制新的地图(重新初始化地图)。
探索的过程中还可能会遇到曾经去过的地方,这时候我们需要非常谨慎地反复观察对比,确认这里是否真的是已绘制地图中我们曾经走过的某个地方(闭环检测)。由于绘制地图过程中有误差(累计漂移),这时候相同的地点在地图上很可能无法形成一个闭环,而是一个缺口。一旦确认这是同一个地方,就需要整体调整已经绘制的地图,以便把缺口平滑地对接起来(闭环矫正)。
随着探索的区域越来越大,我们的地图也越来越完善,如果存在多个地图,可以根据地图的重叠区域将它们合并为统一的地图(地图融合)。最终我们得到了整个区域的地图,完成任务。
流浪地球 2 中的机器人
SLAM 的不可替代性
SLAM 主要作用就是定位和建图,我们现在经常用的手机地图导航软件不是也可以定位吗?而且里面全国的地图都可以下载,直接用这些软件不就可以了吗?
主要有以下几个原因:
第一,这些手机地图软件一般采用全球定位系统(Global Positioning System,GPS)或北斗导航系统,功能确实很强大,定位导航也非常方便。但是有个问题被忽略了,那就是精度。比如我们驾驶汽车的时候用手机导航,路上一般会有多条车道,但从导航软件里你会发现它不能定位我们当前是在哪条车道上,你需要人眼判断自己所在的车道,并根据导航软件提示及时变更车道。这是因为我们平时用的民用地图软件定位精度比较低,无法准确定位具体的车道。但是 SLAM 的定位精度已经可以达到厘米级甚至更高。
特斯拉自动驾驶地图
第二,采用卫星定位的方式仅在室外开阔环境下有效。在建筑物内部、洞穴隧道、水下甚至外太空,卫星定位会失效;在某些复杂的室外环境下,比如森林、高楼林立的窄路里,卫星定位可能存在信号弱、漂移大等问题;在雨雪雾等恶劣天气下,卫星定位也会有较大的干扰。在以上这些条件下,SLAM 就有了极大的用武之地。事实上,SLAM 技术就是先在水下潜艇、太空车等军用航空领域发挥重要作用,之后逐渐进入民用领域的。
第三,地图导航类软件的定位通常只有一个二维的平面坐标,也就是只有 2 个自由度,这在很多种情况下是远远不够的。比如基于智能手机的增强现实应用中,不仅需要知道手机在三维空间中的位置坐标(也就是三维空间中的平移),还需要知道手机的朝向(三维空间中的旋转)。在 SLAM 名词术语中通常将朝向称作姿态。位置和姿态统称为位姿,位姿总共有 6 个自由度。通过 SLAM 技术就可以得到增强现实设备所需要的实时位姿。如图 1-3 所示,红色的点为手机中心点在三维空间中的位置,它在二维平面投影为蓝色的点。右边是手机在同一个位置处不同的姿态(朝向)。
目前 SLAM 相关的书籍比较少,虽然它们涵盖了该领域的核心知识点,公式推导严谨,有的还配套有重要概念的代码实现。但是,很多初学者在掌握了 SLAM 基础知识后发现距离真正的项目实践还有较大差距,他们对于如何开始自己的第一个 SLAM 项目实践比较迷茫。
《视觉惯性 SLAM:理论与源码解析》则致力于解决这个问题,本书选取了经典的视觉 SLAM 框架和目前综合效果最好的视觉惯性 SLAM 框架进行庖丁解牛,引导读者循序渐进掌握自己的第一个 SLAM 项目。
本书内容
本书系统介绍以相机和惯性测量单元为主传感器的视觉、视觉惯性 SLAM 算法。
本书通过选取该领域有代表性的两个开源项目 ORB-SLAM2、ORB-SLAM3,从原理阐述、公式推导、代码解析和工程经验等多个维度,对 SLAM 技术进行全面的解读。
第一部分:介绍 SLAM 的部分基础知识,包括编程及编译工具、常用的数学基础知识、相机成像模型、对极几何、图优化库的使用等。
第二部分:介绍视觉 SLAM 框架 ORB-SLAM2 的原理和核心代码,从特征匹配、地图初始化,再到跟踪线程、局部建图线程、闭环线程、优化方法,面面俱到。
第三部分:介绍 ORB-SLAM2 的升级版——视觉惯性系统 ORB-SLAM3 的主要新增内容和代码,涵盖了 IMU 预积分、多地图系统、跟踪线程、部建图线程、闭环及地图融合线程等。
本书兼具技术的广度和深度,适合有一定 SLAM 基础的高等院校学生、科研机构研究人员和企业从业者阅读,尤其适合希望深入研究视觉(惯性)SLAM 的算法工程师参考。
本书理论和实践并重,引导读者循序渐进地掌握项目实践经验,具体有如下特点。
本书特点
本书兼具技术的广度和深度,适合有一定 SLAM 基础的高等院校学生、科研机构研究人员和企业从业者阅读,尤其适合希望深入研究视觉(惯性)SLAM 的算法工程师参考。
本书理论和实践并重,引导读者循序渐进地掌握项目实践经验,具体有如下特点。
01. 第一本带领读者从头到尾学习一个完整的 SLAM 项目的图书。从原理解析、代码解读到工程技巧,一步一个脚印。
02. 本书从初学者的视角切入,部分章节以零基础的小白和经验丰富的师兄两人对话的形式阐述。对话形式一方面可以把初学者学习过程中的很多基础问题展现出来,帮助读者在学习过程中不断思考和提升,提高工程实践经验;另外对话这种口语化的表达方式能够让读者在轻松的氛围中快速理解专业理论知识。
03. 每个重要的知识点都尝试从三个角度去分析:“What (是什么?)”“Why(为什么?)”“How(怎么做?)”,让读者知其然也知其所以然。
04. 丰富的图示和类比。我们把大量复杂或难以理解的原理或流程绘制为具象化的图像,一图胜千言,极大降低了学习门槛。
05. 开源代码配套详细的中文注释。
06. 全书采用全彩印刷,提供极致阅读体验。
本书虽然是针对 ORB-SLAM2/3 系列的原理及代码解析,但其中涉及的知识点同样适用于其他同类算法,学习方法和思路也值得借鉴。
业界专家鼎力推荐
目前,同时定位与建图(SLAM)技术是机器人、自动驾驶、AR、VR 等众多前沿领域的基础技术之一,应该得到充分的重视与普及。然而,面向大众读者的有关 SLAM 的书籍、材料仍然为数不多。本书作为一本介绍 VSLAM 技术的图书,做到了理论与实践充分结合,同时也详细地解释了开源代码的内容,值得高校学生、从业者阅读和借鉴。
——高翔 清华大学自动化系博士
视觉/视觉惯性 SLAM 技术对从业者的理论知识的掌握和编程水平要求都很高,导致很多初学者难以入门。本书以经典的 ORB-SLAM2 和 ORB-SLAM3 为学习对象,将相关原理和知识点介绍与源码解析有机结合起来,并通过有趣的对话形式和直观的示意图,循序渐进地引导读者学习和开发实践,显著降低了学习门槛。对于 SLAM 初学者来说,本书很值得一读。
——章国锋 浙江大学教授
视觉惯性 SLAM 是一项具有多学科背景、将理论知识与工程实践紧密结合的关键技术,学习难度大、门槛高。本书通过解析当下主流的 ORB-SLAM2 和 ORB-SLAM3 开源代码,并穿插介绍对应的数学理论知识,有助于初学者加深对视觉惯性 SLAM 的理解,对企业研发人员也有重要的参考价值。
——邹丹平 上海交通大学副教授
我和小六同学相识多年,他在 SLAM 领域深耕细作、寻根究底。本书是他在 SLAM 方向苦心孤诣、多年积累的心血。本书对 SLAM 领域经典的框架 ORB-SLAM2 和 ORB-SLAM3 做了全面、系统、详细的解读。本书将理论与代码相结合,有助于初学者对 SLAM 技术进行快速学习和使用。
——秦通 香港科技大学博士,SLAM 经典算法 VINS 作者
视觉惯性 SLAM 作为一种基础技术,在机器人、自动驾驶、XR 等领域有广泛而重要的应用价值。研究者和从业者学习视觉惯性 SLAM,不但需要掌握多方面的理论知识,而且要求积累大量的实践经验,在实践中加深对理论的理解,探索新的方法,找到适合解决实际问题的系统设计和程序实现。本书围绕经典视觉 SLAM 框架 ORB-SLAM 系列,全面而详细地解析其算法原理和源代码实现,由浅入深、通俗易懂,为已有一定 SLAM 理论基础的进阶型读者提供了一个入门级的实践项目。本书所体现的学习思考和项目实践方法,也可以拓展到其他 SLAM 框架的学习上,值得读者仔细研读。
——吴克艰 美国明尼苏达大学博士,Nreal 联合创始人
学习 SLAM 技术要内外兼修。本书手把手带你吃透 ORB-SLAM 经典框架,是很好的外功修炼手册。与网上诸多 ORB-SLAM 注解相比,本书最大的特点是提出非常多的“为什么”并给出精辟解答,让读者知其然且知其所以然,这展示了程博士多年积累的深厚功底。相信各阶段的 SLAM 学习者品读本书后,既能快速用于实战,也能对 SLAM 涉及的诸多理论查漏补缺、内化掌握。
——史雪松 复旦大学博士,高仙机器人 SLAM 算法总监
作者简介
本书由中国科学院博士、计算机视觉 life 平台创始人程小六老师历时多年,精心打磨。
程小六博士的研究兴趣为计算机视觉、机器人定位与建图,有丰富的视觉惯性 SLAM 从业经验。
限时五折优惠,快快扫码抢购吧!
评论