2012-01-15 181 views
4

我的问题可能很简单,但也可能是我完全错误的情况 - 因此我决定提问。最后,我将借助陀螺仪传感器的数据来计算手机的方向。我知道我应该使用卡尔曼滤波器或互补滤波器来应对陀螺漂移。我会在第二步做到这一点,但我在这里问的问题对于这两种方法都是一样的。所以,真正的问题如下:如何获得陀螺仪计算的初始方向?

从陀螺仪我只得到角度变化(积分后)。所以我需要的是一些初始值,我可以将当​​前测量的变化添加到。但是,我如何获得这个起点呢?我是否使用加速计和磁力计来确定手机的方向?或者有没有更好的办法?

如果很重要,我使用Android进行此操作,并通过加速度计和磁力计的帮助来确定手机的方向,但它非常不准确。

+0

这只是一个后续:您是否设法实现算法? – Ali 2012-02-11 17:24:56

回答

1

使用任意方向作为初始约束。

任何合理的过滤器必须从恢复,并迅速收敛到实际的方向。

我使用了Direction Cosine Matrix IMU: Theory中描述的过滤器。我通过限制TotalCorrection(第27页)来照顾integral windup。奇迹般有效!

+0

这很有趣。然后,我会试用补充过滤器,并检查它是如何工作的。感谢您的链接。 – fkerber 2012-01-16 13:11:46

+0

不要忘记:你必须确保饱和度不会发生。在我的测试中,'TotalCorrection'已经足够了。祝你好运! – Ali 2012-01-16 14:16:59

+0

感谢您的评论。如果我说得对,饱和度是一个问题,如果设备的旋转速度比陀螺仪可以测量的快(或者说在一段时间内旋转的更快),会出现问题?你通过限制总校正值来摆脱这个问题?如果我再次说得对,这对我来说不成问题,因为我不会做任何平衡或修正,而是“简单地”决定我手机的方向。 – fkerber 2012-01-16 15:38:56