Tango 开发指南(8) — 区域学习原理

工作原理
优化轨迹
区域描述和定位
使用建议
常见案例
使用区域学习和 ADF

原文链接:https://developers.google.com/tango/overview/area-learning

工作原理

单用运动追踪,设备可以追踪自己在 3D 空间中的运动和方向,也能上报自己的位置和前进方向,但是无法保存看过的事物。区域学习技术能让设备找到并记住物理空间的关键特征——边缘,角落和其他特征点——在稍后故地重游时识别出该空间。原理是,系统将物理空间唯一的视觉特征点以数学描述的形式存储到设备上,并建立索引。所以设备能够快速匹配正在观察的特征点和已存储的特征点,而该过程无需借助任何远程服务。

当设备学习了某个区域,设备会做两个关键操作来优化运动追踪提供的数据:

使用“漂移修正”来提高轨迹的精确程度;
使用“定位”来确定自己在某个已经学习的区域内的位置和方向;

优化轨迹

前面章节说过,运动追踪的时间越长,测量结果越不精确。设备会让自己面朝竖直方向以此来修正误差,但是其他方面的 pose 数据误差,单靠运动追踪是无法修正的。

开启区域学习功能时,设备能够记住它浏览过的区域的视觉特征点,并使用这些特征点来修正位置、方向、运动方面的误差。这些特征点能让系统完成漂移修正(也称为循环闭包(loop closures))。当设备来到一个曾经来过的地方并意识到这一点时,它会明白自己已经绕了一圈,然后通过自我调节以使轨迹与之前的记录更加吻合。在应用中我们可以使用这些修正措施来调整设备的轨迹和位置。

用下面的例子说明漂移修正。当你开始通过某个区域时,实际有两条不同的轨迹同时存在——你走的那条轨迹(真实轨迹)和设备测量出来的轨迹(测量轨迹)。绿线是设备的真实轨迹。红线是测量轨迹,红线向我们展示了随着时间的推移,测量轨迹偏离真实轨迹的过程。当设备回到原点,并认出原点时,它会修正漂移误差,同时调整测量轨迹使之与真实轨迹更加吻合。

这里写图片描述

没有漂移修正,在将现实空间映射到游戏或应用中时将会出现误差。比如,游戏中的门洞应该对应现实世界中门洞,但是漂移误差将会造成游戏中的门洞对应现实世界中其他非门洞的位置。

区域描述和定位

开启区域学习功能的前提下,当你通过一个区域后,你可以把设备看到的东西保存到一个区域描述文件中(ADF)。学习某个区域然后以 ADF 文件的形式加载之,具有很多优点。比如,你可以在应用中将设备坐标帧和之前保存的坐标帧进行对齐,以保证也游戏或应用中的地点总是出现在相同的物理位置。

有两种创建 ADF 文件的方法。第一种是使用任何一款能够保存区域描述的应用,包括区域学习的 demo 工程。第二种是使用 Tango API 在你的应用中完成区域学习、保存和加载操作。

如果想在同一个空间内保持一致的用户体验,比如让虚拟虚体出现在它上次用户看见它的地方,你必须使用自定位。自定位包括两个阶段:

加载之前保存的 ADF 文件;
移动设备至被保存的区域内。当设备“看到”当前正处于 ADF 文件描述的区域时,它会立即知道自己相对于 ADF 文件中起点(被保存区域中区域学习开始的起点)的位置——这就是自定位。没有自定位,每次区域学习过程结束时设备就会丢失起点。

使用建议

Tango 设备依赖区域的视觉多样性去实现自定位。如果某个区域内有很多相同的房间或者空荡荡的房间内只有空荡荡的墙壁,设备很难做到自定位;
横看成岭侧成峰,同一个区域从不同的角度和位置看,差别是很大的,而且随着时间的不同而不同(比如家具被移动位置,一天中的不同时间光线的差异等)。如果你实施自定位时的条件跟保存在 ADF 文件中条件类似时,设备更有可能成功完成自定位;
因为环境时刻在变化,你可以为同一个物理区域创建多个不同条件下的 ADF 文件。这样能让用户选出最接近其当时条件的文件。此外,你还可以将多个区域学习会话添加到同一个 ADF 文件中,来获得从各个方位和各种光线和环境变化下该区域的视觉描述。
我们的用户体验最佳实践页面中有其他的关于创建 ADF 文件和使用区域学习的建议。

常见案例

多用户体验:如果处于同一个区域的多个用户借助云服务使用同一个 ADF 文件,那么他们将定位到同一个坐标帧。这样多个用户将知道彼此的位置并进行互动。原生的 Tango API 并不支持通过云服务共享数据,但是开发者可以通过谷歌云存储或谷歌游戏 API 做到这一点。

基于位置的购物或活动:零售商店的老板创建商店的 ADF 文件并共享输出,然后消费者下载该文件,完成自定位,然后可以使用设备直接导航到感兴趣的货架。

注意:尽管 ADF 文件不能直接录制图像或视频,但是这些数据可以重建成可视图像。因此,为了保护用户隐私,就跟处理图片和视频时候一样,当你将用户被学习的区域描述上传到云或跟其他用户共享之前,必须要获得用户授权。
区域学习和区域描述都是很强大的功能,我们很高兴开发者使用这些功能去开发牛逼应用、做出牛逼的用户体验。

使用区域学习和 ADF

某些 Tango API 的行为跟学习模式的系统设置和是否加载 ADF 文件有关。

下面的表格中,左侧两列表示是否开启学习模式和是否加载已有 ADF。这两列的状态将决定你是否能够保存 ADF。比如,如果你没有开启学习模式,你将无法保存 ADF。如果你开启了学习模式而且加载了 ADF,只有当你借助已加载 ADF 完成自定位后才能保存。

同样,如果你没有开启学习模式而且没有加载 ADF 文件,你将无法获取 TANGO_COORDINATE_FRAME_AREA_DESCRIPTION 参考帧对应的 pose 数据。如果你已经加载了 ADF,在借助已加载 ADF 完成自定义阶段后,你就可以获取 TANGO_COORDINATE_FRAME_AREA_DESCRIPTION 对应的 pose 数据了。

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值