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

发布于 2024-12-11 23:32:36 字数 1080 浏览 0 评论 0原文

在 iOS5 中,指南针原始数据读取 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

With iOS5 the update frequencey of the Compass raw data reading, CLHeading, dropped dramatically. This rendered my augmented reality app unusable, because it depends on a close-to-real-time reading of the raw compass data.

Therefore I'm now trying to switch to CoreMotion. This provides more frequently updated magnetometer data:

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

I can then access the magneticField data anytime I want during the game:

CMMagneticField magneticField = cmManager.magnetometerData.magneticField;

The problem I have is the following:
The data in CMMagneticField are in a different unit then CLHeading x/y/z data.

I would like to convert the CMMagneticField x/y/z data to the same units as CLHeading / CLHeadingComponentValue are - in order to be able to use my existing AR code.

Here a few readings:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哆兒滾 2024-12-18 23:32:36

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

The only reference in documentation related to this is that CLHeadingComponentValue reported is normalized to the range -128 to +128. But to me it seems that some other sort of calibration is applied.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文