【问题标题】:How to get initial orientation for calculations with gyroscope?如何获得陀螺仪计算的初始方向?
【发布时间】:2012-01-15 23:43:16
【问题描述】:

我的问题可能很简单,但也可能是我完全错了——因此我决定问。最后,我将借助陀螺仪传感器的数据来计算手机的方向。我知道我应该使用卡尔曼滤波器或互补滤波器来应对陀螺漂移。我将在第二步中执行此操作,但我在这里提出的问题对于两种方法都是相同的。所以,真正的问题是:

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

如果这很重要,我会使用 Android 并有一个实现来借助加速度计和磁力计确定手机的方向,但它非常不准确。

【问题讨论】:

  • 这只是一个后续:你设法实现了算法吗?

标签: android orientation accelerometer sensors gyroscope


【解决方案1】:

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

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

我使用了Direction Cosine Matrix IMU: Theory 中描述的过滤器。我通过绑定TotalCorrection(第27页)来处理integral windup。像魅力一样工作!

【讨论】:

  • 这很有趣。然后我将尝试使用互补过滤器并检查它是如何工作的。谢谢你的链接。
  • 不要忘记:您必须确保不会发生饱和。在我的测试中,绑定TotalCorrection 就足够了。祝你好运!
  • 感谢您的评论。如果我做对了,饱和是一个可能发生的问题,如果设备旋转得更快(或者更好地说是在一段时间内旋转得更多)比陀螺仪可以测量?你通过限制总校正值来解决这个问题?如果我再次做对了,这对我来说没问题,因为我不会做任何平衡或校正,而是“简单地”确定我手机的方向。
  • 对不起,我的马虎。 :( 如果您从任意方向开始,TotalCorrection 可能会变得非常大,因为方向显然存在巨大错误。根据我的经验,值得限制TotalCorrection。它会使收敛速度稍慢但过滤器将是防弹的。它需要调整,但哪个过滤器不需要?做你自己的实验,你会看到的!
  • 好吧,我想说的是:照顾好Integral windup。无论哪种方式,问题都会出现在任何其他过滤器中,它必须从严重错误中恢复。如果处理好积分饱和,您可以愉快地从任何位置开始,过滤器将收敛到真实方向。
猜你喜欢
  • 1970-01-01
  • 2016-05-05
  • 2012-03-04
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多