【问题标题】:Wrong compass heading values with CoreMotionCoreMotion 的罗盘航向值错误
【发布时间】: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


    【解决方案1】:

    通过使用 CoreMotion,CoreLocation 将为您提供所需的内容。

    默认情况下,手机将执行校准图 8,若要禁用此功能,请按如下方式覆盖 locationManagerShouldDisplayHeadingCalibration:

    - (BOOL)locationManagerShouldDisplayHeadingCalibration: (CLLocationManager *)manager {
        return NO; 
    }
    

    如果您拨打startUpdateHeading,问题中的代码不清楚。如果没有,请这样做:

    if( [CLLocationManager locationServicesEnabled] && [CLLocationManager headingAvailable]) {
        [myLocationManager startUpdatingLocation];
        [myLocationManager startUpdatingHeading];
    }
    

    如果您不打开标题过滤器,您可能会得到疯狂的结果,我建议您这样做。之后,当调用 didUpdateHeading 时,您只需在位置管理器委托中更改标题。

    另请注意,如果手机处于横向模式,您需要将航向调整适当的度数 (+/- 90),因为航向始终位于纵向参考框架中。

    【讨论】:

    • 感谢您的回复。我在星期一有另一个项目的截止日期,我现在无法测试它。我会检查你的建议。听起来不错。几天后我会让你知道更多。谢谢!
    • “通过 CoreLocation 使用 CoreMotion”是什么意思?我有类似的问题,从 CoreLocation 开始的接缝大部分是正确的,但在 CoreMotion 中,如果我们将参考帧设置为真北,那么设备运动数据似乎会跳跃和/或漂移。
    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 2020-12-02
    相关资源
    最近更新 更多