速感科技CTO张一茗:如何赋予机器人一双慧眼?从视觉slam说起

来源:机器人创新生态 | 发布时间:2017-05-19 14:15:28

目前科技发展速度飞快,想让用户在 AR/VR、机器人、无人机、无人驾驶领域体验加强,还是需要更多前沿技术做支持,SLAM 就是其中之一。实际上,有人就曾打比方,若是手机离开了 WIFI 和数据网络,就像无人车和机器人,离开了 SLAM 一样。

 

SLAM 主要解决的是相机在空间中的定位、以及创建环境的地图,其发展距今已有 30 余年的历史,在当前比较热门的一些创业方向中,都可以看到它的身影。由于本身包含许多步骤,每一个步骤均可以使用不同算法实现,SLAM 技术也是机器人和计算机视觉领域的热门研究方向。

 

而速感科技作为一家以机器视觉为核心的人工智能解决方案提供商,将前端算法与嵌入式芯片(ARM+DSP架构)结合,实现视觉SLAM,用以完成空间定位、路径规划、自主导航、跟随检测等功能。本期机器人大家说,我们邀请到了速感科技CTO——张一茗为我们深度解读视觉SLAM在移动机器人中的应用。

 

以下为张一茗演讲实录↓

一、        SLAM的定义、发展史

到目前为止,基本上整个机器人行业,都存在一个令大家头疼的问题:不能实现长期可重新定位的导航方案。无论是原始的无线电方案,GPS方案,还是非常贵的纯惯性导航方案,都是很难被平常的消费及工业级的场景所能接受的。但是视觉导航有一个天生的优势:使用摄像头,然后跟一些MEMS惯性传感器做组合,可以用一个很低的成本达到非常高的精度,所以基于视觉的导航越来越得到大家的重视,也逐渐被行业认可。

其中vSLAM就是整个视觉定位导航里面非常突出的一种技术,这种技术被各种各样的领域所需要,比如无人机领域、服务机器人领域、清洁机器人以及工业机器人领域等。在以上诸多领域中,它们都特别需要一个小型化、低功耗,低成本,高垄断性的定位定姿方案,所以vSLAM在整个定位定姿史上是非常被人看好的方案。

vSLAM中v是visual, SLAM即simultaneous localization and mapping,它表示视觉的即时定位与构图,它能够实现同步定位以及地图的创建,所以它其实能够实现基于地图的闭环修正,不会让其定位定姿进度因为时间的增长导致误差进行累积。通过闭环的方式实现一种长时间可用的定位定姿方案,这涉及到了众多学科,包括传感器、计算机工程、机械电子光学自动化等,也是机电一体化先进代表。

 

二、        vSLAM如何实现

如果要做一个效果非常好,能够稳定使用的vSLAM系统,离不开三大块的支持:首先是一个可靠、性能良好的传感器组合;其次是一个适合算法运行的处理器平台;然后就是一个经过深度场景调优的SLAM算法,以及里面合适的资源的调配。

 

我也主要从这三方面进行展开。

 

l  首先是传感器方面。

光学传感器对SLAM来说,是一个特别重要的基础元件。目前大家用做SLAM的方式很多,比如用传统的面阵的相机,还有用主动结构光的相机,还有用一些基于飞行时间法的固态雷达相机,它们或多或少都能够获得不同种类的图像信息,有的是代表特征、颜色的信息,有的是代表深度的信息,它们进行匹配的过程中能够建立地图,同时给实现定位。而且深度相机还有很多好处,例如可以进行场景的绘制,从而进行避障的规划。

比如以传统的面阵相机为代表的单目相机,像PointGrey公司,他们做出来的传感器用来做这种单目多目的相机的基本元件,可以实现很好的纯视觉的定位。以主动结构光相机为代表的,比如说美国的occipital,做了一套基于深度图的定姿方案,也是很好的实现思路,但是一个缺点就是定位定姿精度相对较差,环境适应能力弱,适用于这种建模,但是不太适用于机器人的定位和导航。

对于机器人来说,目前比较理想的,成本、性能比较占优的还是类似于单目惯性传感器这样的方案,它既能够满足于机器人对于定位精度的要求,同时又能满足对体积、生产工艺以及定位精度的要求。双目传感器对于机器人来说也是很合适的,但是生产成本相对来说比较高的,比如它需要做两个镜头光轴的准直,还要标定它的外参,一旦外参因为震动影响发生变化,就会导致它提取的深度发生错误,这对机器人的定位和导航来说是很致命的。

惯性传感器

vSLAM有很多优势,比如能够做回环,做精准的定位,但是它的低频数据,它的短时噪声相对来说会大一些,而且它的输出频率不会特别高,但是惯性传感器,IMU它们的就能够实现很高的输出频率,能做一个非常平滑的输出,而且它们短时间的定位定姿输出精度也是非常高的,所以在机器人的导航定位系统中,IMU通常会作为一个很重要的一个辅助元件参与到它的这个定位导航之中。

IMU全称是Inertial Measurement Units,它里面存放着陀螺仪加速度计,或者有的会加上磁罗盘。用低精度的IMU可以相对比较准确地计算出载体的姿态角、俯仰航轨和偏航,用高精度的IMU,甚至能够在几个小时内获得精度很高的定位定姿信息。

陀螺仪并不是它里面就是有一个陀螺,它只是一类传感器的统称。最原始的陀螺仪确实跟陀螺很像,它是一个绕对称轴做高速旋转的对称刚体,因为旋转的刚体体有定轴性、进动性和陀螺力矩的三个特性,所以被大家用来测量载体的角运动。基于这一点,衍生出很多不同原理的陀螺,例如最传统的其实是机械陀螺。现在,在军工领域和工业领域比较流行光学陀螺,它包括激光陀螺和光纤陀螺,它们能够用相对较低的成本实现不错的精度。

还有目前最流行的MEMS陀螺,它在手机、运动、智能硬件等领域几乎每个设备都有一个,而且它的成本特别便宜,可惜精度会差一些,比如光纤陀螺能够达到一小时。10^-4量级的陀螺漂移,但是对于MEMS陀螺来说最高的也只能达到几度,而且售价几万。对于大家手机内常用的MEMS陀螺仪,基本上是一小时漂移200到300多度的一个精度。

当然现在也有一些更高精度的陀螺仪在被研究,比如说原子干涉陀螺,它利用一些原子的自选特性,可以达到10^-8量级的一个精度,但其实这对于普通消费企业来说是很难被接受的。

加速度计是一个可以测量表面力的惯性传感器。我们把加速度计测量出来的结果叫做比例,因为它其中包含了重力加速度的信息,具体的比例方程如上图所示, wie指的是地球自转角速度,wEN是指当前载体导航坐标系相对于地球坐标系的一个姿态变化,基本上是用来将陀螺仪的输出轴旋转到导航坐标系下的输出轴,从而在统一的世界坐标系当中进行了比力的积分,通过将去掉重力加速度的比力进行一次积分得到载体当前的速度,再将速度进行一次积分可以得到载体当前的位置。

加计其实也被研究了很多年,有摆式积分、振弦式、振梁式……右图就是加计的基本原理,它利用惯性来测量出当前载体的加速度。现在手机里面的MEMS加计也能做到几个毫g级别的精度,对于短时间内的定位能够提供一个很不错的参考,也能解决单目视觉SLAM尺度不确定的问题。

但是作为VSLAM的一种辅助传感器,它自身的精度也十分重要。对于MEMS惯性传感器来说,它的误差是必须在使用之前考虑到的,比如它的标度因数误差,非正交误差、零偏误差以及它的温漂误差。如上图左下角所示,就是它的温漂误差,中间是它的刻度系数误差,最右表示的是它的零偏。然后通过右下角这组方程式进行一次补偿,补偿后的数据用来配合VSLAM做一个组合,才能够达到很不错的效果。在VSLAM的工程化应用中,对于惯性传感器的标定和补偿是特别重要的方向。

有了这些传感器之后,一个非常重要的问题就是用什么样的处理器去处理这些传感器的数据?

首先需要一些类似于X86或者ARM,或者LEON的传统的处理器去做逻辑上的判断,通信上的处理以及可串行度比较高的逻辑算法;同时也需要像DSP或者GPU,还有FPGA来做可定型化的视图像处理算法,除此之外还有一些优化算法。

但其实目前最合适的还是用SOC,它集成了不同的处理器。比如说我们公司现在用的是一个ARM核加上一个DSP核,DSP负责图像的处理,ARM这边负责图像处理后的数据优化和通信。

关于DSP、GPU、FPGA的区别是什么呢?FPGA是用纯逻辑电路来实现的,所以它可并行化的程度特别高,特别灵活,可以做很多底层的优化;GPU有很多很多小的计算核,但是每个计算核的算力不够强,但是在大数据量大吞吐量的情况下,它能够实现很高的运算速度; DSP相对来说是一个具有很强的单兵作战能力的处理器,它只有一个核,但是它每一条指令、运算速度都是特别快的,通过一个处理器就可以实现非常高的处理速度。

对于vSLAM说,因为通常要处理的图像信息没有那么多,而且它对实时性要求很高,所以采用DSP加上ARM方案来实现整套VSLAM算法是比较合理的。

介绍两个比较有名的处理器架构:一个是Movidius它的方式,它是利用了两个RISC级的这种LEON核,再配上12个叫矢量处理器的DSP核,用这12个DSP核去做图像方面的计算,然后用这两个ARM核去做RTOS的运行以及通信各方面的处理。

对CEVA来说,XM4上面放了几个标量处理器,同时也放了两个矢量处理器,它能够实现512位宽的同步处理,换句话说,如果有两个256bit的矩阵,想让它们相加,则只需要一个指令就能够实现。

对于很多图像处理的算法来说,本来依靠ARM进行串行的处理需要很长的时间,但是利用这种512位宽的并行处理,可以将本来的运算速度提高10到20倍,然后这就大大降低了它的延迟,提高它的计算速度。

其实vSLAM也经历过很多演变。前几年比较火的叫Visual Odometry,它就是基于视觉做单纯的定位定姿,但它是一个开环的系统,没有闭环,没有重定位,一旦它的定位发生丢失之后,它就没有办继续之前的位置进行重新定位。

后来,有人就研究基于VO加IMU的组合方式,就叫VIO,但是VIO和VO是一样的,它都是一个开环的系统,它都很难实现一个全局的重定位和闭环,这是比较麻烦的一点。

而对于机器人来说,如果不能够实现稳定的重定位以及形成闭环,抑制误差的发散,那其实VIO的意义也不是特别大。目前来说,vSLAM最稳定的架构是Tracking, mapping和loop detection,它们之间互相耦合,一边定位的过程中一边建图,同时维护地图和侧重点的数据库,进行匹配实现闭环的检测和重定位。

有了定位之后,对于机器人来说特别重要就是路径规。传统的有基于激光雷达的路径规划方案,而我们在做的主要是基于视觉的路径规划方案。

路径规划其实也分很多细节,比如说全覆盖式的路径规划,也有点到点的探索式的路径规划,有基于视觉的全景摄像头式的路径规划,同时也有配合红外对射管的景图和路径规划。对于大家来说,各自的路径规划都不太一样,比如Dyson,它是走回字形发散的规划方案,也有采用弓字形的规划方案,总而言之都有各自的优缺点。

整个路径规划的方案,整个Navigation System都是以定位为基础,以地图为辅进行的。通常为了实现比较稳定的定位,大家都会采用一个三层的定位结构,首先最底层会有一个轮式里程计作为odometry去保证它有定位的输出;然后在中层,他通过利用了一个粒子滤波器,配合红外传感器的输入和地图,进行当前场景位置的作用估计;再顶层就是加入了vSLAM,这里能够实现回环、重定位和最优估计。经过这些设计,它能够实现非常好的导航定位效果。

像扫地机这种设备它从21世纪初被人发明了之后,经历了很多次迭代。最早的大家都是使用用随机清扫的布朗运动扫地机,这种扫地机是进行随机清扫,它碰到障碍之后就会调头,以一百三十五度的角度进行调头,经过长时间的乱走,始终能够将一些可能清扫不到的地方进行清扫,但是它的效率无疑是特别低的,而且特别笨,它的回冲效率会比较差,这就造成了很差的一个用户体验。

而后来随着对路径规划算法的研究以及陀螺仪的应用,陀螺仪和马盘进行组合之后,基本上能够解决短时间内航向上的误差发散,里程上虽然受地表材料的影响,但是基本上能够提供一个粗略的位置估计,对于小户型来说能够实现不错的定位,但是这种方案最大的缺点是它的地图只能用一次,没有记忆功能,无法实现重定位。

再之后,随着传感器的发展,嵌入式的东西拥有更大的计算量,视觉的落地成为可能。像我们现在在做的基于单目vSLAM的扫地机模组方案,就是融入了视觉加惯性测量单元,实现定位和建图,不仅能够做到一个鲁棒的实时定位,而且能够实现更好的回充以及更好的重定位功能。

随着视觉的嵌入式发展,视觉能够实现很不错的定位建图效果,尤其是像我们在做这种vSLAM扫地机方案,它能够实现一个很高的回冲率和很鲁棒的重定位功能,有了这些之后,扫地机就能够实现全覆盖路径规划的功能,这对于扫地机来说是意义非常重大的。当扫地机有了一个可持续的定位以及重定位,它就几乎能够做家用服务机器人想做的任何事情。

如上图所示,是两个视觉和雷达之间的对比,左侧的图案是用我们的模组计算出来的轨迹,右侧是用雷达的方案进出的轨迹,可以看到在相同定位精度的情况下,我们的视觉的方案具有更低的功耗、噪声,成本、体积,同时也具有更高的实时性,这对扫地机来说是非常有优势的。

三、vSLAM如何在机器人上应用

它的安装非常简单,只需要将它装在扫地机的上方,然后跟扫地机的控制接口相连,它就能够实现自身vSLAM的定位以及对扫地机路径规划的控制。像右侧这个曲线,其中它的蓝色部分是ground truth,红色部分是用vSLAM计算得出的,里程是用编码器进行积分得到。从图中可以看出,里程其实有很大的发散现象,它的航向、它的位置、它的比例关系都有问题,但是VSLAM可以巧妙地解决这些问题,不仅能够实现一个闭环,也可以解决里程、打滑等等问题,实现很可靠的重定位。

四、移动机器人vSLAM发展趋势

大家可以看到这样一个趋势,对于机器人来说,它的定位方案会做得越来越小,功耗越来越小,体积越来越小,成本越来越低,但是它的数据量会越来越多,从一维到二维到三维,在配合着芯片嵌入能力的提升的同时,它整个模块的集成度会越来越高,而且从整个行业来看,大家对于定位定姿的需求很统一,很明确的,整个行业的通用型接口和标准也在逐步形成,而且随着现在各种各样处理器的发展,GPU、FPGA等处理器不断推陈出新,计算机资源越来越丰富,可实现的功能也会越来越多。

在目前看来,vSLAM还是有挑战性的,但是我相信,在不久的将来vSLAM一定会用在各行各业,比如,在我们看来第一个可以真正落地并得到广大消费者认可的领域就是扫地机这个行业,所以我们也专门推出了vSLAM的定位导航模组。

对于整个行业来说,vSLAM的真正普及还需要各个领域上游中游下游的共同努力,比如专用芯片上需要专用处理器层面的优化,传感器方面需要对于镜头的质量等进行提高,对于我们来说需要把算法、产品、工程测试做得更漂亮一些,同时也需要不断地挖掘真正合适大家的产品体验和和用户需求。

在我看来,vSLAM已经快到了真正的落地的时候,我相信不久的将来vSLAM会在机器人上得到更广泛的应用。

下面是本次分享的精彩问答:

Q1:目前vSLAM定位精度大概多少?

张一茗:vSLAM单纯讨论定位精度其实意义不大。针对特定场景,比如说720P的分辨率,它基本上已经能够做到毫米级的,大概八九个毫米级的定位精度。对于我们扫地机来说,它配合里程计和IMU能做到一个厘米级别的定位精度。其实vSLAM的定位精度跟很多因素都相关,比如它的镜头式长角,它IMU的精度以及它时间戳的同步等,也跟它的场景复杂度相关。但是目前vSLAM是能够达到可用的一个阶段的。

 

Q2:能分析一下DSP、GPU在SLAM运算能力、功耗方面的差异吗?

张一茗:我认为DSP和GPU还是各有优缺点的。现在比如说GPU上可以做很多并行化的运算,但是我始终认为CPU是一个类似于万蚁啮象的方案,它的单兵作战能力很弱,它需要一个多核协作,比如说万一某一个核它的算法没有处理完,另一个核早就处理完的情况下,它的效率是一种浪费,它对于大数据的吞吐量,对于神经网络这种方式是比较合适的,但是对于实时性要求很高的快速图像处理是不太合适的。DSP就像是特别强大一个单兵战士,它身上的武器装备特别多。它的随机寻址功能,矢量运算的方式,能够实现非常快速的单线程的计算,所以对于SLAM来说,我认为更合适的还是DSP,行业里面大家基本上用的也都是DSP。

 

Q3:VSLAM和激光雷达成本和精度的对比是怎样的?你们有做过数据对比没?

张一茗:激光雷达的定位精度、成本肯定是比VSLAM要低一些的。同等价位上它们可以实现差不多的一个精度,或者vSLAM要更高一些,我们做过一些相应的数据对比, vSLAM在室外会有很多的优势,而且它能够实现一个六自由度的定位,相对于雷达定位来说,这是一个很大的优势。

 

Q4:视觉对光线的要求是不是很高,会不会影响其适用范围?

张一茗:视觉有一个比较大的劣势,就是它在特别黑暗的场景下是有问题的,所以它对光线是有一定要求的,会影响它一定的适用范围。

 

Q5:vSLAM工程化用的是哪家算法,有对应的paper没?

张一茗:算法方面我们用的是自家的算法,这其实里面蹚过了很多坑,网上有很多可以用的开源算法,但是其中问题还是特别多的,离真正的产品化工程化还是特别特别远的,如果说像这种开源的vSLAM算法其实网上找可以找很多,但实际上它们对于嵌入式基本上是很难实现一个很不错的效果的。

 

Q6:你们的VSLAM产品淘宝有吗?卖多少钱一个,市场上有没有类似产品,对比的相对优势主要在哪些方面?

张一茗:我们的方案不在淘宝上销售,我们主要是跟B端公司一块合作去推广。

 

Q7:vSLAM仅仅是定位与建图?不包含物体环境识别?

 张一茗:vSLAM本身只是visual、simultaneous、localization、mapping,它本身是不包含物体环境识别的。其实物体环境识别是机器人领域特别重要的一个技术方向,这个也是我目前一直在做的一个技术研究方向。

 

Q8:视觉slam的扫地机如何解决夜间等特殊环境使用?

张一茗:Slam扫地机器人其实就是我刚提到的三层的定位机制,最底层是用odometry去实现,在中层用的是粒子滤波的方式去实现位置估计,在顶层是利用视觉slam。在夜间情况下它的视觉slam会失效,但是,他依然能够依靠他的粒子滤波以及底层的odometry去进行路径规划,所以它依然能够实现清扫的功能。但是,换句话说,对于扫地机器人来说,很少有人会让它在晚上工作,因为那会儿大家也都在睡觉了。

 

Q9:vSLAM精度能达到多少?以后会不会完全替代激光雷达?

张一茗:我相信每个产品都会拥有它的细分市场,vslam在很多领域是很有机会取代雷达的,但是不会完全代替激光雷达。

 

Q10:如果仅仅考虑 vslam 的前端算法,loop closing 有什么好的方法吗?

张一茗:loop closing目前也是有不少方案的,比如说词典的方式,这个在计算上比较优化的。但是它的缺点就是需要存一个字典库,然后对于这种暴力匹配的方式,他缺点是有很多图片、历史记录,要维护,但是优点就是它无需要提前存储一个字典,所以在程序上更容易控制。

 

Q11:SLAM在VR中有何应用场景?

张一茗:SLAM在VR中是必用的一个关键技术点。但是目前来说VR还是一个离落地比较远的一个东西,从适应产品方面来说,还是目前以体验为主,而且对于AR来说,精度还是没有那么准确,我个人感觉现在SLAM在AR中火起来还是需要一段时间。但这里我说的AR,是指头戴式AR,而不是手持AR,目前手持AR已经没有什么问题了。

 

Q12:建图应该是很耗计算资源的,影响实时性,未来vslam如何在这方面进一步改进呢?

张一茗:说建立这种dense map,确实是很耗资源的不仅是计算资源还有内存存储资源,影响它的实时性。但是,如果说dense map是其实对计算资源消耗还是相对很少很少的。未来SLAM,其实我认为是看具体应用场景,比如说希望做一个跟三维避障很相关的方案的话,他就需要存储很多的densemap来做计算资源的地图的存储。

其实即使建立这种 map也有很多方式降低计算量和存储量的需求,比如说降低它的分辨率。用比较大块儿的三角化来实现这个,也是可以解决这些问题。

 

Q13:请问您怎么看VSLAM在室外机器人领域的应用前景和以及存在的问题主要什么?

张一茗:SLAM在室外有很强的应用需求,但是,他反而变成一种辅助性的东西,因为,有在室外有GPS情况下,GPS可以提供很不错的参考,VSLAM在GPS提供信息的过程中进行插值,提供一个连续而且准确的位置姿态输出,我相信未来室外机器人最合适的组合肯定是视觉惯性和GPS组合这种方案。