《p》本文原文作者为Matt Miesnieks,目前担任6D.
ai的CEO,Super Ventures合伙人, AR领域资深投资人。由亮风台(hiscene)编译。 《br》 在ARC
ore发布前不久,Matt Miesnieks曾发表过一篇ARKit、Vuforia、Tango和HoloLens的比较分析,并得出ARKit是更好的选择这一结论。然而,8月29日,Google发布了ARCore,正面对抗ARKit,对此,他作了进一步分析,下面就让我们看看,这件AR行业的大事,对于
开发者和消费者来说,意味着什么呢?《/p》《p》ARCore只是轻量级的Tango么? 《br》 一位开发者戏称:“我觉得ARCore
SDK,就像是他们随便地把Tango SDK改了个名字,注释掉深度相机那块代码,改了一种编译标志。”应该不止这些,但也不会太多,比如支持ARCore的新的Web浏览器对开发者来说很友好,但它们属于相互独立的核心SDK。《/p》《p》大概很多人都想知道为什么12个月之前,一切都已准备好的时候,Google没有发布Tango VIO(无需深度相机),但现在才发布出来。 《br》 不论如何,这是一个好消息,意味着ARCore是非常成熟的,而且经过了充分的软件测试(尽管苹果有Metaio和Flyby的收购基础,但ARCore还是比ARKit至少多两年的实践测试);另外,谷歌已经为Tango安排好了全面的功能蓝图,其中有不少无需依赖3D深度相机的功能,都在ARCore中找到了它们的位置。 《br》 如果在普通的
智能手机上添加深度相机,你就等同于拥有了Tango
手机。现在谷歌有一个更简单的路径,可以通过OEM旗舰机,推广SDK,ARCore就会随着手机而被推广开来。《/p》《p》关于标定 《br》 这就是有趣之所在了……Matt Miesnieks我之前有说过苹果ARKit能够如此稳定的三种标定方法: 《br》 相机的
光学几何校正(简单) 《br》 相机的光度标定(难) 《br》 IMU误差消除(非常难) 《br》 另外,
传感器的
时钟同步是更重要的。《/p》《p》标定不是非黑即白的问题,需要统计、并做更多的迭代以减少误差,才能让用例更加稳定。系统标定得越好,位置估计误差就会越不容易出现。 《br》 正如苹果的ARKit,谷歌也做了以下几件事: 《br》 首先,谷歌对所支持的设备选择十分谨慎。起初,只有Samsung S8和
Pixel。谷歌
工程师已经在这些平台进行过传感器标定的优化,以适配于DayDream的Inside-Out追踪(从三自由度向六自由度)。不久前,谷歌工程师在韩国对Samsung传感器进行标定和调谐,希望下一代手机可以支持Daydream。所以我们才有了标定好且符合时钟同步的相机与IMU的两款设备。《/p》《p》Google在今年早些时候的Google IO大会上宣布inside-out 6自由度跟踪支持Day 《br》 今年,Google为融合Tango和Daydream SDK做了大量工作,据说11月份这项工作就会结束,所以8月底,很多底层工作应该会完成,意味着Tango/ARCore VIO系统可以利用Daydream传感器融合的工作成果。 《br》 最后,标定的真正好处可以从系统表现看出来。ARKit和ARCore在用户发现误差之前,都可以追踪得非常好。在AR应用中,目前还是以内容直观可见的形式为主,不像室内导航那样,存在长时间长距离的端对端测试。所以,从AR应用角度来看,标定带来的差异几乎是无法被
检测的。但是开发者们正在扩大SDK应用的界限,谷歌预计会在工厂中做更紧密的标定,并上市一批新一代的设备。《/p》《p》Vibrator被用于在工厂中标定加速度计,AR软件堆栈更无须担心过多误差的问题了 《br》 最大的IMU OEM曾提到,为了节省成本,他们的
智能机IMU在工厂中只是在单一温度下进行标定。这意味着IMU
硬件在某一指定的温度下,误差被调节到最低。但当手机发热的时候,IMU就不会那样准确。虽然这是十分普遍的现象,但是对于VIO来说,一旦设备发热,标定结果不可信,
算法结果会产生漂移。当然,OEM也可以在客户要求下,在多种温度下标定传感器。 《br》 这一点,谷歌比不上苹果。虽然这只是一个很小的误差,但是意味着谷歌ARCore VIO代码会随着设备不同而发生变化。苹果的软硬件垂直集成帮助它更快地应对这类挑战,而
Android需要对整个生态系统进行过滤。 《br》 光照 《br》 ARCore和ARKit提供了场景中的光照实时估计,所以开发者们可以迅速调整模拟光照,以便适应真实世界。 《br》 ARKit和ARCore可以对场景光进行简单的估计,不管是真实世界环境光还是尖锐的聚光灯。ARKit为开发者提供了强度和色温选项,而ARCore提供了单像素强度值(Android Studio API)或shader(Unity API)。这两种方法在早期Demo中有相似的结果,而Google的Demo看起来更好一些,可能是因为开发者们对Tango用得更熟。 《br》 不过,谷歌在今年的Google I/O大会中已经表示,对虚拟阴影在真实世界光照下调整的功能即将和开发者们见面。这是一个很大的进步,会让AR更加真实。 《br》 建图 《br》 Mapping,即SLAM中的‘M’,也叫建图,是ARCore相对于ARKit的显著优势领域之一。 《br》 它意味着可以将3D真实世界的环境
信息存在内存中,供追踪器(VIO系统中的重要部分)进行设备的定位。设备就可以知道自己在环境中所处的位置。为了帮助大家理解,举个例子,蒙着眼睛把你放到一个陌生城市的市
中心,只给你一张地图,你可以通过地图了解到自己的位置。 《br》 最简单形式的SLAM建图是一些离散的3D点云数据,它们代表了光学特征点的位置(例如桌角)。在这些数据中还隐藏着一些元数据,通过特征点在多帧中相同位置出现的次数,表明点的可信度(例如走来走去的狗,可信度就很低,因为每张图拍到的结果都不同)。一些图包括了“关键帧”,也就是每隔几秒存储的
视频或照片的单帧,可以帮助追踪器更好地将真实世界与图进行匹配。另外,一些图使用密集点云,更可信但是需要
GPU和更多内存。ARCore和ARKit都使用了离散点云图(可能没有关键帧)。《/p》《p》离散点云图就像右上图所示。左上图显示了点云和真实世界是如何匹配的(颜色代表点的可信度)。左下图是原始图像,右下图是强度图,可以被用到多种SLAM系统中(但并没有用到ARKit或ARCore中)。 《br》 那么这是如何工作的呢?当您加载ARCore/ARKit App时,跟踪器会检测之前是否有加载好的图,如果没有就会通过立体计算,自定义一个新的地图,也就是说我们拥有了相机视角下的一个小范围3D图。当你开始四处运动,相机捕捉到新的一幅图,并加载到3D图中,让它变得更大。ARKit在建图的时候使用了“sliding window”,也就是说它只会在图中保存最近的时间和距离数据,旧的数据会被自动忽视,而ARCore会管理更大的地图,也就是说系统会更加稳定。 《br》 所以使用ARCore,即使跟丢了也会恢复得很好。 《br》 ARCore相对于ARKit的独有之处 《br》 谁都未能想到,ARCore在ARKit发布后,拥有如此迅速的反应时间。相对于ARKit来说,ARCore其实有不少优势: 《br》 1.功能方面:有一些ARKit并未提到的功能优势 《br》 2.开发者经验:ARCore在Tango和Daydream上积累几年丰富的开发者经验,相对于ARKit仅仅几个月来说,是更加成熟的。 《br》 3.OEM:有足够的OEM
厂商提供强大的支持 《br》 4.宣传:一段比较走心的宣传短片 《br》 ARCore的开发者们真的可以行动起来了么? 《br》 如果你喜欢Android,你有一个Samsung S8或Pixel,那么别犹豫,直接去开发吧。如果你喜欢
iPhone,也不要担心是否需要换成ARCore。ARKit / ARCore SDK目前还是1.0版,功能还非常基础(VIO,平面检测,基础照明),将在未来几年内获得更多的功能(3D场景理解,遮挡,多人联网,内容持久性等)。对开发商和消费者来说,这将是一个不断的学习曲线。所以现在只需要坚持向着自己认为对的路子走就好。 《br》 ARCore与ARKit究竟谁更好? 《br》 作为技术解决方案,它们的能力非常接近。ARKit在集成和跟踪方面具有一定的技术优势; ARCore在建图和重定位方面具有一些优势。可是这两个优点大多是专业的
计算机视觉工程师才能看到的。 《br》 苹果有一个清晰的市场宣传优势,拥有庞大的设备基础,可以立即升级到包含ARKit的
最新iOS系统。苹果的用户一般更愿意花钱,所以从中期来看,AR Apps应该可以在ARKit上更好地获利。 Android的优势在于规模化,但Android生态系统需要至少12个月才能将所有的部分整合在一起,并在大多数新设备中获得硬件支持的ARCore。 《br》 ARCore在管理Tango R&D的架构上有很好的优势,其中大部分已经进行了用户/市场测试。现在基础已经比较到位,期待系统在未来12-24个月内快速发展,将变得更有趣。 《br》 ARKit或ARCore?主要还是看开发者的个人偏好和目标。这两个系统都有自己的优点和缺点,但重要的是两者都能够为消费者提供足够的消费体验,开发者请脑洞大开,尽情享受这个过程吧! 《br》 ARCore开发传送门:《a href=“https://develope
rs.google.com/ar/”》https://developers.google.com/ar/《/a》 《br》 ARKit开发传送门:《a href=“https://developer.apple.com/arkit/”》https://developer.apple.com/arkit/《/a》《/p》