2

我一直在玩 iPhone 陀螺仪和加速度计,并试图通过使用这两个传感器来精确测量设备旋转。

首先,我使用陀螺仪计算设备角速度,然后使用加速度计找到角度(通过找到重力指向的位置,然后使用 atan2)。然后我使用它们使用这个公式创建一个很好的角度估计:

accAngle = atan2f(yAcceleration, xAcceleration); // reading from accelerometer
gyroAngle = gyroVelocity * timeSinceUpdate; // reading from gyroscope
estimatedAngle = 0.97 * (estimatedAngle + gyroAngle) + 0.03 * accAngle; // filtered angle

然后我使用estimatedAngle 来旋转一个CALayer。

它就像一个魅力,直到设备侧身转动,atan2 函数从 -pi 跳转到 pi 并返回。这种不连续性使角度抖动,并且由于角度测量跳动很大,因此混淆了滤波器。我试图想办法解决这个问题,但似乎没有任何效果。有任何想法吗?

4

0 回答 0