iOS5:CLHeading读数的更新率低 - >切换到CoreMotion是有问题的

时间:2011-10-25 13:06:21

标签: objective-c ios5 compass-geolocation core-motion magnetometer

使用iOS5,Compass原始数据读取的更新频率CLHeading急剧下降。这使得我的增强现实应用程序无法使用,因为它依赖于原始罗盘数据的近实时读取。

因此我现在正试图切换到CoreMotion。这提供了更频繁更新的磁力计数据:

cmManager = [[CMMotionManager alloc] init];    
[cmManager startMagnetometerUpdates];

然后,我可以随时在游戏中访问magneticField数据:

CMMagneticField magneticField = cmManager.magnetometerData.magneticField;

我遇到的问题如下: CMMagneticField中的数据与CLHeading x / y / z数据位于不同的单位。

我想将CMMagneticField x / y / z数据转换为与CLHeading / CLHeadingComponentValue相同的单位 - 以便能够使用我现有的AR代码。

这里有几个读物:

7.3     /  17.64 /  -39.58          CLHeadingComponentValue X/Y/Z
-103.12 /  88.51 /  -20.05          CMMagneticField 

-10.81  /  -34.9 /  -18.6          CLHeadingComponentValue X/Y/Z
-121.00 /   33.29 /  3.1           CMMagneticField    

-20.8  /  -38.0 /   -4.0          CLHeadingComponentValue X/Y/Z
-132.9 /   32.2 /  14.4           CMMagneticField

1 个答案:

答案 0 :(得分:0)

与此相关的文档中唯一的参考是报告的CLHeadingComponentValue被标准化为-128到+128的范围。但对我来说,似乎还应用了其他类型的校准。