gpt4 book ai didi

google-project-tango - 项目探戈姿势数据在静止和运动时产生漂移

转载 作者:行者123 更新时间:2023-12-05 01:29:42 29 4
gpt4 key购买 nike

我正在使用 Project Tango 创建增强现实应用程序。其中一个重要部分是准确的位置跟踪。当然,我知道没有任何惯性跟踪系统是完美的,但到目前为止,Tango 似乎工作得很好。

然而,在过去的几天里,来自 Tango 的平移数据 (x, y, z) 似乎出现了轻微的漂移,即使在设备保持静止时也是如此。我让设备将 X、Y 和 Z 坐标写入屏幕,当设备静止不动时,视野内没有任何变化,X 值缓慢上升,Y 值和 Z 值缓慢下降。旋转值保持稳定且始终准确。漂移偶尔会改变方向,也能获得速度,有时以每秒 0.1 个单位的速度增加。

旋转设备也会产生奇怪的平移行为,在围绕三个轴中的任何一个旋转时都会发生大的漂移。可以预见,移动设备会导致更大的漂移,并且似乎会增加事件的“速度”。

通常我会将其归咎于设备的不准确,但自从我两周前开始使用它以来,它的性能似乎受到了影响。这些值过去要稳定得多。有什么我可以做的事情来“重置”它以前的样子,或者我做了什么可能导致这种情况?

下面附上姿势数据的回调函数:

        @Override
public void onPoseAvailable(final TangoPoseData tangoPoseData) {
if (tangoPoseData.baseFrame == TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION
&& tangoPoseData.targetFrame == TangoPoseData.COORDINATE_FRAME_DEVICE) {
rotationQuat = new vec4((float) tangoPoseData.rotation[TangoPoseData.INDEX_ROTATION_X],
(float) tangoPoseData.rotation[TangoPoseData.INDEX_ROTATION_Y],
(float) tangoPoseData.rotation[TangoPoseData.INDEX_ROTATION_Z],
(float) tangoPoseData.rotation[TangoPoseData.INDEX_ROTATION_W]);

rotationMat = rotationQuat.toMatrix();
Matrix.rotateM(rotationMat, 0, 90, 1.f, 0.f, 0.f);


position = new vec3(SCALE_FACTOR * (float) tangoPoseData.translation[TangoPoseData.INDEX_TRANSLATION_X],
SCALE_FACTOR * (float) (tangoPoseData.translation[TangoPoseData.INDEX_TRANSLATION_Z]),
SCALE_FACTOR * (float) (-1 * tangoPoseData.translation[TangoPoseData.INDEX_TRANSLATION_Y]));

float[] translationMatrix = new float[16];

Matrix.setIdentityM(translationMatrix, 0);
Matrix.translateM(translationMatrix, 0, -1.0f * position.x, -1.0f * position.y, -1.0f * position.z);

SceneCamera.Instance().setEye(position);
SceneCamera.Instance().setCameraOrientation(rotationMat);
SceneCamera.Instance().setCameraTranslation(translationMatrix);

main.displayVals(position, rotationQuat);
}
}

SceneCamera 是一个用于在空间中移动“相机”的类。

SCALE_FACTOR = 1.0

在平移中切换的 Y 轴和 Z 轴是转换为 OpenGL 坐标所必需的。

任何有关此问题的指导将不胜感激。

编辑:漂移似乎也存在于 Project Tango Explorer 应用程序中。使用该应用程序的区域学习功能时,设备的位置在保持静止时会抖动和漂移,并且当围绕 Z 轴(穿过屏幕的轴)旋转时,会发生明显的平移漂移,而此时它应该保持原位。这让我相信这是 Tango 校准的问题,而不是我的代码。

最佳答案

我已经尝试了 java 和 c point-cloud-example with Ramanujan Version 1.17

depth test显示任意方向的漂移。我在测试时打印了平移和旋转值。尽管事实上探戈是静止的而不是移动的。探戈资源管理器应用程序也有类似的行为。

发送 |泰 |兹 |接收|瑞| rz |权重

平均| -0,0005 | -0,0027 | 0,0134 | 0,6890 | 0,0518 | -0,0060 | 0,7228

最大 | 0,0206 | 0,0092 | 0,0281 | 0,6901 | 0,0546 | -0,0023 | 0,7238

最小 | -0,0159 | -0,0244 | 0,0022 | 0,6880 | 0,0495 | -0,0080 | 0,7217

差异(最大;最小)| 0,0366 | 0,0336 | 0,0258 | 0,0021 | 0,0051 | 0,0057 | 0,0021

上面的值显示出很小的差异,在合并点云后并不那么显着。

但问题是它在移动时会漂移。并且上面的错误累积。

  • 这些值“正常”吗?而我必须处理它?
  • 或者这是一个探戈问题?

  • 还有其他相关主题:
  • Transforming and registering point clouds
  • Project Tango: Converting between coordinate systems and merging point clouds
  • Future prospects for improvement of depth data on Project Tango tablet

  • google plus上有讨论. ADF 可以提供帮助,我会尝试一下!

    关于google-project-tango - 项目探戈姿势数据在静止和运动时产生漂移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30876433/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com