视觉SLAM漫谈 (三): 研究点介绍
1. 前言
读者朋友们大家好!(很久很久)之前,我们为大家介绍了SLAM的基本概念和方法。相信大家对SLAM,应该有了基本的认识。在忙完一堆写论文、博士开题的事情之后,我准备回来继续填坑:为大家介绍SLAM研究的方方面面。如果前两篇文章算是"初识",接下来几篇就是"渐入佳境"了。在第三篇中,我们要谈谈SLAM中的各个研究点,为研究生们(应该是博客的多数读者吧)作一个提纲挈领的摘要。然后,我们再就各个小问题,讲讲经典的算法与分类。我有耐心讲,你是否有耐心听呢?
在《SLAM for Dummy》中,有一句话说的好:"SLAM并不是一种算法,而是一个概念。(SLAM is more like a concept than a single algorithm.)"所以,你可以和导师、师兄弟(以及师妹,如果有的话)说你在研究SLAM,但是,作为同行,我可能更关心:你在研究SLAM中的哪一个问题。有些研究者专注于实现一个具体的SLAM系统,而更多的人则是在研究SLAM里某些方法的改进。做应用和做理论的人往往彼此看不起,不过二者对科研都是有贡献的。作为研究生,我还是建议各位抓住SLAM中一个小问题,看看能否对现有的算法进行改进或者比较。不要觉得这种事情肤浅,它是对研究有实际帮助和意义的。同时,我也有一些朋友,做了一个基于滤波器/图优化的SLAM实现。程序是跑起来了,但他/她不知道自己有哪些贡献,钻研了哪个问题,写论文的时候就很头疼。所以,作为研究生,我建议你选择SLAM中的一个问题,改进其中的算法,而不是先找一堆程序跑起来再说。
那么问题来了:SLAM方面究竟有哪些可以研究的地方呢?我为大家上一个脑图。
这个图是从我笔记本上拍下来的(请勿吐槽字和对焦)。可以看到,以SLAM为中心,有五个圈连接到它。我称它为Basic Theory(基础理论)、Sensor(传感器)、Mapping(建图)、Loop Detection(回环检测)、Advanced Topic(高级问题)。这可以说是SLAM的研究方向。下面我们"花开五朵,各表一枝"。
2. 基本理论
SLAM的基本理论,是指它的数学建模。也就是你如何用数学模型来表达这个问题。为什么说它"基本"呢?因为数学模型影响着整个系统的性能,决定了其他问题的处理方法。在早先的研究中(86年提出[1]至21世纪前期[2]),是使用卡尔曼滤波器的数学模型的。那里的机器人,就是一个位姿的时间序列;而地图,就是一堆路标点的集合。什么是路标点的集合?就是用$(x,y,z)$表示每一个路标,然后在滤波器更新的过程中,让这三个数慢慢收敛。
那么,请问这样的模型好不好?
好处是可以直接套用滤波器的求解方法。卡尔曼滤波器是很成熟的理论,比较靠谱。
缺点呢?首先,滤波器有什么缺点,基于它的SLAM就有什么缺点。所以EKF的线性化假设啊,必须存储协方差矩阵带来的资源消耗啊,都成了缺点(之后的文章里会介绍)。然后呢,最直观的就是,用$(x,y,z)$表示路标?万一路标变了怎么办?平时我们不就把屋里的桌子椅子挪来挪去的吗?那时候滤波器就挂了。所以啊,它也不适用于动态的场合。
这种局限性就是数学模型本身带来的,和其他的算法无关。如果你希望在动态环境中跑SLAM,就要使用其他模型或改进现有的模型了。
SLAM的基本理论,向来分为滤波器和优化方法两类。滤波器有扩展卡尔曼滤波(EKF)、粒子滤波(PF),FastSLAM等,较早出现。而优化方向用姿态图(Pose Graph),其思想在先前的文章中介绍过。近年来用优化的逐渐增多,而滤波器方面则在13年出现了基于Random Finite Set的方法[3],也是一个新兴的浪潮[4]。关于这些方法的详细内容,我们在今后的文章中再进行讨论。
作为SLAM的研究人员,应该对各种基本理论以及优缺点有一个大致的了解,尽管它们的实现可能非常复杂。
3. 传感器
传感器是机器人感知世界的方式。传感器的选择和安装方式,决定了观测方程的具体形式,也在很大程度上影响着SLAM问题的难度。早期的SLAM多使用激光传感器(Laser Range Finder),而现在则多使用视觉相机、深度相机、声呐(水下)以及传感器融合。我觉得该方向可供研究点有如下几个:
- 如何使用新兴传感器进行SLAM。 要知道传感器在不断发展,总有新式的东西会出来,所以这方面研究肯定不会断。
- 不同的安装方式对SLAM的影响。 举例来说,比如相机,顶视(看天花板)和下视(看地板)的SLAM问题要比平视容易很多。为什么容易呢?因为顶/下视的数据非常稳定,不像平视,要受各种东西的干扰。当然,你也可以研究其他的安装方式。
- 改进传统传感器的数据处理。 这部分就有些困难了,因为经常传感器已经有很多人在使用,你做的改进,未必比现有的成熟方法更好。
4. 建图
建图,顾名思议,就是如何画地图呗。其实,如果知道了机器人的真实轨迹,画地图是很简单的一件事。不过,地图的具体形式也是研究点之一。比如说常见的有以下几种:
- 路标地图。
地图由一堆路标点组成。EKF中的地图就是这样的。但是,也有人说,这真的是地图吗(这些零零碎碎的点都是什么啊喂)?所以路标图尽管很方便,但多数人对这种地图是不满意的,至少看上去不像个地图啊。于是就有了密集型地图(Dense map)。
- 度量地图(Metric map)
通常指2D/3D的网格地图,也就是大家经常见的那种黑白的/点云式地图。点云地图比较酷炫,很有种高科技的感觉。它的优点是精度比较高,比如2D地图可以用0-1表示某个点是否可通过,对导航很有用。缺点是相当吃存储空间,特别是3D,把所有空间点都存起来了,然而大多数角角落落里的点除了好看之外都没什么意义……
- 拓扑地图(Topological map)
拓扑地图是比度量地图更紧凑的一种地图。它将地图抽象为图论中的"点"和"边",使之更符合人类的思维。比如说我要去五道口,不知道路,去问别人。那人肯定不会说,你先往前走621米,向左拐94.2度,再走1035米……(这是疯子吧)。正常人肯定会说,往前走到第二个十字路口,左拐,走到下一个红绿灯,等等。这就是拓扑地图。
- 混合地图。
既然有人要分类,就肯定有人想把各类的好处揉到一起。这个就不多说了吧。
5. 回环检测
回环检测,又称闭环检测(Loop closure detection),是指机器人识别曾到达场景的能力。如果检测成功,可以显著地减小累积误差。
回环检测目前多采用词袋模型(Bag-of-Word),研究计算机视觉的同学肯定不会陌生。它实质上是一个检测观测数据相似性的问题。在词袋模型中,我们提取每张图像中的特征,把它们的特征向量(descriptor)进行聚类,建立类别数据库。比如说,眼睛、鼻子、耳朵、嘴等等(实际当中没那么高级,基本上是一些边缘和角)。假设有10000个类吧。然后,对于每一个图像,可以分析它含有数据库中哪几个类。以1表示有,以0表示没有。那么,这个图像就可用10000维的一个向量来表达。而不同的图像,只要比较它们的向量即可。
回环检测也可以建成一个模型识别问题,所以你也可以使用各种机器学习的方法来做,比如什么决策树/SVM,也可以试试Deep Learning。不过实际当中要求实时检测,没有那么多时间让你训练分类器。所以SLAM更侧重在线的学习方法。
6. 高级话题
前面的都是基础的SLAM,只有"定位"和"建图"两件事。这两件事在今天已经做的比较完善了。近几年的RGB-D SLAM[5], SVO[6], Kinect Fusion[7]等等,都已经做出了十分炫的效果。但是SLAM还未走进人们的实际生活。为什么呢?
因为实际环境往往非常复杂。灯光会变,太阳东升西落,不断的有人从门里面进进出出,并不是一间安安静静的空屋子,让一个机器人以2cm/s的速度慢慢逛。论文中看起来酷炫的算法,在实际环境中往往捉襟见肘,处处碰壁。向实际环境挑战,是SLAM技术的主要发展方向,也就是我们所说的高级话题。主要有:动态场景、语义地图、多机器人协作等等。
7. 小结
本文向大家介绍了SLAM中的各个研究点。我并不想把它写成综述,因为不一定有人愿意看一堆的参考文献,我更想把它写成小故事的形式。
最后,让我们想象一下未来SLAM的样子吧:
有一天,小萝卜被领进了一家新的实验楼。在短暂的自我介绍之后,他飞快地在楼里逛了一圈,记住了哪里是走廊,哪儿是房间。他刻意地观察各个房间特有的物品,以便区分这些看起来很相似的房间。然后,他回到了科学家身边,协助他的研究。有时,科学家会让他去各个屋里找人,找资料,有时,也带着他去认识新安装的仪器和设备。在闲着没事时,小萝卜也会在楼里逛逛,看看那些屋里都有什么变化。每当新的参观人员到来,小萝卜会给他们看楼里的平面图,向他们介绍各个楼层的方位与状况,为他们导航。大家都很喜欢小萝卜。而小萝卜明白,这一切,都是过去几十年里SLAM研究人员不断探索的结果。
References:
[1]. Smith, R.C. and P. Cheeseman, On the Representation and Estimation of Spatial Uncertainty. International Journal of Robotics Research, 1986. 5(4): p. 56--68.
[2]. Se, S., D. Lowe and J. Little, Mobile robot localization and mapping with uncertainty using scale-invariant visual landmarks. The international Journal of robotics Research, 2002. 21(8): p. 735--758.
[3]. Mullane, J., et al., A Random-Finite-Set Approach to Bayesian SLAM. IEEE Transactions on Robotics, 2011.
[4]. Adams, M., et al., SLAM Gets a PHD: New Concepts in Map Estimation. IEEE Robotics Automation Magazine, 2014. 21(2): p. 26--37.
[5]. Endres, F., et al., 3-D Mapping With an RGB-D Camera. IEEE Transactions on Robotics, 2014. 30(1): p. 177--187.
[6]. Forster, C., M. Pizzoli and D. Scaramuzza, SVO: Fast semi-direct monocular visual odometry. 2014, IEEE. p. 15--22.
[7]. Newcombe, R.A., et al., KinectFusion: Real-time dense surface mapping and tracking. 2011, IEEE. p. 127--136.