《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。
《Probabilistic Data Association for Semantic SLAM》:ICRA 2017五篇最佳论文之一,在数学上很有条理很严谨地解答了SLAM几何上的状态(sensor states)和语义的地标(semantic landmark)一起构成的优化问题,而物体检测方面没有用fancy的CNN,而是deformable parts model detection(但也是比较新的2013年的算法),更进一步说这篇文章非常明确地定义问题并给出了数学推论和具体实现结果:from t = 1, …, T, given inertial (IMU),geometric(稀疏特征点), semantic (识别的物体), estimate the sensor state trajectory(传感器轨迹状态) and the positions and classes of the objects in the environment(识别的物体种类和位姿) 这可能也是很多搞视觉、几何、机器人的研究人员仍然甚至越来越喜欢ICRA的原因:关心数学验证,重视几何推论,和硬件紧密结合,对深度学习持开放态度,但在意到底解决了什么实际问题。
《SemanticFusion: Dense 3D Semantic Mapping with Convolutional Neural Networks》:这篇文章相比SLAM算法方面的创新,更偏重怎样结合CNN搭建一套稠密语义SLAM的系统。SemanticFusion架构上主要分为三部分:
前面提到过的ElasticFusion这种稠密SLAM来计算位姿并建出稠密地图;
CNN用RGB或RGBD图来生成一个概率图,每个像素都对应着识别出来的物体类别;
通过贝叶斯更新来把识别的结果和SLAM生成的关联信息整合进统一的稠密语义地图中。
在一个Intel Core i7带Nvidia Titan Black GPU的台式机上,end-to-end可以做到每秒25帧。需要着重说明的是,这篇文章的结果验证了用一套优秀的SLAM系统可以提供帧与帧之后像素级别的2D识别结果和3D地图之间的关联,而且和之前的SLAM++需要事先限定好可识别的物体类别相比,SemanticFusion识别物体的类别可以来自训练好的CNN的海量数据集并且最后标识了整个场景的所有信息。