2016-10-30 135 views
0

我目前正在尝试使用Android的陀螺仪和加速度计实现头部跟踪和移动系统。对于这项任务,我认为这将是更难的部分:我设法使用Android陀螺仪来使Headtracking工作。所以我可以使用计算的旋转矩阵在场景中自由浏览。我想实现的第二部分是使用Android加速器来改变场景中的位置。我的目标是实现像HTC Vive一样的动作追踪(或者从一开始就追踪玩家是否移动,例如在一个轴上)。使用Android加速度计实现3D场景中的移动

因此,我实施了高通和低通滤波器来摆脱重力影响,如下所述:See paragraph "Using the Accelerometer"。 此外,执行此过滤器后,我还包括第二步,以消除传感器的剩余抖动。它只是这样的:if(sensorData <= EPSILON) sensorData = 0;

有了这些准备,如果我的手机搁在桌子上,我执行向正x轴的轻微运动,我看到这样的事情:

X-Acc: 0.46105415 
X-Acc: 2.031945 
X-Acc: 1.5450834 
X-Acc: 1.1939144 
X-Acc: -0.18298185 
X-Acc: -2.796235 
X-Acc: -4.160668 
X-Acc: -2.663677 
X-Acc: 1.1761014 
X-Acc: 0.8469965 
X-Acc: 0.46683544 
X-Acc: 0.4156207 

所以,最初的加速度增加,之后由于摩擦,手机会遭遇负面加速。我正在努力的一点是,为什么后来增加?事实上,这些数据告诉我,手机向右移动,停了一下,向左移动了一小会儿,停了下来,又一次移向右边?

我很高兴在这个话题的每一个提示。有更好的方法吗?我是否以错误的方式解读传感器数据?我想我必须使用加速度计来获得运动的想法,gps不够敏感。

回答

0

,以移动到右边,您的手机需要:

-be推(X轴力:2)

-move了一段时间(X轴力:0)

-be停止(X轴力:-2)

加速度是速度的变化,而不是速度本身:-)

这个主题是比你想象的更难。