use*_*195 11 iphone calibration magnetometer ios
我目前正在开发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是如何产生的?当执行设备的"八字形"运动时,磁力计是否从上方校正,或者什么是运动?
顺便说一句.为什么"八字形"机芯并没有将设备绕在它的三轴上,这样可以进行上述链接中所述的校准?
对于这个问题的任何澄清我都很高兴...谢谢!
小智 2
iOS 7 中的磁力计存在问题,错误为+-7\xc2\xba。尝试使用 7.1 测试版。
\n\n编辑
\n\n磁力计随着时间的推移具有零漂移,但对于位置的突然变化却相当不准确。另一方面,加速度计和陀螺仪可以针对突然的变化快速调整,但作为惯性传感器,它们会在一段时间后失去准确性。
\n\n因此,当CMCalibratedMagneticField
尝试补偿您的旋转运动时,它会使用来自陀螺仪和加速度计的数据。这时,加速度计和陀螺仪的 +-7\xc2\xba 误差就会悄悄出现,并使你的圆圈偏离轨道。检查这个答案和这篇维基百科文章以获取更多信息。
至于八字形:\n两者都做同样的事情,它们将设备的“北”定向在每个方向,以期消除磁干扰。沿所有三个轴翻转设备效果会更好,但执行起来比较困难,而且用户也不容易理解。
\n\n希望这可以帮助。
\n