检查区域是否已在加载的ADF中本地化

更新:

我找到了重新定位的行,但是设备没有本地化 。 加载ADF后,我总是得到状态码POSE_INITIALIZING 。 此外,Java Area_Description_Example中的重新本地化也不起作用。 谁有同样的问题? 唯一具有工作重新本地化的应用程序是“资源管理器”和“ADF检查器”,但我没有它的源代码。

这是我的第一个问题的解决方案,即加载ADF后检查重新定位的代码:

TangoPoseData lastFramePose = mTango.getPoseAtTime(mRgbTimestampGlThread, FRAME_PAIR); if (lastFramePose.statusCode == TangoPoseData.POSE_VALID) { // Device is re-located! // Update the camera pose from the renderer mRenderer.updateRenderCameraPose(lastFramePose); mCameraPoseTimestamp = lastFramePose.timestamp; } else { Log.w(TAG, "Can't get device pose at time: " + mRgbTimestampGlThread); } 

旧:

在我的应用程序中,用户可以决定是启动新会话还是加载先前记录的ADF(区域描述文件)。 我加载ADF(adfUUID)并将其添加到Tango类对象(mTango),如下所示:

 TangoConfig config = mTango.getConfig(TangoConfig.CONFIG_TYPE_CURRENT); config.putString(TangoConfig.KEY_STRING_AREADESCRIPTION, adfUUID); mTango.setRuntimeConfig(config); 

所以现在我的问题是, 如何检查区域是否已加载ADF 本地化 ? 我希望有一个坐标参考框架到加载的ADF的服务开始,而不是我的新会话。 这是我在connectTango()函数中的设置:

 TangoConfig config = mTango.getConfig(TangoConfig.CONFIG_TYPE_DEFAULT); config.putBoolean(TangoConfig.KEY_BOOLEAN_LOWLATENCYIMUINTEGRATION, true); config.putBoolean(TangoConfig.KEY_BOOLEAN_DEPTH, true); config.putBoolean(TangoConfig.KEY_BOOLEAN_LEARNINGMODE, true); config.putBoolean(TangoConfig.KEY_BOOLEAN_COLORCAMERA, true); mTango.connect(config); 

而我使用的fram对是:

 private static final TangoCoordinateFramePair FRAME_PAIR = new TangoCoordinateFramePair( TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION, TangoPoseData.COORDINATE_FRAME_DEVICE); 

“学习模式开启时加载ADF”和“关闭学习模式时加载ADF”均为“良好”。 目前他们正在使用不同的位置管道。 因此,第一个将比第二个更长时间本地化。 ADF Inspector用于加载ADF on with Learning off“Tango Explorer应重新本地化”加载ADF on on Learning on“

有关如何检查ADF本地化的问题,请参阅示例java代码:

  // Check for Device wrt ADF pose, Device wrt Start of Service pose, // Start of Service wrt ADF pose (This pose determines if the device // is relocalized or not). if (pose.baseFrame == TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION && pose.targetFrame == TangoPoseData .COORDINATE_FRAME_START_OF_SERVICE) { if (pose.statusCode == TangoPoseData.POSE_VALID) { mIsRelocalized = true; } else { mIsRelocalized = false; } 

关于第三个的数据:

 ArrayList framePairs = new ArrayList(); framePairs.add(new TangoCoordinateFramePair( TangoPoseData.COORDINATE_FRAME_START_OF_SERVICE, TangoPoseData.COORDINATE_FRAME_DEVICE)); framePairs.add(new TangoCoordinateFramePair( TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION, TangoPoseData.COORDINATE_FRAME_DEVICE)); framePairs.add(new TangoCoordinateFramePair( TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION, TangoPoseData.COORDINATE_FRAME_START_OF_SERVICE)); 

我在这里找到了一些关于同一主题的类似问题:

问题

问题

问题

问题

所以我认为答案如下:使用加载的ADF和学习模式重新定位工作,但需要相当长的时间(最多3-5分钟)。 四处走走,不要放弃。

使用加载的ADF重新定位并关闭学习模式