【问题标题】:Combine Gyroscope with accelerometer to get heading将陀螺仪与加速度计相结合以获得航向
【发布时间】:2011-11-08 14:44:24
【问题描述】:

我正在使用 Android 设备来获取航向(方位角或偏航角)。

Android API 使用加速度计值 + 磁场来计算矩阵旋转,然后从该矩阵中提取方位角(又名 SensorManager.getOrientation(...))但结果非常不准确!特别是如果手机受到一些磁性物质的干扰。

然后我有陀螺仪,如果我整合陀螺波谷时间的值,我可以得到一个实际的角度,但大家都知道:p,这可能会漂移......甚至在 10 秒后艰难的我不移动10°的角度漂移......

所以这里我一方面是加速 + 磁电机的结果,它在磁场附近非常糟糕 另一方面,我有陀螺仪的结果非常好,但随着时间的推移会漂移......

所以我的问题是,有没有一种简单或聪明的方法可以将这两个结果组合在一起以获得一种“稳健”的航向估计?我说简单,因为我知道有卡尔曼滤波器。 .但即使很难,我也读了50次理论,我什么也不懂:)。

谢谢!

【问题讨论】:

  • 不推荐使用 TYPE_ORIENTATION 是有原因的,那就是它非常不准确 :) 您应该只使用陀螺仪来检测运动,而不是静态位置。加速度计更适合此目的,尽管您将不得不做一些触发。您能否编辑您的问题以明确您想要做什么?您还可以查看文档 - developer.android.com/reference/android/hardware/…
  • 我同意这一点。至于“有没有一种简单或聪明的方法将这两个结果结合在一起?”这已经由传感器管理器完成,请查看 Pheonixblade9 引用的文档。
  • 传感器管理器没有结合陀螺仪和加速度计。它使用加速度计和磁场来计算旋转矩阵并从中获取航向(又名 SensorManager.getOrientation(..))。所以参考Pheonix所说的,我的问题是如何将SensorManager.getOrientation的结果与陀螺仪的综合值结合起来。
  • 合并如何???完全不清楚你想做什么。如果要添加它们,请尝试将它们添加在一起。那应该“将它们结合起来”:P /sarcasm
  • 我想我不确定为什么 OP 不只使用传感器管理器 - 我自己从 Android 教程中获得非常准确的读数从来没有遇到过问题。我看不出这里有什么问题或目的

标签: android orientation accelerometer gyroscope azimuth


【解决方案1】:

据我所知,卡尔曼滤波器或类似的东西都是在 SensorManager 中实现的。查看Sensor Fusion on Android Devices: A Revolution in Motion Processing

你正在尝试解决一个已经解决的问题。

【讨论】:

  • 对不起,阿里,但你链接的视频显示了一个在麻省理工学院工作的人,这正是我想做的事情(几乎,因为他做了更多的事情)。无论如何,这都不包含在Android中……也许几年后?但我想了解他是如何做到的......
  • @Alexis 那么 SensorManager 会做什么?你之前写的:“传感器管理器没有将陀螺仪和加速度计结合起来。它使用加速度计和磁场来计算旋转矩阵并从中获取航向(又名 SensorManager.getOrientation(..)) 。”不是真的。您在哪里找到这个错误的描述?
  • developer.android.com/reference/android/hardware/…, float[]) 所以你这样做 SensorManager.getRotationMatrix(inR, I2,gravity2, geomag); // 你传递加速度 + 磁场,它计算旋转矩阵,然后你做 SensorManager.getOrientation(inR,orientation) // 你传递旋转矩阵并返回方向......不涉及陀螺仪
  • 您需要developer.android.com/reference/android/hardware/… 它为您提供四元数的方向,但您可以将其转换为旋转矩阵或您需要的任何东西。他们的 API 提供了你需要的东西。
  • 这种类型如果我理解正确只使用加速度计+指南针(google.com/codesearch#uX1GffpyOZk/services/sensorservice/…)我不明白为什么他们不包括使用陀螺仪,它会更准确一些.. .. 不过还是谢谢,我要试试那种类型,并尝试从返回的矩阵中提取好的角度
【解决方案2】:

简而言之:

不可能将陀螺仪 + 加速度计结合起来获得方位角(我精确)仅仅是因为加速度计无法感应 XY 轴上的加速度..

一种方法是将陀螺仪与指南针融合在一起,但如果有磁插管,这将不会很好用

【讨论】:

    【解决方案3】:

    似乎对陀螺仪传感器有一个非常普遍的混淆。我最近回答了一个类似的问题here,所以我建议任何对这些主题感兴趣的人看看这个问题和答案。

    我已经使用了application 中描述的技术(一个集成陀螺仪读数以改善结果的指南针)。结果并不完美,但总体上比其他指南针要好得多。

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 1970-01-01
      • 2013-03-07
      • 2017-05-30
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多