检查加载的 ADF 中的区域是否已定位
Check if area is localized in loaded ADF
更新:
我找到了重新本地化的行,但是设备 没有本地化 本身。我总是在加载 ADF 后返回状态代码 POSE_INITIALIZING。 Java Area_Description_Example 中的重新本地化也不起作用。有同样问题的人吗?
唯一可以重新本地化的应用程序是 "Explorer" 和 "ADF Inspector",但我没有它的源代码。
这是我第一个问题的解决方案,加载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 class 对象 (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);
而我使用的帧对是:
private static final TangoCoordinateFramePair FRAME_PAIR = new TangoCoordinateFramePair(
TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION,
TangoPoseData.COORDINATE_FRAME_DEVICE);
我在这里发现了一些关于同一主题的非常相似的问题:
3. question
所以我认为答案如下:
使用加载的 ADF 和 上的 学习模式重新定位可以工作,但需要相当长的时间(最多 3-5 分钟)。走一走,不要放弃。
使用已加载的 ADF 和 学习模式关闭 重新定位有效。
"Loaded ADF on with Learning mode on" 和 "Load ADF on with Learning mode off" 都很好。
目前他们正在使用不同的位置管道。
所以第一个比第二个需要更长的本地化时间。
ADF Inspector 用于在关闭学习的情况下加载 ADF”
Tango Explorer 应该重新本地化 "Load ADF on with 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<TangoCoordinateFramePair> framePairs = new ArrayList<TangoCoordinateFramePair>();
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 后返回状态代码 POSE_INITIALIZING。 Java Area_Description_Example 中的重新本地化也不起作用。有同样问题的人吗? 唯一可以重新本地化的应用程序是 "Explorer" 和 "ADF Inspector",但我没有它的源代码。
这是我第一个问题的解决方案,加载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 class 对象 (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);
而我使用的帧对是:
private static final TangoCoordinateFramePair FRAME_PAIR = new TangoCoordinateFramePair(
TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION,
TangoPoseData.COORDINATE_FRAME_DEVICE);
我在这里发现了一些关于同一主题的非常相似的问题:
3. question
所以我认为答案如下: 使用加载的 ADF 和 上的 学习模式重新定位可以工作,但需要相当长的时间(最多 3-5 分钟)。走一走,不要放弃。
使用已加载的 ADF 和 学习模式关闭 重新定位有效。
"Loaded ADF on with Learning mode on" 和 "Load ADF on with Learning mode off" 都很好。 目前他们正在使用不同的位置管道。 所以第一个比第二个需要更长的本地化时间。 ADF Inspector 用于在关闭学习的情况下加载 ADF” Tango Explorer 应该重新本地化 "Load ADF on with 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<TangoCoordinateFramePair> framePairs = new ArrayList<TangoCoordinateFramePair>();
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));