互补滤波器和atan2不连续性

时间:2013-01-02 05:45:01

标签: iphone objective-c

我一直在玩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并返回。这种不连续性会导致角度抖动,并且由于角度测量值会跳跃太多,因此会混淆滤波器。我试图想出一个解决方案,但似乎没有任何效果。有什么想法吗?

0 个答案:

没有答案