科普:VR的位置跟踪系统是如何工作的?

除了具有广阔的视野外,虚拟现实头显与常规的3D显示器的区别在于它们能够被跟踪。PC VR,主机VR以及现在一些独立的头显甚至还具有位置跟踪功能,因此你可以倾斜身体,躲避甚至在VR中走动。

但是这种跟踪如何运作?在这里,我们将解释主要的位置跟踪系统及其运行方式。

背景

什么是位置跟踪(6自由度)?

Oculus Go、三星Gear VR和谷歌Daydream View等大多数移动VR头显只有旋转跟踪(3DoF)。你可以向上或向下看,向左或向右倾斜。但是如果你试图倾斜或移动你的头部的位置,则不会被跟踪。整个虚拟世界将与你同行。3DoF控制器与之类似,仅限旋转。它们基本上只能充当激光选择指针。

这对于就座体验的VR内容来说是可以接受的,但它不允许你在物理上移动虚拟世界,或者直接用手与之交互。

在PC VR和主机VR上,以及现在的高端独立VR中,头显具有位置跟踪功能(6DoF)。位置跟踪使用户可以在虚拟环境中实际移动。如果跟踪范围足够大,你甚至可以在VR中绕着整个房间走动。

当控制器也是6DoF时,你可以直接用手与虚拟对象进行交互,因为你可以通过在现实世界中的移动实现虚拟空间中的移动。

如何实现位置跟踪?

旋转跟踪(3DoF)总是使用微型机电陀螺仪实现的。但不同的公司使用不同的技术来实现位置跟踪(6DoF)。虽然某天可能存在共同的行业标准,但目前尚未形成。不同的公司对哪种技术是正确的有不同的看法。

不同的跟踪系统均可平衡成本、设置难易度、跟踪范围、控制器跟踪范围和模块化等问题。

位置跟踪的共同基础:航位推算

与普遍看法相反,下面描述的光学系统仅是真正意义上的“校正”系统。所有这些系统的主要共享跟踪方法是微型机电加速度计。这些加速度计通常以1000赫兹运行。

其工作原理是:加速度计不读取位置或速度,他们读取加速度。你可能还记得微积分,你可以随着时间的推移获得加速度的积分并获得速度。如果你随着时间的推移得到速度值的积分,你就会获得位置信息(或至少从原始位置产生的位移信息)。

使用它来确定位置的变化称为航位推算。这就是VR头显和控制器每时每刻都在跟踪自己的方法。

那为什么还需要其他跟踪手段呢?因为加速度计并不完美,会产生噪声数据。将这些数据进行两次积分意味着即使是最小的误差也会被放大,并且误差还会累积。实际上,这意味着基于加速度计的位置跟踪会在几秒钟内漂移到无限远。

VR跟踪系统的目的是通过提供参考来纠正这种漂移。每个跟踪系统都采用不同的方式,但目的是相同的。

常见的VR跟踪系统

“星座”(最初的Oculus Rift)

在设计Rift时,Oculus面临着提供与OptiTrack等数千美元的系统相同质量跟踪的挑战,但其成本却要低一个数量级。

每个被跟踪设备都有一个隐藏在外部塑料下的预定义红外LED“星座”。红外线对人眼是不可见的。

传感器基本上是带有过滤器的摄像头,只能看到红外光,通过USB线缆以60Hz的频率将帧发送到用户的PC。PC处理每个帧,识别每个红外LED的位置,从而识别每个对象的相对位置。

该软件可以轻松识别它所看到的LED,因为它知道“星座”的形状,它会记住物体在前一帧中的位置,并且知道它的加速方向(来自加速度计)及其旋转(来自陀螺仪)。每个红外LED也以特定频率闪烁以识别自身。这些创新使“星座”跟踪系统在基于标记的跟踪系统中占据了一席之地。

为了支持快速运动,Rift头显和触摸控制器每次即将发出LED脉冲时,都会与传感器中的无线芯片进行无线通信。这使得相机快门能够像LED那样准确曝光,并且曝光时间很短。

“星座”跟踪不再用于Rift S头显的跟踪,但它用于Rift S头显内置的摄像头,以跟踪控制器。

“星座”的优势:

整合成本低

高品质的跟踪

适用于大多数环境

“星座”的缺点:

每个传感器都与PC有线连接

大USB带宽会导致许多主板出现问题

传感器具有有限的垂直视野

PlayStation VR

PlayStation VR也使用相机,但与Rift不同,PSVR的跟踪功能在可见光光谱中运行。

PlayStation 4摄像头单元包含两个间隔开的相机。摄像头单元连接到PlayStation,后者使用图像数据跟踪头显上的蓝色光条和控制器上的光球。

这使得索尼可以利用2010年就已经发布的PlayStation Move控制器。

PSVR跟踪的优势:

整合成本低

利用现有的PS Move控制器

PSVR跟踪的缺点:

跟踪质量低

不支持房间规模跟踪

SteamVR“灯塔”(HTC Vive)

Valve的SteamVR“灯塔”系统是目前市场上最独特的系统。与所有其他系统不同,它根本不使用摄像头,而且PC不处理任何数据。“灯塔”从一开始就被设计为能够进行房间规模的位置跟踪,而无需将传感器连接回用户的PC。

基站(“灯塔”)位于房间的相对顶角。它们不与PC通信,也不是传感器。它们在整个房间内发射广角二维红外激光束。一次完成一个轴的发射,比如先左右方向,然后上下方向,然后再重复。在每次扫描之前,它们会发出强大的红外闪光。

每个被跟踪设备包含连接到芯片的红外光电二极管阵列。该芯片测量红外闪光和被每个轴的激光扫描到时,二者间隔的时间。由此可以确定它在房间中的位置。

“灯塔”的独特价值在于它在理论上是一个相对简单的设计。不涉及复杂的计算机视觉算法或相机读数,只涉及激光扫描之间的时间。

“灯塔”的优势:

无需将基站连接到PC(仅供电),

高品质跟踪,

跟踪范围大。

“灯塔”的缺点:

生产/整合相对昂贵,

通常需要在墙壁上安装基站(电机会抖动),

室内的反射表面会引发跟踪失灵。

SLAM / Inside-Out

在Oculus Rift和HTC Vive发布之后,许多VR公司开始意识到,在房间里安装传感器或基站的要求让很多潜在买家不想购买。

许多新的和即将推出的头显使用内置于头显中的摄像头,这些摄像头使用计算机视觉算法执行“由内向外”跟踪。使用的特定算法类型被称为即时定位与映射(Simultaneous Localization And Mapping,简称SLAM)。

SLAM算法通过注意房间中的独特静态特征来工作。通过比较来自加速度计和陀螺仪的旋转和加速度以及这些特征如何移动,可以确定头显的位置。

有几家公司已经发布或计划发布使用SLAM的头显:

微软:Windows MR头显

谷歌:联想Mirage Solo

HTC:Vive Focus

Facebook:Oculus Quest和Oculus Rift S

其中,谷歌称他们的跟踪算法为“WorldSense”,Facebook称他们的跟踪算法为“Oculus Insight”。

为了跟踪控制器,这些系统以与“星座”相似的方式运行,那就是使用可见光或红外光。头显上的摄像头跟踪控制器上塑料下的LED。

SLAM/Inside-out的优势:

无需外部硬件,

成本非常低,

简易的设置,

控制器的跟踪范围大,只要在你能在现实生活中看到你的手,头显就可以跟踪控制器。

SLAM/Inside-out的缺点:

无法在黑暗中工作,

当控制器在头后或背部时无法准确跟踪,

当手臂在头显和控制器之间时,无法跟踪控制器的运动。

最初发布于5月16日

原文链接:https://uploadvr.com/how-vr-tracking-works/

苹果与谷歌的AR平台之争刚刚开始 但谷歌已经输在了起跑线上

在上周的WWDC 2017开发者大会期间,终于等到了苹果在AR领域真正的行动:苹果推出了名为ARKit的平台,并且表示,这一平台将成为世界上最大的AR平台。是不是世界最大我们不知道,但至少在与另一家巨头谷歌进行对比时,可以发现,苹果在AR领域的进展已经领先谷歌一大步。

苹果ARKit的优势所在

我们先来看看苹果的ARKit。据本次开发者大会提供的信息,ARKit可以让开发者们利用来自于相机和传感器的详细数据,将数字对象投射到3D空间。通过现场的演示可以看出,苹果的ARKit在算法和优化上下足了功夫,效果应该说超过了现有的手机端AR应用。

并且,ARKit平台提供了“世界跟踪”功能,这项功能依赖于一项视觉惯性测距的技术。使用iPhone或iPad的摄像头和运动传感器,ARKit可以在周围环境中找到一些点,当手机移动时,ARKit仍然能够追踪它们。它不会创建一个3D模型,但它可以将物体“钉在”某一个点,然后改变物体的尺度和视角。它也可以在环境中找到一个平面,让用户把虚拟物体放在地板或者桌子上。

另外,ARKit可以改善现有AR应用程序的各个元素,例如强大的物体缩放功能。苹果公司表示,ARKit的运行仅占用了手机CPU的一小部分,可以减少AR所带来的资源消耗。ARKit不会改变iPhone或iPad的基本跟踪功能,它只是让更多的开发人员可以使用,并且不再需要构建自己的跟踪和映像系统。

天猫互动技术专家蒋佳忆认为,最近一年,国内国外几乎所有SDK公司都在基于单目做SLAM算法的研发,然而除了Vuforia以外,并没有哪家拿出来可以服众的单目SLAM算法SDK,或多或少的,各家都有自己存在的问题。

而苹果展示的ARKit效果足以超过所有其他玩家,并且,这还是iOS原生算法。这就意味着所有APP不需要集成任何SDK就可以具备目前市面上最好的AR能力,可以说对大部分SDK都是致命的打击。

谷歌Tango平台新进展

谷歌在今年的I/O 2017开发者大会上也展示了Tango平台的全新进展。根据之前的报道,谷歌的AR平台Tango能通过手机摄像头和处理器配合,将现实世界和虚拟图像无缝融合。

具体来说,Tango平台融合了Motion Tracking运动追踪技术、Area Learning场景学习技术和Depth Perception深度感知技术,结合一系列的摄像头、传感器和芯片,能实时为用户周围的环境进行3D建模。在去年年底,首款搭载谷歌Tango平台的智能手机,联想Phab 2 Pro也已经开售。

而在今年,谷歌进一步推出了室内定位服务VPS(Visual Positioning Service),它可以在没有卫星信号的室内精准定位,结合Google Map精确检测周围的环境和位置,当用户位于室内时,能提供类似GPS的导航体验。这意味着Tango平台可以实现更多的AR应用场景,例如,提供AR指引,帮助寻找目标商品等等。

并且据I/O 2017大会现场消息,集成VPS技术的第二代Tango设备将在今年夏天推出,比如华硕的ZenFone AR,估计发布会也就这两天了。

在实际应用方面,目前,Tango技术已经应用到谷歌的学校和教育项目Google Expeditions中,宜家即将推出的应用程序还可以让顾客可以直接在App上把虚拟家具置于家中。

ARKit和Tango各有优缺点

从上文可以了解到,谷歌Tango平台已经有了一些实际应用场景,但当说到设备时,谷歌可就尴尬了。

谷歌Tango平台发布已经一年有余,但目前市面仅有联想的Phab 2 Pro一款手机,再加上即将发布的华硕ZenFone AR,是的,只有这两款。由于Tango平台对硬件配置有明确要求,并且目前适配Tango平台的内容匮乏,导致Tango手机出货量少得可怜,且价格偏高(比如联想Phab 2 Pro国行版售价高达3999元,除了Tango技术加持之外,没有任何亮点)。毕竟谷歌不能指望手机厂商在低端机型上搭载复杂且昂贵的Tango摄像头模组。

而苹果ARKit发布一瞬间几乎覆盖所有的iOS设备,首先在用户基数上,谷歌就无法与苹果相比。谷歌无法强推Tango平台,让用户更换手中的安卓机,而且这还会加剧安卓平台的碎片化。碎片化问题,可能会抵消谷歌在AR技术方面的优势。

如此看来,苹果称ARKit将成为“世界上最大的AR平台”,这话恐怕不假,毕竟它可以直接应用在市面上海量的iOS设备上。苹果公司软件工程部高级副总裁Craig Federighi认为:”一旦将软硬件整合在一起,苹果便可以使每一部iPhone和iPad成为AR平台,届时世界最大的AR平台将会形成。”

当然,ARKit也是一个能力有限的平台,至少和Tango平台相比还有一些劣势。

比如,Tango设备相比iOS设备有更多的摄像头,可以接收广角图像和深度数据,而且在过去的几年中,它开发出非常精确的跟踪功能。你用它扫描一个房间时,Tango可以立即构建一个相应的3D模型。对于苹果来说,这需要在iOS设备上安装一个单独的外围设备。

此外,苹果似乎并不打算像谷歌一样,让AR与互联网搜索功能联动起来。开发者可以使用苹果的机器学习框架来识别场景中的对象,但它不会让Siri像Google Assistant那样自动翻译标语。

巨头之争给行业带来的影响

毫无疑问,双方在AR领域的新动作,会让苹果与谷歌形成更严峻的竞争。谷歌的AR产品为基于手机平台的增强现实技术设定了很高的标准。苹果加入市场竞争,会对称霸已久的Tango平台造成一定威胁,最明显的就是降低了AR的开发和使用门槛。

这对于行业的发展也来说是一件大好事。巨头入局本来就容易吸引话题,带动更多的公司加入潮流中来。而简化AR的开发和使用,也可以快速教育用户,毕竟不是所有的用户都会去购买AR眼镜,而在手机上使用AR应用则要容易的多。当用户习惯于使用AR,并且想要更高质量的AR体验的时候,如今只能面向B端用户的AR眼镜或许就会进入C端。

再来看AR应用的开发商,由于技术不够成熟,之前开发AR应用时,接入SDK的学习成本和风险都比较高,再加上代表性的AR游戏《口袋妖怪GO》后期下滑得厉害,导致开发商动力不足。而在苹果发布ARKit之后,开发商们就不一定还能淡定的观望了。就算是跟风,应用开发者们也会尝试在游戏里加入部分AR的元素,这一点很值得期待。

如此看来,苹果此举能够大幅加速整个AR行业的发展。

反观谷歌,如上文所述,Tango技术对手机硬件的硬性要求,是市面上符合这一标准的机型极少,现有的大批安卓机无法接触这一技术,反而让Facebook之流轻而易举地占领了AR这一重要阵地。笔者有点纳闷的是,谷歌在VR方面的发展策略是比较适合市场现状的,先用价格低廉的Cardboard教育市场,再用高质量的Daydream逐步提升。为何在AR领域却不使用这种策略,一上来就要做高端呢?

最初发布于2017年6月14日

华为AR Engine细节发布:明年将会有2亿台手机支持华为AR Engine

6月22日至23日,以“开放&创新”为主题的华为终端·全球合作伙伴及开发者大会在北京举行。在本次大会期间,华为正式发布全场景生态战略,宣布全面推行耀星计划,设立DigiX创新工作室,通过芯端云开放平台,赋能合作伙伴,真正为用户带来更美好的数字生活。笔者参加了本次大会。

在6月23日的VR/AR分论坛期间,华为AR/VR产品线总裁李腾跃正式发布了VR SDK 2.0和AR Engine 1.0,并宣布将会面向所有开发者开放。之后,华为AR产品规划经理符谋政对华为AR Engine的主要特性及对开发者的支持进行了介绍。

为什么要选择华为AR Engine?

关注AR行业的开发者们应当都有了解,Facebook在2017年4月的F8开发者大会上发布了Facebook AR Studio,并展示了一些支持平面和物体识别的AR应用Demo,不过Facebook到现在为止,真正提供给开发者的只有AR Studio,可以做脸部检测的动态特效。而在之后的6月,苹果发布了ARKit,紧接着8月份Google发布了ARCore,大厂纷纷入局手机AR,2017年可以说是当之无愧的手机AR元年。

可能会有开发者心存疑惑,既然iOS和安卓平台上都已经有了AR开发工具,为什么要选择华为AR Engine呢?

据介绍,首先,华为AR Engine是东半球第一个可商业化“大规模部署”的AR SDK。在今年4月的华为P20中国区发布会上,余承东已经公布了对华为AR Engine和ARCore的支持,并且在发布会上展示了一些AR应用。在当时,虽然国内也有一些厂商发布了对AR SDK的支持,但其他厂商在发布这些平台之后并没有明显的开发者的支持,而在这方面,华为做了非常多的工作来支持开发者。

大规模商用的一个标志就是,华为AR Engine支持的设备数量是非常多的。目前,华为AR Engine已经在P20系列手机上运行,到今年10月升级Android P之后,会全系列支持采用麒麟970及以上芯片的设备,到12月,还会增加对麒麟960和6系列的芯片的支持。而在此之后华为发布的新机型将会全面支持华为AR Engine。预计到2019年6月,支持华为AR Engine的手机数量将超过2亿台,这是一个非常可观的数字。而同时支持华为AR Engine和谷歌ARCore也将成为华为手机的显著优势。

其次,华为AR Engine经过了一些顶级的应用开发商的严格考验,比如华为和腾讯合作对AR游戏《一起来捉妖》进行调试,还有网易的AR游戏《悠梦》和京东的AR家具展示应用,都取得了不错的反响。

需要注意的是,华为AR Engine只支持安卓平台,不支持iOS、Windows、Linux。华为认为,包括SLAM在内的很多AR特性都是和硬件强相关的,对摄像头,IMU甚至处理器的参数都有一定的要求,如果不经过硬件的调校,算法是没办法很好地运作的。所以华为AR Engine目前很专注地只支持安卓,只支持华为手机,这也是华为作为硬件厂商,软硬件结合的一个优势。

为了支持开发者们使用华为AR Engine,华为提供了完善的开发者的支持。比如在今年5月,华为AR Engine的Beta版已经在华为开发者联盟网站上线,开发者在这里可以下载SDK和技术文档,可以很方便地开发AR应用。

同时,华为也在与中国信息通信研究院牵头制定ARVR的API接口标准。希望联合国内的厂商,共同制定一个标准接口,减少开发者们的工作量。

华为AR Engine的主要技术特性

针对华为AR Engine的特点,除了目前业界标准的AR特性之外,华为AR Engine还加入了人脸跟踪、人脸Mesh、人脸光照、三维重建、手势姿态等等,后续还会加入尺度测量和光照检测等特性。结合华为手机的GPU和NPU,可以让这种处理能力更加快速和强大。

预计到今年四季度,华为AR Engine将会实现物体/场景重建、房间级多人SLAM、2D/3D图像跟踪、垂直面检测、遮挡计算等特性,之后的版本还会探索人体重建、大场景重建、Cloud SLAM,甚至是曲面检测等等。

接下来华为详细介绍了华为AR Engine 1.0目前已经具备的一些AR特性。

首先是SLAM,这是一个空间定位的特性,它会检测你在空间中的位置,给你一个世界坐标系,结合这个坐标系之后就可以定位,把真实物体和虚拟物体结合起来,同时还会做平面识别。与友商的AR SDK相比,华为AR Engine配合集合芯片和模组优化,功耗更低,能够实现在弱纹理下的快速初始化,并且具备更高的稳定性。同时,华为AR Engine的SLAM特性在今后会全系列支持麒麟9系列和6系列的芯片,到明年6月份,支持的设备会达到2亿台。

其次是平面检测,平面检测其实是基于SLAM,根据场景点云信息,识别类似桌面、地面和墙面等平面,并获取平面三维信息,之后叠加一些AR应用。华为AR Engine的平面识别速度、平面精度、平面贴合度相比友商的AR SDK均占据优势,并且平面和实际的环境会更加贴合,而不仅仅是简单的大块的平面。

接下来是光照检测,这是指识别场景中的光照情况,同时依据此光照情况改变虚拟物体光强变化。光照检测在AR体验中是非常重要的,因为虚拟物体摆放在真实环境中,要和真实的光照情况结合,不然会显得虚拟物体非常突兀,在使用华为AR Engine开发的AR应用中,照在虚拟物体的光照会根据实际的光照有不同强度的变化,据介绍,华为AR Engine的光强识别速度很快,会在10帧之内识别当前光强度的数值,并作出调整。

第四个重要特性是华为AR Engine特有的手部识别。华为AR Engine目前可以识别和跟踪十余个类别的特定手势,并实时输出识别结果和手部位置(>30fps),还可以输出手部关节点和骨骼,支持更精细的识别和操作。结合这一特性,AR应用可以实现非常有趣的手势特效,这种特性是友商的SDK现在不提供的,或者只提供类别识别,功能单一。此外,华为AR Engine对手势进行识别时,正反面的识别是一致的,左右手不区分,且对肤色不敏感。与之相比,有些算法对肤色比较敏感,容易出现错误。该特性目前已经集成在了华为AR Engine 1.0中。

另外华为AR Engine还做到了身体姿势识别,可以识别输入单人或双人的2D身体关节点和骨骼,支持多种姿态识别,由于采用了NPU加速,可以实现30pfs的实时输出。同时还可以做到识别输入单人的3D身体关节点和骨骼,支持转身,同样可以实现30fps的实时输出。据介绍,这一特性需要使用华为手机的NPU,没有NPU的助力,帧率可能会非常低,跑不动识别算法。与之相比,友商的算法只提供2D骨骼点,应用场景很狭窄,且基于CPU算法,帧率一般小于10帧,无法做到近乎实时的输出。

最后,还介绍了华为AR Engine在多机地图共享方面的研究,并且这一特性即将在后续版本的AR Engine中提供给开发者。多机地图共享是指将多台AR设备同步在统一的世界坐标系下,共享统一的虚拟信息。华为将其分为三个阶段,第一个阶段是用Marker/图像/物体来进行跟踪,第二个阶段是做一个基础的锚点,多人可以共享一个地图,第三个阶段可以做到全局地图,并且可以长期保存,可以在所有的地方启动全局地图。华为预计将在今年年底实现前两个阶段的地图共享。并且这一特性除了支持安卓平台,还可能会支持iOS平台,但由于iOS不会开放其底层的算法,华为可能会用一些比较简单的算法来实现地图共享。目前的华为AR Engine 1.0版本还没有这一特性,后续会陆续实现。

2018华为终端·全球合作伙伴及开发者大会已经结束,此次大会期间,华为AR/VR产品线高管分享了华为在AR/VR领域的布局及对开发者的支持。

最初发布于2018年6月28日