【问题标题】:Compass accuracy dilemma指南针精度困境
【发布时间】:2010-05-04 22:51:05
【问题描述】:

我需要为我的应用程序构建指南针。

从阅读文档看来,有两种合理的方法可以做到这一点:

  • Sensor.TYPE_ORIENTATION 方法:这是最简单的方法。问题在于它不准确。当我将我的读数与 Snaptic Compass 进行比较时,它大约相差 10-15 度,这对我来说是不可接受的。
  • Sensor.TYPE_ACCELEROMETER、Sensor.TYPE_MAGNETIC_FIELD 和 getRotationMatrix() 与 remapCoordinateSystem() 和 getOrientation() 方法结合使用:文档说这“通常更准确”。问题是无论我向听众登记的延迟如何,即使设备静止在平面上,指南针也会发疯。

任何解决此问题的建议将不胜感激。

【问题讨论】:

    标签: android compass-geolocation digital-compass


    【解决方案1】:

    看起来 mob1lejunkie 已经解决了这个问题,但为了将来参考,让我提一下这里的问题是magnetic declination(磁北和真北之间的区别)。您可以尝试an online model from NOAA,了解您所在地区的不同之处。

    Android 包含一个名为 GeomagneticField 的模型,可用于计算给定纬度、经度和海拔高度的近似偏角。因此,我认为计算真北所需要做的是从 Sensor.TYPE_ORIENTATION 中读出 azimuth value,然后将其添加到 GeomagneticField.getDeclination() 中。

    【讨论】:

    • 是的,这正是问题所在。
    【解决方案2】:

    这是为手机制造的紧凑部件的缺点。我们现在使用的价值 5000 美元的 IMU 有 +/- 2 度的误差,在这个范围内它似乎也很疯狂。

    尝试远离干扰、金属表面,看看是否有所改善。如果不是,我不想透露坏消息,但那是硬件。

    你见过这些吗?

    http://developer.android.com/reference/android/hardware/SensorManager.html

    http://groups.google.com/group/android-developers/browse_thread/thread/bbb0e8b97c673cf9/5c16bc2e49f6e972?lnk=raot

    【讨论】:

    • 我想说的是在同一部手机 (Nexus One) 上的厨房桌子上完全相同的位置 Snaptic Compass 是来自 Android Market 的第三方应用程序,它比我的阅读更准确。我想知道 Snaptic 使用什么技巧来获得更准确和可靠的读数。
    • 在 Snaptic Compass 设置中四处寻找后,我注意到它使用的是真北,而我使用的是磁北。现在我也使用真北,我的应用程序和 Snaptic Compass 具有相同的读数。当然,阅读并不完美,但那是由于 Nexus One 硬件不是我的指南针实现的错误。 pinnacler 感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多