【问题标题】:Is Apple's iPhone magnetometer calibration working properly?Apple 的 iPhone 磁力计校准工作正常吗?
【发布时间】:2014-01-04 08:15:38
【问题描述】:

我目前正在开发一个 iPhone 应用程序(在 iPhone 5、iOS 7、Xcode 5 上),它需要非常准确地确定当前的态度。 CMDeviceMotion 的“态度”并不能满足这些要求,因为苹果的传感器融合算法似乎过于依赖漂移相当快的陀螺仪(根据我的经验)。这就是为什么我决定读出裸露的传感器数据,然后我想自己将其结合到传感器融合算法中。

当询问磁力计数据时,有两种可能性:

  1. 通过 CMMotionManager 中的 CMMagnetometerData

  2. 通过 Apple 所说的 CMDeviceMotion 中的 CMCalibratedMagneticField

此属性返回的 CMCalibratedMagneticField 为您提供了设备附近的总磁场,没有设备偏差。与 CMMagnetometer 类的磁场属性不同,这些值反映了地球磁场加上周围磁场,减去设备偏差。

原则上 (2.) 正是我想要的。

如果磁力计数据正确校准,则有一个非常简单的测试。为简单起见,可以将自己限制在两个维度上。当设备仰卧时,B_x^2 + B_y^2 的组合必须是常数,与设备指向的方向无关。它必须正好等于地球磁场的水平分量(假设设备附近没有其他磁场)。因此,当将位于其背面的设备进行 360 度转动时,B_x 上的测量数据 B_y 应该显示一个圆圈。详情请见here

现在重点:CMCalibratedMagneticField 的数据不会导致圆圈!

有人对此有解释吗?或者有谁知道,CMCalibratedMagneticField 是如何产生的?在执行设备的“八字形”运动时,磁力计是否按照link from above 的意义进行了校准,或者该运动有什么用处?

顺便说一句。为什么是“八形”运动而不是围绕它的三个轴翻转设备,这将允许按照link from above 中的描述进行校准?

我很高兴能对此问题进行任何澄清...谢谢!

【问题讨论】:

    标签: ios iphone calibration magnetometer


    【解决方案1】:

    iOS 7 中的磁力计有问题,误差为 +-7º。尝试使用 7.1 测试版。

    编辑

    随着时间的推移,磁力计的漂移为零,但对于位置的突然变化是相当不准确的。另一方面,加速度计和陀螺仪可以快速调整以适应突然变化,但作为惯性传感器,它们会在一段时间内失去准确性。

    因此,当CMCalibratedMagneticField 尝试补偿您的旋转运动时,它会使用来自陀螺仪和加速度计的数据。这是当加速度计和陀螺仪的 +-7º 误差蔓延并让你的圆圈偏离轨道的时候。查看answerwikipedia article 了解更多信息。

    关于八字: 两者都做同样的事情,它们将设备的“北”定位在每个方向,以期消除磁干扰。沿所有三个轴翻转您的设备会更好,但它更难执行并且用户不容易理解。

    希望这会有所帮助。

    【讨论】:

    • 非常感谢您的回答!是否有此信息的参考资料?
    • 我错了,错误已在 iOS 7.0.3 中修复。参考:support.apple.com/kb/DL1691
    • 但这仅涉及加速度计而不是磁力计,对吧?
    • 您能确认磁力计现在工作正常吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2018-07-05
    • 1970-01-01
    • 2019-08-18
    • 2019-06-27
    • 1970-01-01
    相关资源
    最近更新 更多