使用陀螺仪和加速度计获取方向

16
  • 我想监测设备在2个轴上的方向:简单来说就是哪个方向是下面。
  • 它必须在长时间(12小时)内保持准确性。
  • 它将受到绕所有轴旋转和加速度的影响。

该设备将是具有标准陀螺仪/加速度计的Android手机。使用这两种传感器类型,是否可能满足上述要求?

我的想法:仅使用加速度计无法实现该目标,因为在任何时刻给定一组值时,无法分离重力和空间加速度分量。我不明白陀螺仪如何帮助解决这个问题。是否有任何聪明的公式/算法可以解决这个问题?

谢谢


1
尝试在谷歌上搜索“加速度计陀螺仪数据融合”。这是IMU中非常常见的任务,绝对可行。(我能想到的是,你可以设置一个卡尔曼滤波器/只对加速度计进行高通滤波,对陀螺仪进行低通滤波,但我手头没有任何实现细节)。 - sapi
1个回答

27
一个简单的合并加速度计和陀螺仪数据的方式是使用互补滤波器。这样,你就不会遇到陀螺仪漂移和加速度计噪声的问题。与卡尔曼滤波器相比,它也更容易理解和使用。
您将使用积分来从陀螺仪中计算角度。 对于加速度计,您将使用tan2函数来确定重力向量的位置。然后互补滤波器将结合这两个角度,如下所示:
角度 = 0.98 *(角度 + gyroData * dt)+ 0.02 * accAngle 请注意,您只需要取加速度计数据的一部分(足以抵消漂移)。因此,在快速变化时,您将使用陀螺仪数据,但在长期运行中,您将继续遵循加速度计角度计算的平均值,以避免漂移。
希望这能帮助您。如果您需要更多信息和C代码示例,请查看我在这里写的文章:http://www.pieter-jan.com/node/11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接