[转] https://www.leiphone.com/news/201709/hioiZlgdXIj9fFex.html

雷锋网按:本文作者为 Matt Miesnieks,目前担任 6D.ai 的 CEO,Super Ventures 合伙人。此前,他发布过多篇文章探讨了 ARKit 的相关问题。谷歌推出 ARCore 后,引起业界热议,Matt 的最新博文中对 ARCore 做了详细的分析。本文转自亮风台,雷锋网(公众号:雷锋网)对文章进行了校对和补充。

ARCore 只是低配版的 Tango 么?

一位开发者戏称:“我觉得 ARCore SDK,就像是他们随便地把 Tango SDK 改了个名字,注释掉深度相机那块代码,改了一种编译标志。”应该不止这些,但也不会太多,比如支持 ARCore 的新的 Web 浏览器对开发者来说很友好,但它们属于相互独立的核心 SDK。

大概很多人都想知道为什么12个月之前,一切都已准备好的时候,Google 没有发布 Tango VIO (无需深度相机),但现在才发布出来。

不论如何,这是一个好消息,意味着 ARCore 是非常成熟的,而且经过了充分的软件测试(尽管苹果收购了 Metaio 和 Flyby 两家公司有技术储备,但 ARCore 还是比 ARKit 至少多两年的实践测试);另外,谷歌已经为 Tango 安排好了全面的功能蓝图,其中不是所有的功能都要依赖 3D 深度相机,现在 ARCore 让这些功能可以全面发挥出来了。

抛开名字不谈,如果在能运行 ARCore 的普通智能手机上添加深度相机,你就等同于拥有了 Tango 手机。现在谷歌有一个更简单的路径,可以通过 OEM 旗舰机,推广 SDK,ARCore 就会随着手机而被推广开来。

没人会因为一款手机带有 AR 功能而放弃使用优质的安卓手机,就像是没人会因为 Windows 系统手机带有 AR 功能,而放弃使用任何安卓手机。所以,微软直接进军头戴设备。现在人们一定会买手机,而 ARCore 也终于实现了免费。

一开始,Tango 聚焦于对 3D 空间手机移动的追踪。最开始 Tango 的应用也多在于室内映射。后来,VR/AR 才变成了最受欢迎的使用场景。

说到命名,这很有趣。Tango 总是被描述为“一款知道自己定位的手机”。而人们从不会被这样的描述对 Tango 留下深刻印象。对我而言,当某系东西与 Google 地图密切联系时,手机才会有定位(但不知道 Google 是否这样看)。有了新名字 ARCore,一切便与 AR 有关。

你所讨论的标定又如何呢?

这就是有趣之所在了……我之前有说过苹果 ARKit 能够如此稳定的三种标定方法:

  • 相机的光学几何校正(简单)

  • 相机的光度标定(难)

  • IMU误差消除(非常难)

另外,传感器的时钟同步是更重要的。

标定不是非黑即白的问题,需要统计、并做更多的迭代以减少误差,才能让用例更加稳定。系统标定得越好,位置估计误差就会越不容易出现。

正如苹果的 ARKit,Google 也做了以下几件事:

  • 首先,Google 对所支持的设备选择十分谨慎。起初,只有Samsung S8和 Pixel。谷歌工程师已经在这些平台进行过传感器标定的优化,以适配于 DayDream 的 Inside-Out 追踪(从三自由度向六自由度)。

不久前,谷歌工程师在韩国对 Samsung 传感器进行标定和调谐,希望下一代手机可以支持 Daydream。所以我们才有了标定好且符合时钟同步的相机与 IMU 的两款设备。

Google 在今年早些时候的 I/O 大会上宣布 Inside-Out 6自由度跟踪支持 Daydream

  • 今年,Google为融合 Tango 和 Daydream SDK 做了大量工作,据说11 月份这项工作就会结束,所以 8 月底,很多底层工作应该会完成,意味着 Tango/ARCore VIO 系统可以利用 Daydream 传感器融合的工作成果。

  • 最后,标定的真正好处可以从系统表现看出来。ARKit 和 ARCore 在用户发现误差之前,都可以追踪得非常好。在 AR 应用中,目前还是以内容直观可见的形式为主,不像室内导航那样,存在长时间长距离的端对端测试。

所以,从 AR 应用角度来看,标定带来的差异几乎是无法被检测的。但是开发者们正在扩大 SDK 应用的界限,谷歌预计会在工厂中做更紧密的标定,并上市一批新一代的设备。

震动器被用于在工厂中标定加速度计,AR 软件堆栈更无须担心过多误差的问题了。

我曾与一家最大的 IMU OEM 交谈过,为了节省成本,他们的智能机IMU 在工厂中只是在单一温度下进行标定。这意味着 IMU 硬件在某一指定的温度下,误差被调节到最低。但当手机发热的时候,IMU 就不会那样准确。虽然这是十分普遍的现象,但是对于 VIO 来说,一旦设备发热,标定结果不可信,算法结果会产生漂移。当然,OEM 也可以在客户要求下,在多种温度下标定传感器。

这一点,谷歌比不上苹果。虽然这只是一个很小的误差,但是意味着谷歌 ARCore VIO 代码会随着设备不同而发生变化。苹果的软硬件垂直集成帮助它更快地应对这类挑战,而 Android 需要对整个生态系统进行过滤。

光照问题

ARCore 和 ARKit 提供了场景中的光照实时估计,所以开发者们可以迅速调整模拟光照,以便匹配真实世界(还可能同时触发动画人物)。

ARKit 和 ARCore 可以对场景光进行简单的估计,不管是真实世界环境光还是尖锐的聚光灯。ARKit 为开发者提供了强度和色温选项,而ARCore 提供了单像素强度值(Android Studio API)或 shader(Unity API)。这两种方法在早期 Demo 中有相似的结果,而 Google 的 Demo看起来更好一些,可能是因为开发者们对 Tango 用得更熟。

不过,Google 在今年的 I/O 大会中已经表示,对虚拟阴影在真实世界光照下调整的功能即将和开发者们见面。这是一个很大的进步,会让 AR 更加真实。

构建地图

Mapping,即 SLAM 中的‘M’,也叫构建地图,是 ARCore 相对于 ARKit 的显著优势领域之一。

它意味着可以将 3D 真实世界的环境信息存在内存中,供追踪器(VIO系统中的重要部分)进行设备的定位。设备就可以知道自己在环境中所处的位置。为了帮助大家理解,举个例子,蒙着眼睛把你放到一个陌生城市的市中心,只给你一张地图,你可以通过地图了解到自己的位置。

最简单形式的 SLAM 建图是一些离散的 3D 点云数据,它们代表了光学特征点的位置(例如桌角)。在这些数据中还隐藏着一些元数据,通过特征点在多帧中相同位置出现的次数,表明点的可信度(例如走来走去的狗,可信度就很低,因为每张图拍到的结果都不同)。

一些图包括了“关键帧”,也就是每隔几秒存储的视频或照片的单帧,可以帮助追踪器更好地将真实世界与图进行匹配。另外,一些图使用密集点云,更可信但是需要 GPU 和更多内存。ARCore 和 ARKit 都使用了离散点云图(可能没有关键帧)。

离散点云图就像右上图所示。左上图显示了点云和真实世界是如何匹配的(颜色代表点的可信度)。左下图是原始图像,右下图是强度图,可以被用到多种 SLAM 系统中(但并没有用到 ARKit 或 ARCore 中)。

那么这是如何工作的呢?当你加载 ARCore/ARKit App 时,跟踪器会检测之前是否有加载好的图,如果没有就会通过立体计算,自定义一个新的地图,也就是说我们拥有了相机视角下的一个小范围3D图。当你开始四处运动,相机捕捉到新的一幅图,更多的 3D 点云加入到地图中,地图越变越大。

如果地图变得太大而无法控制,追踪则会变得糟糕,以至于追踪出现漂移。不过,这也不再是个大问题,控制地图是 SLAM 研究正在做的一部分(还有深度学习和 CNN AI)。

ARKit 在建图的时候使用了“sliding window”,也就是说它只会在图中保存最近的时间和距离数据,旧的数据会被自动忽视,而 ARCore 会管理更大的地图,也就是说系统会更加稳定。

所以使用ARCore,即使追踪跟丢了也会恢复得很好。

ARCore 和 ARKit 都采用了一种被称为“锚点”(Anchors)的概念,让我们感觉地图似乎覆盖了更大的物理面积。我第一次看到这个概念是在 HoloLens 上。正常情况下,系统会完全控制地图,而用户或应用开发者并不知道这点。锚点使开发者告诉系统“记住周围的地图,不要将其丢弃”。

我觉得锚点的物理范围大概有 1 平方米,这其中有我自己猜测的部分,也有可能会根据系统看到的光学特征发生多种变化。但当用户重新范围物理位置时,该范围足以让系统重新实现定位。

不管何时,内容被放置在一个物理位置时,开发者通常会丢下一个锚点。如果没有锚点,用户来回走动时,物理位置周围构建的地图(内容所呈现的地方)将会丢失,内容也将丢失。而加上锚点后,内容将永远固定在那里,也不排除因为积累的漂移,系统需要矫正重新定位时,糟糕的 UX (用户体验)会对内容产生影响。

构建地图的目的是以两种方式来帮助追踪:

  • 第一,当我前后移动手机,地图从一开始移动便建立,手机往回移动时,新的特征点可被实时检测。

在位置计算中,通过对当前和先前场景的特征点收集,这使追踪也更加稳定。

  • 第二,构建地图可帮助定位追踪或是恢复追踪。有时你会遮挡摄像头,手机掉落,或是移动的太快,或是不稳定因素发生,这时摄像头看到的场景与最新更新的地图无法匹配。

这就是我们所说的“追踪丢失”,过去几年,那些率先尝试的开发者们每天都要吐槽 1000 次这个问题。这种情况下,系统可以做两件事:

重置所有的标定系统,然后重启!这纯粹由测距系统完成(没有地图)。你会看到所有的内容“跳到”新的位置,然后固定在那里。用户体验并不好。

还有一件事是,系统可以使用它检测到的 3D 特征,然后搜索整个地图,尝试匹配,随着正确的虚拟位置进行更新。如果你当什么都没发生,一直使用应用,你会发现虚拟内容展示时,追踪不停丢失,但恢复后,追踪又正常。

这里又有两个问题。

首先,随着地图构建的越大,搜索过程会更耗时,过程也会更 密集,也就是说要一遍又一遍地开启搜索;

其次,手机当前的位置永远不会精准地与手机过去那一时刻的位置相匹配,所以这也加大了地图搜索的难度,并且还要花费时间和计算去重新定位。基本上,即便有了构建地图,如果你移动的离地图太远,应用就没法定位了,系统需要重置、重启。

图片上的每条线是 SLAM 地图中的街道。在世界上任何地方,使用移动设备实现 AR 功能,都会遇到 SLAM 地图构建问题。记住,现在尽管有机器可读的地图和数据结构,但它们不是那种人们可使用的 3D 街景地图(这也是必须的)。

注意,对移动 AR 来说,我提到的“大”地图大致意思为,可以覆盖较大房间,或小型公寓物理面积的地图。

同时,也意味着,对于室外 AR,我们不得不思考全新构建地图的方式。

针对地图强大的重新定位是非常非常难的问题,而且在消费者体验层面还未解决。如果任何人宣称他们能提供多人 AR 玩法,或是固定性强的 AR 内容,那么不管是由一号玩家创建的地图,还是云端下载的地图,他们的 UX 会受到其他手机(如二号玩家手机)重新定位性能的限制。

你会发现,二号玩家不得不站在距离二号玩家很近的地方,双方几乎以同样的姿势举着手机。但是,二号玩家,或其他玩家只想坐在与你相反方向的沙发上,打开手机,立马看到你眼前看到的事物。或是说,站在距离几米的空间内,看到 AR 内容“固定”在那里。

(这里有一段 Tango实验的视频效果:https://www.youtube.com/watch?v=YulYq5P3heo)

现在已经有应用可以变通地实现多人游戏,如使用标记点,或为二号玩家编写距离应用开始位置的代码。技术上看,这些是可以运行的,但是你要一直为用户解释如何操作,用户体验可能一团糟。所以,并没有什么“简单运行”的魔法。

当然,如果任何人有不同的解决方案,我很想请教一下。不过,就我所知,多玩家实现稳定性极强的重新定位现在还无法实现,也没有发现公布的研究成果。这就像 VIO 的问题一样,只有少部分人可能会解决。我只知道一个还未公布的系统能够支持,2018 年初才会推出。

ARCore 的优势

谁都未能想到,ARCore在ARKit发布后,拥有如此迅速的反应时间。相对于ARKit来说,ARCore其实有不少优势:

  • 功能方面:有一些 ARKit 并未提到的功能优势

  • 开发者经验:ARCore 在 Tango 和 Daydream 上积累几年丰富的开发者经验,相对于 ARKit 仅仅几个月来说,是更加成熟的。

  • OEM:有足够的 OEM 厂商提供强大的支持

  • 宣传:一段比较走心的宣传短片

OEM 厂商依旧谨慎

我感觉  ARCore 的推出相当匆忙,例如没有 ARCore 的 Logo。我在之前的文章中谈过 OEM 厂商对于 Tango 手机的谨慎。ARCore 消除了摄像头堆栈硬件商品化,以及 Tango 面临的材料成本的问题。看起来,Google 已经考虑到一些战略控制,但是讲真,我感觉一切太快了,这些事情还没真正地实施。

Google 坚持 ARCore 是谷歌移动服务(GMS)的一部分,如果 AR 真的成为“下一个平台”,这是重新划分生态系统势力的一个机会。ARCore 不只是像 GUI 那种功能。所有的初创公司都要考虑 SLAM 的问题。而 AR 是否会脱离 GMS,这可不好说。

OEM 厂商寻找 ARCore 替代品的最大原因可能是,他们巨大的市场(如中国)不欢迎 GMS。

GMS 最大的阻力在于:无法进入中国市场,那里却是 OEM 厂商们最大的市场。厂商们更喜欢一个可以在全球运行的 AR 软件解决方案。

开发者现在可以用 ARCore 开发了吗?

如果你喜欢Android,你有一个 Samsung S8 或 Pixel,那么别犹豫,直接去开发吧。如果你喜欢 iPhone,也不要担心是否需要换成 ARCore。

开发者应当关注的是,打造一个人们关心的 AR 应用要面临巨大的挑战。与学习如何在 ARKit 或 ARCore 上创建内容相比,创建什么样的内容要花费更大的努力。

ARKit / ARCore SDK目前还是1.0版,功能还非常基础(VIO、平面检测、基础照明),将在未来几年内获得更多的功能(3D场景理解、遮挡、多人联网,内容固定性等)。对开发商和消费者来说,这将是一个不断的学习过程。所以现在只需要坚持向着自己认为对的路子走就好。

不要对使用哪个平台想太多,多想想能创建什么样的 AR 内容

ARCore 比 ARKit 更好吗?

作为技术解决方案,它们的能力非常接近。ARKit 在集成和跟踪方面具有一定的技术优势; ARCore 在建图和重定位方面具有一些优势。可是这两个优点大多是专业的计算机视觉工程师才能看到的。

想用这张图解释一个设计师的价值

苹果有一个清晰的市场宣传优势,拥有庞大的设备基础,可以立即升级到包含 ARKit 的最新 iOS 系统。苹果的用户一般更愿意花钱,所以从中期来看,AR 应用应该可以在 ARKit 上更好地获利。

Android 的优势在于规模化,但 Android 生态系统需要至少 12 个月才能将所有的部分整合在一起,并在大多数新设备中获得硬件支持的 ARCore。(时间可能会更长,通常 OEM 厂商会在 10 月份决定 2018 年的产品。)

ARCore 由此前 Tango 研发的基础,其中大部分已经进行了用户/市场测试。现在基础已经比较到位,看看这些系统在未来12-24个月内如何快速发展,这会很有趣。

我认为,制约 AR 应用市场普及速度的将会是开发者打造的内容。技术已经足够去创建消费者产品了。

ARKit 和 ARCore 哪个更好?主要还是看开发者的个人偏好和目标。这两个系统都有自己的优点和缺点,但重要的是两者都能够为消费者提供足够的消费体验,开发者请脑洞大开,尽情享受这个过程吧!

Via medium

谷歌 ARCore 就是低配版 Tango,它比苹果 ARKit 好在哪?相关推荐

  1. 大神解读:谷歌 ARCore 就是低配版 Tango,它比苹果 ARKit 好在哪?

    转自雷锋网:点击打开链接 原标题:大神解读:谷歌 ARCore 就是低配版 Tango,它比苹果 ARKit 好在哪? 雷锋网按:本文作者为 Matt Miesnieks,目前担任 6D.ai 的 C ...

  2. 实现一个基于 IConfiguration 的低配版 FeatureFlag

    实现一个基于 IConfiguration 的低配版 FeatureFlag Intro 在我们的应用中,可能有一些配置开关的需求,某些功能是否启用使用一个配置开关,用的时候就打开,不用的时候就关掉, ...

  3. 【Node.js】论一个低配版Web实时通信库是如何实现的1( WebSocket篇)

    引论 simple-socket是我写的一个"低配版"的Web实时通信工具(相对于Socket.io),在参考了相关源码和资料的基础上,实现了前后端实时互通的基本功能 选用了Web ...

  4. lga2066服务器准系统,LGA2066低配版Corei7-7740K再曝光:21WTDP换来100MHz频率

    Intel的HEDT高端处理器平台的发布时间从之前的8月份提前到了5月底,台北电脑展上就会正式公布,新一代平台插槽从目前的LGA2011升级到LGA2066,而且会有两个版本--Skylake-X架构 ...

  5. miix4linux双系统,情理之中,意料之外:Lenovo 联想 MIIX4 平板电脑 低配版

    情理之中,意料之外:Lenovo 联想 MIIX4 平板电脑 低配版 2016-01-27 09:20:17 35点赞 36收藏 53评论 自从我的神舟精盾服役4年之后,终于进入半退役,我一直在等su ...

  6. PS快捷键大法,初级低配版

    在PS中,对于初学者,我个人认为其实不用快捷键更能深刻的理解各个工具.操作之间联系和原理,但对于以后的作图修图来说,快捷键实在是装逼利器,并且确实方便快捷,能给我们的工作带来很多便捷.百度上的PS快捷 ...

  7. 项目:低配版Everything

    一.项目背景     在任何操作系统中,搜索工具都是必不可少的,不管我们多么认真的对文件进行整理,当文件数量非常多时,都可能需要我们花很长时间来找某个文件.搜索工具可以让我们从大量文件中快速找到我们所 ...

  8. java muki_基于canvas和web audio实现低配版MikuTap

    导言 最近发掘了一个特别happy的网页小游戏--MikuTap.打开之后沉迷了一下午,导致开发工作没做完差点就要删库跑路了,还好boss瞥了我一眼就没下文了.于是第二天我就继续沉迷,随着一阵抽搐,这 ...

  9. 绝地求生低配版显示当前服务器,绝地求生低配版介绍 绝地求生低配版怎么样...

    绝地求生低配版介绍 绝地求生低配版怎么样 2018-10-04 16:23:13来源:游戏下载编辑:野狐禅评论(0) <绝地求生>官方公布消息要发布针对东南亚地区的低配版本,这个版本怎么样 ...

最新文章

  1. ios 状态栏 覆盖自定义View
  2. redhat配置dns服务器bind
  3. python处理文本格式_python linecache 处理固定格式文本数据的方法
  4. IT容灾系统周期管理图
  5. mongo的php查询,如何在php中查询mongo?
  6. CTF中智能合约部署交互基础
  7. ExtJs 4.x Ajax简单封装
  8. 进阶篇:6)样机制作与验证
  9. JavaScript函数作用域
  10. Postgresql----libpq
  11. java 设置session超时_Java设置session超时(失效)的时间
  12. Unity3D 制作绿草地,草坪,模型表面生成草地,草地效果Shader实现 草着色器 Brute Force - Grass Shader
  13. 51单片机秒表设计c语言版,51单片机秒表系统的设计
  14. 计算机软考网络工程师英语,计算机软考网络工程师必备英语词汇全集
  15. Web应用程序的开发方法
  16. 用东野圭吾的方式说爱你
  17. java简述什么是事务_java什么是事务意思概念
  18. laravel5.6 使用mail发送附件邮件
  19. sql查询结果加一行合计
  20. 【汇正财经】红筹股和H股有什么区别?

热门文章

  1. layui弄一个好看的数据表格样式
  2. 学渣的刷题之旅 leetcode刷题 83.删除排序链表中的重复元素
  3. 区域和检索 - 数组不可变(前缀和)
  4. 不愧是阿里P8!后端程序员必备的Linux基础知识+常见命令
  5. Matlab学习手记——非线性方程组求解:牛顿下山法
  6. Font and PDF
  7. Adobe软件老是出现要求输入密码的弹窗怎么解决?
  8. 音频服务器未能正常启动,Windows10系统音频服务未启动问题彻底解决方法
  9. 如何在分割视频的基础上,分离视频中的音频
  10. 阿里云 ECS 服务器上如何搭建 Hadoop 集群详细步骤图解