首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >项目探戈姿势数据在静止和运动时产生漂移

项目探戈姿势数据在静止和运动时产生漂移
EN

Stack Overflow用户
提问于 2015-06-17 03:25:23
回答 2查看 1.2K关注 0票数 4

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

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

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

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

下面是姿态数据的回调函数:

代码语言:javascript
运行
复制
        @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

要转换为OpenGL坐标,需要在平移中切换Y轴和Z轴。

任何关于这个问题的指导都将不胜感激。

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

EN

回答 2

Stack Overflow用户

发布于 2015-07-01 20:37:36

暗算一下:确保你的平板电脑在开机时完全静止不动()。为什么?根据我使用Invensense 9150的经验,使用稳定输入可以改进初始化过程中的传感器校准。只需按下电源按钮,让它平放,直到它启动。

票数 1
EN

Stack Overflow用户

发布于 2015-06-18 01:54:05

我最近也注意到了同样的间歇性漂移。这似乎是在探戈游戏商店应用程序为Pythagoras更新的时候开始的,但在我的探戈设备推送Pythagoras之前。还在用纳什。漂移会突然开始和停止,并且似乎以几乎恒定的速度漂移。例如:使用Tangominitown Unity应用程序可以很好地启动。几秒钟后,当平板电脑静止不动时,应用程序会突然表现得好像我在快速前进一样。这将持续几秒钟,在此期间,速率似乎略有减慢,然后突然停止漂移。巧合的是,大约在同一时间,我开始频繁收到"Tegra服务已停止“的消息。这是对通常的Tango服务已经停止的补充。可能是无关的。编辑:我只是注意到在Google Maps中也出现了这种漂移。在静止时,地图位置偶尔会显示一个突然弯曲的轨迹,在大约3秒内覆盖大约1/3的直径为50英尺的圆,然后停止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30876433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档