首页 文章

使用Android Accelerometer实现3D场景中的移动

提问于
浏览
0

我目前正在尝试使用Androids陀螺仪和加速度计实施头部跟踪和移动系统 . 对于这项任务,我认为这将是更难的部分:我设法使用Androids陀螺仪让头部跟踪工作 . 因此,我可以使用计算的旋转矩阵在场景中自由查看 . 我想要实现的第二部分是使用Androids Accelerometer来改变场景中的位置 . 我的目标是实现像HTC Vive那样的运动跟踪(或者开始,跟踪玩家是否移动,例如在一个轴上) .

所以我实现了高通和低通滤波器以消除重力影响,如下所述:See paragraph "Using the Accelerometer" . 此外,在执行此滤波器之后,我还包括第二步,以消除传感器的剩余抖动 . 它就像这样: if(sensorData <= EPSILON) sensorData = 0 ;

通过这些准备工作,如果我的手机放在 table 上并且我朝着正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不够灵敏 .

1 回答

  • 0

    为了向右移动,您的手机需要:

    -be推(x轴上的力:2)

    • 移动一会儿(x轴上的力:0)

    -be停止(x轴上的力:-2)

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

    这个话题比你想象的要难 .

相关问题