我目前正在开发iPhone应用程序(在iPhone 5,iOS 7,Xcode 5上),这需要非常准确地确定当前的态度.CMDeviceMotion的"态度"并不能满足这些要求,因为Apple的传感器融合算法似乎过分依赖陀螺仪,而陀螺仪的速度相当快(根据我的经验).这就是我决定读出裸传感器数据的原因,后来我想将它自己组合在一个传感器融合算法中.
在询问磁力计数据时,有两种可能性:
通过CMMotionManager中的CMMagnetometerData
通过CMDeviceMotion中的CMCalibratedMagneticField关于Apple的说法
此属性返回的CMCalibratedMagneticField可为您提供设备附近的总磁场,而无需设备偏差.与CMMagnetometer类的magneticField属性不同,这些值反映了地球的磁场加上周围的场,减去了器件偏置.
原则上(2.)正是我想要的.
如果磁力计数据正确校准,则可以进行非常简单的测试.为简单起见,可以将自己限制在两个维度.当设备位于其后面时,组合B_x ^ 2 + B_y ^ 2必须是恒定的,与设备指向的方向无关.它必须等于地球磁场的水平分量(假设设备附近没有其他场).因此,当执行位于其背面的设备的360度转弯时,B_x上的测量数据B_y应显示圆形.详情请见此处.
现在重点:CMCalibratedMagneticField的数据不会产生圆圈!

有没有人对此有解释?或者有人知道,CMCalibratedMagneticField是如何产生的?当执行设备的"八字形"运动时,磁力计是否从上方校正,或者什么是运动?
顺便说一句.为什么"八字形"机芯并没有将设备绕在它的三轴上,这样可以进行上述链接中所述的校准?
对于这个问题的任何澄清我都很高兴...谢谢!