加速度计校准

Ric*_*lor 12 android physics

我正在使用加速度计在屏幕上以X/Y移动某些东西.

如果手机在桌子上平放,这很容易.

我想出了一些东西,试图能够从任何给定的位置开始,并从那里开始工作.但它似乎并不自然地起作用.

我如何校准事物,以便从起点上获得方向上的差异?

cursorX -= accelerometerCalibrationY - getAccelerometerY();
cursorY += accelerometerCalibrationX - getAccelerometerX();
Run Code Online (Sandbox Code Playgroud)

这适用于桌子上的平板和一些起始位置.这些变量在开始时只是getAccelerometerXY.

Leo*_*dos 3

你需要做一些数学计算。使用getRotationMatrix确定当前手机方向矩阵 (M)。使用M,您可以计算设备局部坐标系中的向量g(重力)。然后从传感器获取加速度(Accel)。Calc Ans = 加速度-重力矢量。Ans 的 x/y 分量正是您所需要的。对其进行过滤以获得更好的结果。

这是另一种简单的方法。获取加速向量。使用高通滤波器对其进行滤波以消除直流分量,并使用低通滤波器对其进行滤波以消除不必要的噪声(您将花费一些时间寻找合适的滤波器参数)。过滤后的 x/y 分量正是您所需要的。