作者 | 张哲
责编 | 何永灿
SLAM最近三年随着算法不断成熟、硬件不断增强、应用场景逐渐丰富,在学术界和工业界都有长足发展。在六月初新加坡刚刚结束的国际机器人顶级会议之一的ICRA 2017 ,机器人研究的方向和种类繁多,但计算机视觉、SLAM(同步定位和建图)、建图、空中机器人(泛指各类无人机)、距离感知、RGB-D感知这几个话题的track加在一起已经占到所有track的一半左右。
笔者根据这次的大会所见所闻和自己在机器人领域十多年(尤其是最近一年多在PerceptIn全面推进软硬件一体化智能感知方案的产品化落地)的切身感受,在这里和大家很有针对性地分享现有各个种类的SLAM的工程细节(包括实现、优化、方案、选型、经验等等),以及从工业界的角度对SLAM相关技术的看法和思考。本文纯属个人观点,仅供大家参考。SLAM技术基本知识的详细介绍请参见笔者之前的文章,《SLAM刚刚开始的未来》。
文末附全文相关paper下载链接。
稀疏SLAM
稀疏SLAM指的是前端用从图像提取来的较稀疏的特征点,而不是从深度摄像头来的稠密点云,或不提取特征点直接试图计算深度的直接法(后面有专门的讨论)。
稀疏SLAM发展到今天,在理论和实现上已经趋于成熟,借助六轴陀螺仪IMU(Inertial Measurement Unit)的视觉惯导融合的紧耦合方法已经成为标配。在几何方面,稀疏SLAM从前端到后端已经做得非常细致,以致于大量算法微调的细节出现在论文里面,在这里举一些比较典型的例子:
代表文章
《A Comparative Analysis of Tightly-coupled Monocular, Binocular, and Stereo VINS》:明尼苏达实验室的深入细致的对单目,双目但不重叠,重叠双目系统的性能分析,大量工程实现细节,还有和其他SLAM系统的对比,必读。
然而即使稀疏SLAM算法日趋成熟,但对硬件的依赖度反而变大,深层次的原因是因为算法抠的非常细,对硬件的要求也都是非常细致并明确的,比如大家偏好大视角镜头但大视角的边界畸变最严重,到底好不好用、怎么用、用什么模型;比如相机和IMU的同步最好是确定的硬件同步,不但希望能保证顺序和微秒级的精确,还希望能在每帧图的那一刹那正好有一帧IMU这样预积分才最准确;比如需要看的远又能拿到准确的尺度,那必须基线拉大,那么拉到多大呢,著名的做VINS(Visual Inertial Navigation System)的明尼苏达大学自己搭的硬件是26厘米基线的双目配上165度的大视角镜头,堪称是跟踪神器。
再比如宾州大学这次在ICRA发布的供SLAM跑分的数据集,采集数据用的是自己搭的一套硬件,由两个第二代Tango平板,三个GoPro相机,和一个VI Sensor(做这个的公司早已被GoPro收购),再加上AprilTags的marker跟踪,融合后的位姿信息作为真值。PerceptIn的第一代双目惯导模组在大会的展台区引来大家争相询问并购买,可见SLAM和各类基于计算机视觉的研究人员对一个好用的硬件需求非常大。
稠密SLAM
稠密SLAM重建目前也相对比较成熟,从最开始的KinectFusion(TSDF数据结构 + ICP)到后来的InfiniTAM(用哈希表来索引很稀疏的voxel), ElasticFusion(用surfel点表示模型并用非刚性的图结构),DynamicFusion(引入了体翘曲场这样深度数据通过体翘曲场的变换后,才能融入到TSDF数据结构中,完成有非刚性物体的动态场景重建)都做的比较成熟。工业界实现非常好的是微软的HoloLens,在台积电的24核DSP上把mesh simplification这些操作都搞了上去。
这届ICRA上稠密SLAM重建这部分,很明显看出大家仍然很喜欢基本的几何图元,比如平面、法向量,这里不一一赘述。着重说一下让笔者感到惊喜的是很基础但非常重要的,给地图的数据结构仍然有很大程度的创新,比如这篇《SkiMap: An Efficient Mapping Framework for Robot Navigation》,其本质是“Tree of SkipLists”(笔者不知道该翻译为“跳表树”还是“树跳表”),3D空间XYZ各一层,前两层的每个节点其实就是一个指针指向下一层,最后那层才是voxel有真正的数据,而各层有个隐藏层是跳表,保证了查找插入删除都是O(logn)。这个数据结构对机器人非常实用,尤其是不同高度下的快速深度检索和障碍物检测。
从工程角度看,稠密SLAM在台式机上已经能在不用GPU的情况下做到实时。在手机上如果要做到实时,需要有针对性地加速,比如预处理、计算法向量,如果是被动双目在stereo block matching这类对每个像素都需要的计算就非常适合用手机GPU。比较好的参照标准是ISMAR 2015(International Symposium on Mixed and Augmented Reality)的这篇论文《MobileFusion: Real-time Volumetric Surface Reconstruction and Dense Tracking On Mobile Phones》,在iPhone 6上处理320×240分辨率的图,用CPU和GPU能够做到位置跟踪和3D重建都能达到25fps。
基于事件相机的SLAM
一句话来解释Event Camera(暂且直译为事件相机)的原理,就是事件相机的每一个像素都在独立异步地感知接收光强变化。对每个像素来说,“事件”的本质就是变亮或变暗,有“事件”发生才有输出,所以很自然的没有了“帧率”的概念,功耗和带宽理论上也会很低。另一方面,事件相机对亮度变化非常敏感,动态范围能到120dB,甚至在对快速旋转等剧烈运动的响应比IMU还要好。这种新的传感器自然被很多做位置跟踪的研究者们所青睐,ICRA上尤其是欧洲的几个有名的实验室都在玩。然而从工业界相对实际的角度看,这个相机有以下三个致命点,如果不解决就无法大量普及:
基于直接法的SLAM
一句话来解释Direct Method(直接法)的原理,就是在默认环境亮度不变(brightness consistency assumption)的前提下,对每个像素(DTAM)或感兴趣的像素(Semi-Dense LSD SLAM)的深度通过inverse depth的表达进行提取,并不断优化来建立相对稠密的地图,同时希望实现相对更稳定的位置跟踪。相比于研究了二十多年的基于特征点的方法,直接法比较新,只有五六年的历史,下面是ICRA上和直接法有关的几篇论文,主要都是通过融合额外的传感器或方法进行对原有直接法的改进。
语义SLAM
语义英文为Semantics,是意义和含义的意思。语义SLAM顾名思义就是超出点线面的几何意义,而再进一步得到更深层次的环境和物体信息,比如我在一个屋子走一圈,SLAM告诉你精准的轨迹位置信息和精准还原出来的一堆3D点,但语义SLAM还能够告诉你沿路看到了哪些物体和这些物体的精准位置,这个不但从商业的角度来说想象空间和商机非常大,而且对终端用户来说更实用更有意义,如果说稀疏SLAM的稀疏地图点是为了跟踪和重定位,稠密SLAM的稠密点云或者mesh是为了场景重建,那么语义SLAM才是真的全方位“环境重建”。
ICRA上的顶级语义SLAM paper已经证明初步验证和实现已经完成,大范围普及最多两年。举两篇文章为例:
被动双目生成稠密深度
通过双目视差生成稠密深度由来已久,但在这届ICRA上我们仍然看到有很多学术创新,在PerceptIn的展台上,很多学术界和工业界的朋友来询问这个问题。虽然双目对纹理少或者不够好的地方很乏力,而且又有易受光线环境影响的致命缺点,但这个问题仍然非常有意义:
举两篇文章为例。
结语
大方向上学术界SLAM的相对成熟,必然伴随着工业界很大量级的产品中集成达到产品化程度的SLAM方案,那么在工业界SLAM未来走势会是什么样子呢?笔者有以下几点看法:
SLAM刚刚开始的未来,每一步都是一堆工程细节。
相关论文下载链接: 《MobileFusion: Real-time Volumetric Surface Reconstruction and Dense Tracking On Mobile Phones》 https://www.robots.ox.ac.uk/~mobile/Papers/2015ISMAR_ondruska.pdf 《Direct Visual-Inertial Navigation with Analytical Preintegration》 http://ieeexplore.ieee.org/abstract/document/7989171/ 《Direct Visual Odometry in Low Light Using Binary Descriptors》 http://frc.ri.cmu.edu/~kaess/pub/Alismail17ral.pdf 《Direct Monocular Odometry Using Points and Lines》 https://arxiv.org/abs/1703.06380 《Illumination Change Robustness in Direct Visual SLAM》 http://ieeexplore.ieee.org/document/7989525/ 《Probabilistic Data Association for Semantic SLAM》 http://www.cis.upenn.edu/~kostas/mypub.dir/bowman17icra.pdf 《SemanticFusion: Dense 3D Semantic Mapping with Convolutional Neural Networks》 http://www.imperial.ac.uk/media/imperial-college/research-centres-and-groups/dyson-robotics-lab/mccormac_etal_icra2017.pdf 《Real-time Stereo Matching Failure Prediction and Resolution using Orthogonal Stereo Setups》 http://people.inf.ethz.ch/dominiho/publications/ICRA_2017_ortho_stereo.pdf 《LS-ELAS: Line Segment based Efficient Large Scale Stereo Matching》 http://www.cogsys.cs.uni-tuebingen.de/publikationen/2017/JellalICRA17.pdf 《Robust Stereo Matching with Surface Normal Prediction》 http://frc.ri.cmu.edu/~kaess/pub/Zhang17icra.pdf
作者简介:张哲,PerceptIn联合创始人,纽约州立大学机器人方向博士。研发方向为地图重建、位置跟踪、机器人自主避障导航、设备端和云端的算法优化。2009-2014年在微软,2014-2016年初在Magic Leap工作。 本文来源于《程序员》,未经允许不得转载。