(实验)漂移校正工作了吗?

时间:2016-12-12 15:38:29

标签: google-project-tango

我正在寻找有关如何正确使用漂移校正的更多信息(使用Unity SDK)。

在Tango网站上,它说"漂移校正帧来自区域描述参考帧",帧对开始服务 - >设备"不包括漂移校正"和区域描述 - >只有当本地化事件或漂移校正发生时,它才会提供更新服务"。

我希望使用漂移校正姿势的方式类似于TangoPointCloud预制件,其中深度点乘以矩阵startServiceTDevice,其由帧对SoS - >得到。设备。假设漂移校正帧在AD帧中,我需要SoS - >广告。由于只有AD - > SoS是可用的,我尝试了这个和它的逆。由此产生的姿势太小,但没有任何意义(即使使用错误的方向,如果我一直走动,翻译也不应该接近于零)。然后我认为AD帧实际上可能类似于漂移校正的服务开始,但是我再也找不到AD之间的任何显着/可见的差异 - >设备和SoS - >设备,绝对没有循环闭包。我在完成扫描后请求和应用姿势,所以当时应该检测到漂移。

在Tango网站上,它进一步表示"在启动之后会有一段时间,在此期间无法获得经过漂移校正的帧。"然而AD - > SoS姿势从一开始就是可用的(并且有效),而我还不能产生一种不是(例如没有运动,快速运动......)的情况。

漂移校正是否正常工作?或者我使用它都错了?

PS:在latest stackoverflow post上听起来好像只有跟踪损失后漂移校正才会重新定位。然而,我发现这很难相信,因为Tango网站将漂移校正描述为"当设备看到它知道它在您的会话中早先看到的地方时,它意识到它已经在一个循环中行进并调整其路径为与之前的观察更加一致。"。

1 个答案:

答案 0 :(得分:1)

此时漂移校正正在作为实验性功能发挥作用,有一些极端情况会破裂。我稍后会详细介绍。

为了使用漂移校正姿势,您需要使用ADF_T_Device帧对(ADF是基础帧,设备是目标帧)。在使用漂移校正姿势将点投影到世界空间的示例中,您不需要进行Adf_T_ss * ss_T_device变换,而是只需要直接使用ADF_T_device帧。如果是在Unity中,您只需检查use area description pose预制件上的PointCloud

破坏漂移校正的角落案例:

  1. 用户在开始体验后立即摇动设备。
  2. 在引擎盖下,漂移校正正在构建更密集但更准确的ADF版本。如果用户最初覆盖相机或摇动设备,则会导致缓冲区中没有保存ADF(或功能)。因此,API可能会进入一种永远不会从ADF_T_Device帧对中提供任何有效姿势的状态。

    1. 设备丢失跟踪,用户无需重新定位即移至新空间。
    2. 这与第一种情况类似。如果用户在丢失跟踪后移动到新空间而没有重新定位,则设备将永远不会重新定位,因此ADF_T_device帧不会提供有效姿势。

      漂移校正API仍处于试验阶段,我们也试图从API级别解决上述问题。