0

我在开发 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 社区。

4

1 回答 1

1

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

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

于 2016-10-27T13:59:34.950 回答