首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓:有没有办法准确区分手机移动和-Rotation?

安卓:有没有办法准确区分手机移动和-Rotation?
EN

Stack Overflow用户
提问于 2016-12-16 05:17:27
回答 1查看 73关注 0票数 1

我目前正在开发一个虚拟现实框架。我的Android智能手机被用作立体显示器和控制器。我有头部跟踪工作,但我想要一个简单的位置跟踪,也。我知道精确跟踪智能手机的位置是不可能的。至少,只要一个人被限制在智能手机的传感器上。因此,我们的想法是区分智能手机的旋转(头部跟踪)和任何类型的普通运动。当然,其结果是,如果检测到运动,我只能向前移动。正如我所说的,头部跟踪在android陀螺仪上工作得很好。但是运动跟踪仍然不能像我希望的那样工作。

主要的问题是,当旋转手机时,这种旋转实际上也是一种加速度。因此,仅仅看加速度的大小并不足以区分加速度(运动)和旋转。此外,做一些类似于陀螺仪阈值的事情:

代码语言:javascript
复制
if(gyroscope.magnitude < EPSILON)
    if(accelerometer.magnitude > EPSILON)
        //this may be motion

也不会产生所需的区别,因为在行走时手机总是会有一定程度的旋转。

长话短说:这个问题有没有可能的解决方案?(编辑)如果是,是如何完成的?我希望能够辨别智能手机是否被移动或旋转。理想情况下,仅使用陀螺仪和加速度计。

致以最良好的问候,并感谢您的反馈!

EN

回答 1

Stack Overflow用户

发布于 2018-07-09 16:39:01

我建议熟悉四元数的概念,以及如何使用它们来表示方向(这可能是一个很好的开始:http://run.usc.edu/cs520-s12/quaternions/quaternions-cs520.pdf)

此外,使用启发式作为您建议的"EPSILON“可能还不够,因为在某些情况下启发式可能会失败,但我相信您已经知道这一点。

大多数时候,你必须关心原始数据中的偏差,因此,你必须在测量开始时确保手机在足够的时间内处于静止状态(取决于在该时间段内获得的样本数量=取决于传感器的采样率)。在这种情况下,您可以计算轴上的平均值并减去它。这假设偏差随着时间的推移是恒定的,并且不关心偏差的不稳定性(看看这里:http://sensorwiki.org/doku.php/sensors/gyroscope)。偏置不稳定性不仅适用于陀螺。

如果您不能保证在过程开始时休息,您还需要阅读一些关于卡尔曼滤波器的知识,因为它们为您提供了估计偏差的可能性。我见过使用四元数和偏置作为状态的KF的实现;) -仅供初学者使用。

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

https://stackoverflow.com/questions/41173472

复制
相关文章

相似问题

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