雷锋网按:本文为PerceptIn联合创始人兼CEO张哲参加今年5月29日至6月3在新加坡举行的ICRA大会的感想,主要分享作者关于各个种类的SLAM及相关研究应用的看法和思考。
张哲,纽约州立大学机器人方向博士,清华大学自动化系本科。研发方向:地图重建、位置跟踪、机器人自主避障导航、设备端和云端的算法优化。2009-2014年在微软,2014-2016年初在Magic Leap工作。
右一为PerceptIn CEO张哲,正在为参会人员演示给开发者用的视觉模组
2017年的ICRA大会 (International Conference on Robotics and Automation) 6月初在新加坡刚刚结束。ICRA作为国际机器人顶级学术会议之一,从1984年开始到今年已经是第34个年头。现在有意愿的申办方要提前3年申请,即使被IEEE接受申请成为主办方,都需要提前两年每年学习当届主办方的经验教训。在新加坡会议现场,专门有2018澳大利亚布里斯班和2019加拿大蒙特利尔的宣传展台。这次的ICRA是机器人学术届和工业界的一次盛会,不但来自各大洲的学校和研究机构的教授、学生、研究员们来演讲或学习最新的成果,工业界机器人和“泛机器人”相关的公司也纷纷前来参展和学习。机器人研究的方向和种类繁多,但计算机视觉,SLAM (同步定位和建图),建图,空中机器人 (泛指各类无人机),距离感知,RGB-D感知这几个话题的track加在一起已经占到所有track的一半左右。笔者根据这次的大会所见所闻和自己在机器人领域十多年 (尤其是最近一年多在PerceptIn全面推进软硬件一体化智能感知方案的产品化落地) 的切身感受,在这里和大家分享各个种类的SLAM及相关研究应用的看法和思考。
本文纯属个人观点,仅供大家参考。SLAM技术基本知识的详细介绍请参见笔者将近一年前的博客文章。
稀疏SLAM指的是前端用从图像提取来的较稀疏的特征点而不是从深度摄像头来的稠密点云,或不提取特征点直接试图计算深度的直接法 (后面有专门的讨论)。稀疏SLAM在理论和实现上已经趋于成熟,借助六轴陀螺仪imu (inertial measurement unit) 的视觉惯导融合的紧耦合方法已经成为标配。在几何方面,稀疏SLAM从前端到后端已经做的非常细致,以致于大量算法微调的细节出现在论文里面,在这里举一些比较典型的例子:
特征点从哪里来的问题分为了KLT (Kanade-Lucas-Tomasi) pipeline和FREAK (Fast Retina Keypoint) pipeline: 前者的原理是基于亮度恒定、时间连续、空间一致来对像素做跟踪匹配,这种方法几何信息算的好、跟踪时间长,但是会飘,后者相对不飘但跟踪时间短,其原因是FREAK的DoG (Difference of Gaussian) 极值在相邻帧重复性差。
特征点被如何用的问题分为了SLAM特征点和MSCKF特征点:SLAM特征点被加入状态向量并被更新,MSCKF特征点在测量的相关公式中被忽视 (marginalize) 掉来生成位姿之间的约束。这样做的目的在于既保持了准确性又照顾到了处理时间不会太长。
诸如此类还有很多如何用imu来选好的特征点,如何在后端优化中融合imu带来的约束,sliding window有多长,哪部分用NEON/GPU实现了,标定里面哪个参数最重要,预积分的处理在还算合理的情况怎么能更合理等等。
然而即使稀疏SLAM算法日趋成熟,但对硬件的依赖度反而变大,深层次的原因是因为算法抠的非常非常细,对硬件的要求也都是非常细致并明确的,比如大家偏好大视角镜头但大视角的边界畸变最严重,到底好不好用、怎么用、用什么模型;比如相机和imu的同步最好是确定的硬件同步,不但希望能保证顺序和微秒级的精确,还希望能在每帧图的那一刹那正好有一帧imu这样预积分才最准确;比如需要看的远又能拿到准确的尺度,那必须基线拉大,那么拉到多大呢,著名的做VINS (Visual Inertial Navigation System) 的明尼苏达大学自己搭的硬件是26厘米基线的双目配上165度的大视角镜头,堪称是跟踪神器;再比如宾州大学这次在ICRA发布的供SLAM跑分的数据集,采集数据用的是自己搭的一套硬件,由两个第二代Tango平板,三个GoPro相机,和一个VI Sensor (做这个的公司早已被GoPro收购),再加上AprilTags的marker跟踪,融合后的位姿信息作为真值。PerceptIn的第一代双目惯导模组在大会的展台区引来大家争相询问并购买,可见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)。这个数据结构对机器人非常实用,尤其是不同高度下的快速深度检索和障碍物检测。
一句话来解释event camera (暂且直译为事件相机) 的原理就是事件相机的每一个像素都在独立异步的感知接收的光强变化。对每个像素来说,“事件”的本质就是变亮或变暗,有“事件”发生才有输出,所以很自然的没有了“帧率”的概念,功耗和带宽理论上也会很低。另一方面,事件相机对亮度变化非常敏感,动态范围能到120 dB,甚至在对快速旋转等剧烈运动的响应比imu还要好。这种新的传感器自然被很多做位置跟踪的研究者们所青睐,ICRA上尤其是欧洲的几个有名的实验室都在玩。然而从工业界相对实际的角度看,这个相机有以下三个致命点如果不解决那么就无法大量普及:
1) 贵,现在的价格是几千美元,现场有人说量产了就能一美元,这显然没法让人信服,CMOS已经应用这么多年现在一个global shutter的CMOS也不可能只要一美元,虽然笔者又专门到做事件相机的公司展台去详细聊了价格的问题,得到的答案是未来两三年内随着量产是有可能降到$200-$300的;
2) 大,因为每个像素的电路十分复杂,而每个像素本身的物理大小是20微米左右的,相比于很多CMOS,6μm x 6μm都算很大的了,那么就直接导致事件相机的物理尺寸很大但像素其实很低 (比如128 x 128);
3) 少,“少”是说信息维度信息量不够,事件相机的事件一般都在明暗分界线处,所以现场有人就管它叫“edge detector”,但在计算机视觉整体尤其是结合深度学习后都在往上层走的大趋势下,只有一个事件相机是远远不够的,这也是为什么事件相机的厂家也在整合imu和传统相机做在一起,但这样的话成本更是居高不下。
一句话来解释direct method (直接法) 的原理就是在默认环境亮度不变 (brightness consistency assumption) 的前提下,对每个像素 (DTAM) 或感兴趣的像素 (Semi-Dense LSD SLAM) 的深度通过inverse depth的表达进行提取,并不断优化来建立相对稠密的地图,同时希望实现相对更稳定的位置跟踪。相比于研究了20多年的基于特征点的方法,直接法比较新,只有五六年的历史,下面是ICRA上和直接法有关的几篇论文,主要都是通过融合额外的传感器或方法进行对原有直接法的改进。
“Direct Visual-Inertial Navigation with Analytical Preintegration”: 主要讲的是连续时间意义下的imu kinematic model的闭式解。
“Direct Visual Odometry in Low Light Using Binary Descriptors”: 不再基于亮度不变的假设,改用基于二进制特征描述不变的假设。
“Direct Monocular Odometry Using Points and Lines”: 用edge把基于特征点和基于直接法的两种方法结合起来。
“Illumination Change Robustness in Direct Visual SLAM”: Census效果最好。
那么直接法到底能否大范围普及呢?笔者从工业界“比较俗比较短视比较势利”的角度来看,觉得直接法两边不靠非常尴尬: 1) 直接法没有证明在位置跟踪方面比前端用传统特征点的基于滤波 (MSCKF, SR-ISWF) 或者基于优化 (OKVIS, VINS-Mono) 要有优势,如果环境恶劣是由于光线变化,那么直接法的基于环境亮度不变的假设也不成立,如果环境恶劣是由于超级剧烈的高速运动,那么直接法也是得通过imu融合才能争取不跟丢; 2) 直接法的直接好处是地图相对稠密,但相对稠密是针对于基于特征点的稀疏而言,如果这个地图是为了做跟踪,那么基于特征点的方法已经证明可以做得很好了,如果是为了3D重建,那么大可以用一个深度相机,如果是被动双目的话,被动双目还原出稠密深度本身也在大幅度进步。所以笔者认为直接法够新颖,但新颖的不够强大,或者说不够强大到有落地价值。
这次ICRA大会的SLAM还有一个非常大的方向是语义SLAM还有深度学习,试图从各个方面帮助SLAM的几何部分。这个话题非常有趣也非常大,限于篇幅不多赘述。大方向上学术界SLAM的相对成熟,必然伴随着工业界很大量级的产品中集成达到产品化程度的SLAM方案,那么在工业界SLAM未来走势会是什么样子呢?笔者有以下几点看法:
1) SLAM太重要会导致大厂都想拥有,但有能力搞高质量全套的就那么几家,这几家也能搞到业界最好,比如微软HoloLens,谷歌Tango,苹果ARKit,注意即使实力强大到这几家也都紧密配合自己的硬件,也没法给出一个普适方案;
2) 会有很多出货量极大但优势不在算法端或者说不需要在算法和软件的公司,比如各大扫地机厂商,这些厂商只需要在创业公司里面挑一家方案成熟度最高、资金储备最充足、人才储备最完备、最容易合作的方案厂商合作就好;
3) 留给国内外的SLAM初创公司做单点技术的空间不大,这个现象不只出现在SLAM上,也会出现在任何一个技术的产品化道路上,然而在SLAM和“泛感知”这一块相对比较特殊的是需要SLAM和智能感知的产品和方向太多,而感知对硬件的依赖又非常大,整体市场尤其每个细分领域远远没有达到饱和的阶段。
ICRA 2017,风起狮城,SLAM的未来已经开始。