【发布时间】:2012-02-06 13:22:29
【问题描述】:
我正在使用 CoreMotion 获取 ccompass 航向,我注意到罗盘航向存在一些问题。
起初我对 CoreMotion 的初始化。 我得到了一个 CMMotionManager 对象 locationManager,它是 CMMotionManager 的一个实例。
// initialize CoreMotion
motionManager = [CMMotionManager new];
[motionManager setDeviceMotionUpdateInterval:1.0/30.0];
[motionManager setShowsDeviceMovementDisplay:YES];
[self.motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical];
位置数据每 1/30.0 秒更新一次。
出于调试目的,我有一个 UILabel,它显示了在每个更新间隔更新的当前指南针航向。 当应用程序启动时,我总是必须执行神奇的 8 来校准指南针。
校准指南针后,南北航向在 2-5 秒内正确。
几秒钟后,指南针变得疯狂,角度也在跳跃。 大多数情况下,它从两个方向的起始位置浮动约 10-20 度。足以产生一个奇怪的结果。 每隔 30-60 秒后,南北交替或向东和西显示。
在 WWDC 2011 上,一个会议讨论了他们如何计算每个传感器与另一个传感器来弥补这个问题。 我在 CoreMotion 的配置中是否遗漏了我在准确航向结果方面存在的大量问题?
我现在在建筑物内外使用 3 台设备(2 台 iPhone 4s 和 iPhone 4)测试了指南针。我在田野,小城市和大城市。它一直在发生。 Apple 的示例指南针应用程序在我的测试中几乎准确,准确率为 90%。不幸的是,它不是由 Apple 开源的。
感谢您的阅读。
【问题讨论】:
标签: iphone augmented-reality compass-geolocation core-motion