【问题标题】:Apple ARKit inaccurate on iPhone xApple ARKit 在 iPhone x 上不准确
【发布时间】:2018-01-23 21:44:22
【问题描述】:

我在 Stanley Black&Decker 工作,使用 ARKit 进行高精度测量。我一直在使用 iPhone7+ 和 iPad Pro 进行测试(从 7 月开始进行了广泛的测试),AR 和现实世界之间的准确性非常好(例如,在 40 英尺以上的几英寸内)。但是,在 iPhone X 上,精度会下降 - 超过 40 英尺或更多。事实上,iPhone X 似乎错误地将所有内容缩小了 3% 到 8%(例如 45' 真人秀节目为 42' 2" AR)。有其他人看到模型之间的差异吗?

更新:非常好。有(正如你提到的)几个抽象层。基础是视觉惯性里程计 - 它使用(随机)特征点“云”、陀螺仪、加速度计来建立世界原点。下一层是 hz 平面检测(平面锚点)。似乎每一帧(60fps)ARKit 都会根据 VIO 重新计算(重新估计)世界原点。这会引起背景抖动(通常为±1mm/轴)。如果特征点云变得太小,或者变化太快,世界原点检测变得难以估计,或者不确定,失去原点连续性。

但还有另一种情况,原点和平面锚点没有改变,但 POV 瞬间(在 16 毫秒内)跳跃了 0.5 到 2.5 米米。所以 ARKit 错误地认为 POV 已经移动了——也就是 iPhone 物理跳了。与 iPhone DID 移动但特征点云没有移动的电梯有点相反。

未知的是平面锚是否“反馈”到世界原点(或 POV)估计中。我不这么认为。如果一架或多架飞机在视野中(fustrum),那么不应该有滑点——但确实存在。所以看起来世界原点仅由 VIO 和特征点云确定,因此,平面锚点可以相对于原点移动,并且抖动,它们确实如此。

在最初的问题上,我并排使用 iPhone7 和 iPhoneX,两者都检测到相同的(单个)平面(在地板上)。但是当我从起点慢慢移动时,iPhone7 的位置(通过 scnHit 或 Pov)非常准确(4m 是 4m)。而 iPhoneX 似乎低估了这个位置(4m 显示为 3.5m)

【问题讨论】:

    标签: arkit iphone-x


    【解决方案1】:

    是的,模型在 ARKit 中移动更长的距离。

    ARKit 通过映射环境和在顶部放置虚拟坐标来工作。因此,当您首先启动 ARKit 应用程序时,它会搜索并为现实世界创建锚点,它可以在其中找到足够的特征点。当我们四处移动时,会为不同的现实世界对象或地点添加这些锚点。它会尝试将已找到的地点与创建的锚点相匹配,并相应地定位虚拟世界(3D 坐标)。

    如果没有找到足够的特征点,模型就会从它的位置偏移,因为它会混淆真实和虚拟定位。当在这种情况下添加锚点时,我们将为该锚点移动虚拟世界的原点。

    假设 AR 会话开始时原点位于桌子的一个角落,而您将模型放置在桌子的中心。现在,当您移动到表格的下一个末端并且模型移动到表格的边缘时,因为它没有找到足够的特征点。当模型处于边缘时,它突然发现了新的锚点。现在发生的是它有两个锚点用于桌子的两端。如果您将相机移动到桌子的第一端,它将与第一个锚点匹配,并且模型放置在桌子的中心。如果您将相机移动到下一个末端,它会与第二个锚点匹配并将模型移动到桌子的边缘。

    而且这个机会随着距离的增加而增加。

    【讨论】:

    • 您有什么建议可以克服这个问题吗?
    • 不行,我想我们只能等他们提出更好的算法或升级硬件。至少我不知道
    • 嗨,我正在制作房间测量应用程序。在测量像屏幕键盘这样的小物体时,视图中的映射物体几乎没有不规则形状。但是在测量房间时,映射的形状非常不规则。你能给我建议什么方法吗?