AR中的SLAM

写在前面

本系列打算讲讲个人对AR行业和AR中的SLAM算法的一点浅显的看法。才疏学浅,文中必然有很多疏漏和不足,还望能和大家多多讨论。今天先讲讲我对AR的一些认识。

AR的一点理解

AR是什么

AR是人类的第三只眼,让人类在现实世界中看到虚拟物体并与之交互。

VR是人类做梦的一种载体。

AR能做什么

AR有能力将二维交互变成三维交互,能让虚拟物体看起来像真的一样。举几个简单的场景。

  • 你可以拥有一只虚拟宠物。你可以从各个方向观察一个虚拟小猫,绕着它转动。你会发现,走近看会显得大一些,离远了看着会变小。愿意的话,还可以挠挠它,和它玩耍。
  • 你将拥有一个虚拟电视。它可以固定在任何地方(即使你到处走动),也可以随意移动。
  • 你在和家人远程通话时能在自己房间看到家人的全息投影。
  • 你将房间变成虚拟密室。
  • 当然,你可以在任何地方唤醒任何APP。

我觉得,如果未来AR能够发展出更多的外延,那么在消费领域会有机会取代手机 ,然后并在若干年后沦为卖广告赚钱的工具 。而在工业领域,AR也有机会蹦跶几下 ,然后被机器人取代

AR怎么实现

目前AR需要通过外部设备来实现。比如在手机上,通过获取摄像头图像并在上面叠加虚拟物体。而专业的AR设备可以将虚拟物体成像在眼睛前面或投射入眼球。

AR需要什么

要实现前面提到的三维交互,AR设备需要具备下面三个功能

  • 自我定位。指定位出自身在空间中的位置。这样才能根据预设的虚拟物体的位置在设备上渲染虚拟物体。
  • 环境感知。主要指感知到周围环境的三维几何信息,这样才能让虚拟物体和真实世界发生自然交互。
  • 交互。要理解来自周边环境中的输入,比如人类的语音、手势,并给出反馈。要将虚拟物体合适的影像通过设备反馈给人类。

定位和环境感知用的就是传说的SLAM技术。

AR的现在

硬件方面,微软憋大招研发出了HoloLens,甩了所有竞争对手两条街。Google有Project Tango,但其定位不甚明确。还有很多号称在某一方面或者全面超越HoloLens的东东。

软件方面,微软在围绕Windows 10构建生态。国内外都有一些还不错的SDK,但在嵌入式平台上还没有完全实现SLAM,离实用还有一点距离。而且,目前几乎没有好用的内容生产工具。

AR的技术路线

好吧,终于进入正题了。仔细观察的话,发现AR的发展和VR有点类似。目前分成两个比较明显的派系:手机派和眼镜派。手机派代表现在,眼镜派却未必能代表未来。

手机AR

手机AR侧重于将虚拟物体叠加在手机摄像头图像上呈现给用户,主要依赖自我定位功能,暂时不涉及到环境感知和过多的交互。鉴于目前智能手机的普及程度,手机AR会是未来一两年的主体。这是一个有需求也有技术的市场。基于AR的营销对普通消费者还是有一定吸引力的。大厂们都在布局和试水。其中又分为

基于摄像头的AR

第一种是marker AR,基于特定图片的图像识别和追踪,一种是指定的图片,一种是现场拍摄的图片。代表作Vuforia。网易阴阳师也很有趣。
第二种AR不需要特定图片,主要基于物体识别和追踪,比如人脸,手,身体等,并让虚拟物体和人脸保持一定的相对位置即可。这类AR可以不用估计手机设备的定位。个人比较喜欢Snapchat,虽然很简单,但创意十足。

基于陀螺仪的AR

借助陀螺仪和电子罗盘得到手机在三维空间的旋转角度,但不能得到手机的位置。简单的测试方法是,将手机前后移动时,虚拟物体的大小将保持不变(于是看上去虚拟物体在平移,不甚和谐)。很多VR盒子也是这个原理追踪头部的转动。

基于SLAM的AR

目前都在加班加点。感谢Raul,感谢Leutenegger。

Tango

联想和Google联合出品了搭载Tango模组的Phab 2 Pro手机,包含一个全局快门鱼眼摄像头,一个消费级IMU和一个深度摄像头,在硬件配置基本满足SLAM的需求,因此很受开发者们欢迎。总之,一个穷人版的HoloLens,富农版的手机。希望主流手机们能早日升级成上述设备,再配个有一定距离的双摄就完美了。

然而,手机运算能力的不足会限制SLAM算法的复杂度。摄像头、CPU和GPU同时高强度工作,电池会消耗很快。毕竟,手机不是为此类应用设计的。手机硬件不足会降低算法的精度和鲁棒性。比如单目的尺度不确定性、卷帘快门、摄像头和IMU的数据同步等等。现阶段,可以从应用倒推算法,以算法促进应用。毕竟并不是所有应用都需要高精度的算法。

AR眼镜

AR眼镜相比于手机,在体验上可以有质的飞越。用户可以透过眼镜看到带景深效果的虚拟物体(通过左右眼合像),而不是一个偏平的屏幕。AR眼镜通过更高规格的传感器和更强大的计算能力,同时支持实时精确定位、场景重建、语音交互、手势识别等复杂功能。

业界这一两年,有些产品看起来越来越像HoloLens,有些产品怎么看起来还是更像Google glass。说好的对标HoloLens呢!

HoloLens

个人意见,作为一款初代AR设备,Hololens已经可以打80分了,领先其它产品两年以上。

  • 算法:实时定位、场景重建都有非常好的工程化实现,局部定位精度很高。手势可用。
  • 软件:Windows 10原生支持,应用开发相对成熟
  • 硬件:定制HPU,强大的计算能力,硬件加速算法
  • 功耗:电池使用两小时,没有明显发热的感觉,软硬件肯定做了大量优化
  • 显示:视场角确实太小,很影响体验,市面上也没有太好的解决方案。渲染的问题我没太感觉到。
  • 外设:无线对体验很重要。玩RoboRaid(打虫子)时明显感觉到,头盔上还带个尾巴是没法用的。

想要做到便携(无线),至少要把一套完整的SLAM算法跑在设备上,有实时的双目(+imu)的slam,有低频但后台运行的稠密场景重建(Kinect fusion),还有复杂的三维网格生成和后处理,没有强大的计算能力支撑是不可能。强大的计算能力意味着过高的功耗,这又要求复杂的电源管理,强大的电池容量和过大的体积。想要运行那么多传感器同时降低功耗,就要有顶尖的软硬件架构设计。哪些功能是必备,需要多少资源,哪些模块应该在什么时候运行,不同模块之间如何交互,如何降低延迟(特别是场景重建)等等。 最后,所有这些都要集成进一个头戴设备里。 所以我觉得微软的壁垒在整体架构设计而不是单一模块。

据HoloLens开发人员介绍,HoloLens的HPU上搭载了24个Tensilica的DSP,其运算能力超过每秒一千亿次[链接]。单块DSP集中处理某类任务处理(应该是基于硬件加速)。Atom SoC主要用来运行Windows 10 和显示。算法的运行速度大约为纯软件的200倍。HoloLens目前预留了一半左右的计算能力,并没有用足HPU,后续还有很大的想象空间。未来嵌入深度学习模组不是梦啊。 傍上了黑科技深度学习,SLAM也许就能落到实处了。

其它厂商

大部分厂商目前还是以高通Snapdragon 820 为主开发。对于手机来讲,820勉强能应付,实现定位功能(vSLAM或者VIO)。对于AR眼镜来说,不仅传感器数目和功耗会高,算法的种类和复杂度更是明显提升,特别是场景重建对于算力的要求非常高。820 SoC 上有一颗Hexagon 680 DSP ,可用来做算法加速,特别是特征点提取等前端功能。ARM架构还可用NEON技术来加速一些简单重复计算。Movidius、NU3000等芯片估计也快进入计划了。但总体而言,还处在开发定位功能的过程中,软硬件的架构都没有完善。

算法方面,随着这两年SLAM蓬勃发展,各家也积累了很多工程经验。相信不久的将来,定位功能应该能达到HoloLens目前的水平甚至更好,也可以支持多场景下的使用。然而,在场景重建方面,由于之前的工作大多基于高性能GPU在PC上实现,想要移植到移动平台上,还有好长的路要走。硬件软件上都有太多的坑要趟了。 然而微软已经做好了!就他家积累最多,还不开源! (插个小广告,之后可能会写一点这方面的东西)

当然,HoloLens并不是完美的。硬件层面上,视场太小、重量偏重、体积太大、成本过高都不是容易解决的问题。软件方面,交互方式创新,手势、语音识别,数据共享,全息成像等等,还有很多值得做的事情。

个人觉得HoloLens最大的遗憾,是它没有解决AR类设备的核心问题:市场定位。很cool,然后呢?3000美元不是玩具,如果不能给用户生产价值,那就无法真正进入消费级市场。

最后

最后,让我们双手合十,一起感谢TUM、ETHZ、UZH、Universidad de Zaragoza和UCL等,以及开源大佬们,给了我们一条活路。

写在前面

本文想讨论一下AR的架构和SLAM在其中的作用。

AR

AR的框架可以简单划分为感知和交互两部分。

感知部分主要负责信息的收集和处理。信息主要通过不同的传感器收集,包括图像、设备加速度、距离(深度)、语音、手势等。利用这些信息,可以进行运动追踪(定位)、地图构建、语音识别、手势识别等一系列感知行为。这部分主要通过APP或者Default service调用不同的Service模块实现。

交互部分主要负责根据指令触发感知行为或者根据感知结果输出交互行为,比如根据运动追踪得到的姿态渲染虚拟物体,根据场景扫描的结果控制虚拟物体的运动、控制系统界面等等。这部分主要通过APP调用操作系统命令和渲染模块实现。

下面是一个简单的示意图,虚线代表调用和反馈机制。

如图所示,一个APP可能同时调用多个service模块,一个service模块可能调用多个传感器。理清service模块和传感器之间的最佳组合及最优算法,是AR算法的核心问题。

AR中的SLAM

如果一个设备想要提供3D效果的AR,显然运动追踪模块是必备的。如果想让虚拟物体和场景交互,或是想要扫描一个真实物体,那么(稠密)三维地图可以提供场景的三维几何信息。
而定位(运动追踪)和建图(稀疏或者稠密地图)构成了SLAM的核心功能。因此,SLAM可以说是AR中最基础的模块,属于设备感知周边环境的范畴。

以Tango为例

下面以Tango的API为例,尝试说明一下AR中的SLAM算法和各个传感器之间的关系。

Tango链接

Tango API提供三个核心功能

  • 运动追踪(motion tracking)
  • 场景学习(area learning)
  • 深度感知(depth percetion)

运动追踪

运动追踪的输出是实时的6DOF姿态。这个模块有滤波框架和优化框架可供选择,现在也有结合深度学习在做的。传感器主要包括单目、双目、IMU的排列组合。Tango用的算法是VIO(fisheye camera+IMU)。

Tango implements Motion Tracking using visual-inertial odometry, or VIO, to estimate where a device is relative to where it started.

image

Tango团队和苏黎世联邦理工学院(ETHZ)有深入合作,ETHZ现在还在基于Tango做一些工作。

场景学习

场景学习的输出是场景中的一些特征,并将它们保存下来,以便将来能够重新定位以前到过的场景,或者用于校正漂移(drift),提高追踪算法的整体精度。

Area Learning gives the device the ability to see and remember the key visual features of a physical space—the edges, corners, other unique features—so it can recognize that area again later.

When a Tango device has learned an area, there are two key things it can do to improve upon the information provided by Motion Tracking alone: a. Improve the accuracy of the trajectory by performing "drift corrections." b.
Orient and position itself within a previously learned area by performing "localization."

image

重定位常用的方法有DBoW2(3)、FabMap、相关性(PTAM)、Fern(Elastic Fusion)以及基于机器学习的算法。校正漂移一般通过回环检测(和重定位类似)和全局优化实现(g2o、GTSAM、iSAM等优化框架)。

深度感知

深度感知的输出是一些点云。通过API调用,可以从Tango设备得到原始点云。结合motion tracking,可以将不同视角下的点云拼接起来,得到场景完整的点云。调用一些APP可以实现距离测量、场景扫描等功能。注意Tango的深度传感器的测量范围是0.5m到4m,不方便用于手势识别(一般小于0.5m)。

这部分主要对应于SLAM中的稠密地图重建。原始点云既可通过双目也可通过结构光、TOF等深度传感器获取。点云拼接可以通过ICP或者运动追踪辅助实现。点云处理、网格生成可以通过OctoMap、TSDF重建、Poisson重建实现。

image

有兴趣的同学可以关注
RTAB-Map,目前在Tango设备上实现了接近实时的点云拼接、单帧点云的网格生成和纹理贴图。

展望

随着硬件的发展和算法的成熟,运动追踪模块估计一两年之内会有大规模的商用,嵌入到手机、VRAR和机器人中。场景扫描模块对硬件(传感器性能、工业设计、功耗控制)和软件(算法、需求定位、架构设计和工程实现)均有较高的要求。由于尚无高效可靠的开源算法,有可能作为一个optional的应用开放一些底层API给开发者。

AR虽然对SLAM的实时性和精度要求较高,但由于能够看到真实世界,其实容许一定的错误率,不像无人车那样,对错误零容忍。

转载请注明作者和出处(http://www.cnblogs.com/luyb),未经允许请勿用于商业用途。 [email protected]/LUYB 联系方式:luyanbin7 at gmail.com


https://www.cnblogs.com/luyb/p/6481725.html

猜你喜欢

转载自blog.csdn.net/danmeng8068/article/details/81058112
今日推荐