4月11日,智东西创课邀请到速感科技CTO张一茗,就《从0到1了解SLAM》这一主题在智东西旗下「机器人」社群(有入群需求请天骄智小西微信zhidxrobot)开讲。本文为本场创课的全程图文实录,分为主讲+Q&A二部分。全文共计5026字,读完大概需要15分钟,你可以掌握:
1、SLAM的定义、发展史;
2、机器人视觉传感器的演进史;
3、三维深度传感器的不同技术路线及差异比较;
4、SLAM如何实现,尤其是vSLAM;
5、vSLAM应用在机器人上存在的问题;
关于嘉宾:张一茗,速感科技CTO,毕业于北京航空航天大学,参与总装备部、火箭军等多型号惯性及其组合导航定位系统设计,负责惯性/卫星/光学组合导航系统及算法设计,具有丰富的定位导航系统设计经验。
主讲实录
张一茗:感谢大家的支持,也感谢何总(注:智东西联合创始人何峰)的邀请,来到这里跟大家分享我在SLAM领域的认识和理解,也欢迎分享后和大家一起探讨SLAM技术在机器人行业的应用。
各位千万别客气,我先来按照我的思路来跟大家分享以下我对SLAM的理解吧。
SLAM全称simultaneous localization and mapping大家应该都比较熟悉了,字面可见分为两大部分:定位、构图。
定位(严格来说是定位、定姿)这个问题几千年来都是个炒的火热的问题。定位的场景千差万别,对精度的要求也越来越苛刻。与此同时,定位也是个细分市场,出于不同场景对于体积、成本、精度、更新频率需求的差异,衍生了多种多样的定位方式。比如GPS、惯导、DR、无线电甚至蓝牙、wifi等等。GPS具有体积小、米级定位精度、无累计误差可做差分、可授时等优势,缺点是要工作在室外,更新频率低,易受多径效应等影响。
惯性导航系统具有短时定位精度极高、输出频率极高,但是它的高成本、大体积、需初始对准的特性使它不会大规模进入消费类市场。消费级机器人领域,通过DR(Dead reckoning)航位推算方法,能够用很低成本的编码器,实现精准的速度控制和短时间的位置朝向估计,但是具有比较大的累计误差且不能实现重定位。随着Rangefinder、CMOS、高性能CPU的发展,人们能够用足够的算力和存储,采集足够的信息,利用场景模型等参数作为先验信息融入到位置姿态估计中。SLAM这种同时建模与构图的概念开始成为一个研究热点。
我这里有一篇论文《1991 Simultaneous map building and localization for an autonomous mobile robot》。(下载论文)
在1991年的时候,SLAM的开山鼻祖们使用了18个超声传感器,利用EKF设计了第一套针对移动机器人的SLAM系统。后来随着激光雷达的出现,系统能够更容易的识别2D平面的角点特征,雷达SLAM的实用性上升了一个级别。而后随着CPU算力的提升,图像的处理能力越来越强,基于单摄像头、多摄像头、深度摄像头的SLAM研究与应用如雨后春笋般冒出来。
基于视觉影像的SLAM系统体积小、功耗低、可靠性高,在提供准确定位的同时,也能够建立或稀疏或稠密的地图,给人无限遐想的空间。十多年来,学术界针对视觉SLAM的研究日新月异,创造了许多优秀的理论。然而到了今天大家也都发现,纯视觉的vSLAM依然有它的缺点,比如受光照条件影响大,高动态环境精度下降,对场景复杂度要求高等特点,以Visual-SLAM为基础的多传感器融合SLAM成为新的热点。
2012年美国军方提出了一个相当宏伟的概念,开展了在GPS服务被干扰、被阻断,即不能使用GPS服务背景下的高精度定位、导航与授时技术:“全源导航”(ASPN)技术研究,以期在未来对抗条件下的军事行动中保持、占据精确PNT(Position navigation time)能力的优势。希望建立一套算法和软硬件架构兼容10种以上的传感器。 尤其是最近几年,microPNT的概念也被军方炒的越来越火热。
目前的导航定位算法大多被迫在完备性与效率之间进行折中和选择。“全源导航”需要发展新的滤波算法,能够全面兼容各类导航算法,如高斯、非高斯统计算法,或线性、非线性测量模型算法等;同时,新的导航算法必须满足真实环境下实时运行的要求。新的导航算法应当能够处理平台运动和测量可用性之间产生的时变状态空间问题,能够对所有导航测量结果进行统计。因此,在执行任务时,新的导航算法应能够灵活地对传感器、敏感器,以及测量量的引入和去除进行调整,从而提供准确和可靠的导航解决方案。
这个概念很难,难在要适用于水下,地下,丛林,郁闭森林,郊区,城市峡谷,建筑室内,开放区域等各种环境、同时还要满足步行,无人机(所有规格),潜水器,轮式车辆,履带式车辆,飞机,小型机器人等各种平台,测量影像,速度,加速度,旋转速率,时间,位置,海拔高度,方向,相位来实现组合定位导航。
除了2D/3D成像系统以外,他们采用了倾角罗盘,,距离/伪距测距仪,气压计,温度传感器,方位角速率传感器,GPS,激光雷达,加速度计,陀螺仪,磁力计,回转罗盘,计时器,毫米波雷达以及其他雷达,1、2、3轴AOA/LOB/TDOA传感器,计步器,星敏感器,红外传感器,无线局域网(WiFi)/射频接收机,声学传感器等等传感器。也只有用上这些传感器,才有可能实现真正全天候、全场景、全平台的定位导航系统。
这是他们大概的架构,可想而知有多复杂。
ASPN的项目给了我最大的一个警示就是:不谈场景去谈定位就是在耍流氓。所以咱们来好好谈谈针对机器人领域中的vSLAM方案。
vSLAM在机器人上最难的问题我认为是这句话:start as a scientist, end as an eigineer。
Dyson出了一款360deg的omnidirectional的vSLAM扫地机,他们的研发起于21世纪初,做了十多年,才把一个扫地机做的漂亮(受一些客观条件限制,效果没有它的外观那么漂亮)。
学术界上各种各样vSLAM算法天花乱坠,可是如果没有自己的技术积累和工程化经验,这离实际的产品化差距还是太远。
对于机器人的vSLAM而言,视觉传感器在其中举重若轻。一个好的视觉传感器就是一个明亮的眼睛。今天咱们按照维度的高低来简单介绍下:
传统面阵相机/多目被动式相机采用面阵CMOS作为核心元件,随着手机行业对于镜头的强劲需求,使得整个CMOS、镜头制造行业迅猛发展,低成本廉价的镜头成为轻而易举的事情。满足了机器人行业对于监控、目标识别与分析、跟踪与定位的需求。
机器人行业的兴起带火了很多摄像头公司,如果归类的话依然脱离不了以下几类:
对于单目结构光:激光投射器通过DOE投射出特征明显的散斑,被红外摄像头捕获,然后解算出深度信息。图中可以看到Kinect(采用primesense方案)透射出去的散斑图,DOE二维光学结构使得激光穿过DOE时,先扩散成伪随机散斑,然后衍射为9束,形成看似随机其实略有玄机的散斑。
然后受投射器功率的影响,单目结构光很难工作在室外。双目结构光则可以规避这个缺陷当然还有一些其他的结构光
这个是hptg提供的pattern图案,他们设计的一体化投射器模组能够实现小体积低温漂移的点阵图案,他是由两幅十分规律的散斑组成,最后同时被红外相机获得,精度相对较高。
还有一种比较独特的方案,它采用mems微镜的方式,类似DLP原理,将激光器进行调频,通过微镜反射出去,并快速改变微镜姿态,进行行列扫描,实现结构光的投射。比如Intel的realsense方案,这种方案可以做到比hptg还要薄的厚度,缺点是信噪比相对较差,动态效果略差一点,也算是体积与性能之间的一种折中。
ToF(time of flight)也是一种被炒的火热的深度获取方法,主要分为脉冲式和相位式两种。这是一种相位式tof的原理,通过采集四个采样点的相位,解算时间差,获得对应pixel的深度信息。
传感器发出经调制的近红外光,遇物体后反射,传感器通过计算光线发射和反射时间差或相位差,来换算被拍摄景物的距离,以产生深度信息。
相位法可以减轻背景光对于深度提取的影响,但是受这种四个采样点分时曝光的限制,它对于动态物体的效果要比脉冲式差一些。脉冲式是一种更常见的tof测距方法,从传统的工业雷达,到现在炒的比较火的面振tof都大量存在它的踪影。
除了以上结构光、tof和普通相机以外,还有一种有趣的摄像头叫eventcamera。
他检测的是变化的像素,大大缩减了输出的数据量,轻轻松松实现类似光流的算法而且具有极高的输出频率。学术界也有人在使用它在做slam,大家可以去搜索相关的论文看看。
这里找到了一个dyson360的一个有趣的vSLAM展示,通过采集全景镜头的视频数据,只有640*480的分辨率,实现了很有趣的vSLAM定位。
SLAM算法在实现的时候主要要考虑以下4个方面:
1、地图表示问题比如dense和sparse都是它的不同表达方式,这个需要根据实际场景需求去抉择。
2. 信息感知问题,需要考虑如何全面的感知这个环境,RGBD摄像头FOV通常比较小,但激光雷达比较大。我们也做过一个类似dyson的方案,能够实现很低成本,小体积的机器人定位。
3. 数据关联问题,不同的sensor的数据类型、时间戳、坐标系表达方式各有不同,需要统一处理
4. 定位与构图问题,就是指怎么实现位姿估计和建模,这里面涉及到很多数学问题,物理模型建立,状态估计和优化。
我们也做过一个类似dyson的方案,能够实现很低成本,小体积的机器人定位。
vSLAM里面还要考虑的有回环检测问题,探索问题(exploration),以及绑架问题(kidnapping)。
vSLAM在算法部分,对数学的基础要求比较高,对概率统计、最小二乘估计、随机梯度下降(或者高斯牛顿、LM)、线性系统建模与估计、非线性系统的概念和优化都得有较深的理解,同时也得有一个open的视野,熟练的编程能力,来实现效率更高的算法。
在团队配置上,更需要要更种各样的人,算法工程师、嵌入式工程师、光学工程师、传感器工程师、算法优化工程师、结构工程师、机电工程师以及丰富的产品测试安排。
比如这就是几周前我们对IMU进行的一系列测试的一部分,受温漂影响,IMU的输出会随着芯片温度上升零偏发生漂移。这就会给一些绝对的姿态参考造成很大的问题,需要通过温度试验摸出imu的噪声误差一致性,从而进行有效的补偿。
整个SLAM大概可以分为前端和后端,前端做配准,研究不同帧之间的变换关系。
首先提取每帧图像特征点,利用相邻帧图像,进行特征点匹配,然后利用RANSAC去除大噪声,然后进行ICP匹配,同时可以利用IMU提供的姿态信息进行滤波融。
后端则主要是研究前端出结果中累积误差的矫正,利用滤波理论(EKF、UKF、PF)、或者优化理论TORO、G2O进行树或者图的优化。最终得到最优的位姿估计。当然,其中还要考虑一些闭环检测问题。
这是我们的传感器配合上我们6dof Visual Inertial SLAM算法的一个简单展示。
vSLAM在机器人上的应用最难的就是产品化和成本上的考虑,好在机器人的vSLAM不需要特别高的实时性,也没有VR、AR令人难受的眩晕效应,不需要将计算速率提的特别高,机器人行业的vSLAM是一个真正短期内看得见的爆发点。
配合低频的visual解算,100ms内利用imu纯积分实现高频率的vSLAM姿态输出,基本上可以实现很低jitter的定位定姿。当然这个行业还远没有达到成熟的阶段,比如依然没有合适的芯片,没有覆盖全场景全天候的解决方案,这也是整个slam行业要继续解决下去的问题。
时间差不多了,今天大概先分享到这里。
Q&A环节实录
提问1
刘军令
目前比较主流使用的slam算法都有哪些?分别都有哪些实际应用中的优势和局限?
张一茗:目前的开源SLAM方法还是很多很多的,国内有一些研究者整理过一个网站。
http://slamcn.org/index.php/%E9%A6%96%E9%A1%B5#.E4.B8.BB.E6.B5.81.E5.BC.80.E6.BA.90SLAM.E6.96.B9.E6.A1.88
但是我的看法是,这些算法都是科研成果,是属于scientist的东西。他们并不能轻松实现产品化,start as a scientist, end as an eigineer,如果没有自己的算法,别人走过的坑该踩还是要踩,才能真正走向产品化的。
提问2
陈进博
目前市场中做SLAM的公司很多,如何去识别哪家更有优势?对于做这一块的公司,您认为应该怎样才能突围而出?
张一茗:我认为识别公司优势的指标就是成熟度,demo很容易,出产品很难。必须有丰富的产品化经验以及脚踏实地的扣每一个细节,才能够突围而出,胜算体现在一些细节,比如标定设备、标定方法、测试方法、生产线设计等等。
提问3
何潇
目前主流的ORB-SLAM的关键点和优化方向是什么?
张一茗:ORB-SLAM只是开源算法的一种,它构建了一种思路很清晰的vslam方法,前端后端严谨,框架清晰,很适合初学者学习,但是我个人认为在产品化的路上他并不是一个特别好的方案。
提问4
林义闽
vslam是否可以用于室外空旷区域?
张一茗:vSLAM在室外是可以用的,但是有一些限制。比如说基于Depth的SLAM在室外是几乎是没法用的。因为室外光源太强,很难获得一个准确的Depth。所以深度图的这种匹配是完全不起作用。然后,对于基于纯视觉SLAM在室外的话,大部分场景是可用的。但是如果说,室外的这种景深太过单调,比如说十分空旷,体现不出层次感的话,他依然是不能够实现一个很好的定位的。只要室外的场景错落有致一些,它依然能够实现一个比较好的精度。
(补充提问):针对第4点的提问,是否可以理解说SLAM主要是运用在室内的而不是室外呢?
张一茗:绝大部分室外场景是可用的,除非特别空旷的一些极端环境。我们测试过我们的算法,没有问题。
提问5
刘焕云
室内三维重建有没有推荐的开源算法,刚入门应该从何入手?
张一茗:这个需求跟SLAM领域略有不同,应该是属于SFM的领域,这个领域开源方法也很多,您可以去SFM领域的paper中搜寻下
提问6
Jennifer
机器视觉领域创业公司和大公司比优势和劣势在哪里?速感科技的核心优势是什么?公司面临的核心挑战是?
张一茗:我认为定位这个行业最大的特点就在于,没有万能的定位方案,每个应用场景都有不同的需求,大家都是在搜寻一个更大的市场,即使是大公司,也很难做到类似apple这样的垄断。对于创业公司,做大公司未来得及做之事,在大公司做起来之前的窗口期抢占对自己有优势的市场,赚取足够的利润并成为新的巨头,这是我认为创业公司的生存之道 (回答完毕)。
提问7
李海峰
请问SLAM硬件在基于FPGA实现的实践中能做到多高的深度分辨率和帧率,还有需要多少逻辑单元?
张一茗:slam并不适合用纯粹的fpga去实现,因为slam中虽然确实有很多可以并行化的部分,但是同时也有很多串行逻辑运算,我认为比较合适的方案还是arm加其他并行处理器的soc架构。我们目前用一些并行化的dsp去做特征提取,500个特征点可以花几个ms来完成,而pc上需要20ms。
我们目前用一些并行化的dsp去做特征提取,500个特征点可以花几个ms来完成,而pc上需要20ms。
提问8
张辰
基于SLAM的移动机器人,在行进过程中,如何克服周边环境变化的影响?(比如在仓库物流应用中,周围货物车辆人员的动态变化)
张一茗:这个问题可以通过两个方面解决,一个是扩大传感器的视野,比如用大视场角的镜头或360deg的雷达,另一方面利用其他传感器比如惯性、编码器进行组合,都可以进行周围环境变化的抑制。
提问9
王佳龙
想问一下,贵公司宣传的M-32传感器定位精度1cm,这个精度指的是RMSE吗?如果是,groundtruth是通过什么方法得到的?
张一茗:groundtruth采用的是类似vicon的光学方案进行标定的,精度mm级别。1cm的定位精度是指的RMSE,是在室内环境进行的测试。
提问10
吴文钦
张总好。我们在用Tof摄像头的来做AGV导航。有好的厂家推荐吗?你们有适合的模组吗?谢谢
张一茗:Tof模组我们不设计,做Tof的公司很多,最上游的有pmd、ti、epc等等公司,下游的模组公司有很多,可能不太适合在这里广告,您可以网上多搜寻一下,或者私下沟通一下。