无法在不同的Tango会话中重用TangoPointCloudData

时间:2016-10-18 17:19:36

标签: android google-project-tango tango

我在开发Tango时面临以下问题而不确定 我是否正在寻找合适的解决方案。

我正在尝试做的事情(简而言之):将点云(TangoPointCloudData对象)和姿势(TangoPoseData对象)序列化到文件中供以后使用。在场景后面做一些神奇的处理以计算一些对象的坐标(x和y),然后 - 重新连接探戈并在x,y处显示一个3d对象。

我正在通过帧对SOS和FD(帧设备)初始化Tango对象。

当我在新的Tango会话中使用最新的TangoPointCloudData + TangoPoseData调用此行时,会发生异常:

TangoSupport.calculateRelativePose(
                0.0,
                TangoPoseData.COORDINATE_FRAME_CAMERA_COLOR, pointCloud.timestamp,
                TangoPoseData.COORDINATE_FRAME_CAMERA_DEPTH);

我得到的非信息性日志是:

com.google.atap.tangoservice.TangoErrorExceptioncom.google.atap.tangoservice.Tago.throwTangoExceptionIfNeeded(Tango.java:958)
com.projecttango.tangosupport.TangoSupport.calculateRelativePose(TangoSupport.java:231)

多数人。

我正在开发的Tango核心版本是1.44.2016.09.19-wasat-release。

我的直觉是问题可能会发生,因为我没有正确保存数据或者它在代码中的某处被破坏,没有正确地初始化Tango或尝试在新的Tango会话中使用旧的xyzIj对象。我重新检查了所有的东西(除了可能是问题的最后一个(?))并且找不到错误所以试图将我的线程发送到伟大的StackOverflow社区。

1 个答案:

答案 0 :(得分:1)

传递给方法TangoSupport.calculateRelativePose的第二个时间戳(targetTimestamp)需要是当前Tango会话中的有效时间戳。如果我理解正确,时间戳xyzIj.timestamp来自之前的Tango会话(?)。

更一般地说,Tango设备默认不存储以前会话中获得的任何区域知识。要将先前Tango会话的结果插入当前会话,设备需要通过加载学习区域(区域学习)自动重定位,或者用户需要手动将结果与新Tango参考帧对齐。