在iOS上相对于地理北方获得俯仰,翻滚和偏航?

时间:2012-02-16 14:55:37

标签: ios core-motion pitch geographic-distance

我看到我可以从设备中检索CMAttitude,从中我可以读取我需要的3个值(俯仰,滚动和偏航)。 据我了解,这个CMAttitude对象由CoreMotion管理,CoreMotion是一个传感器融合管理器,用于计算罗盘,陀螺仪和加速度计的正确结果(在Android上它是SensorManager类)。

所以我的问题是:

  1. 这些值(俯仰,滚转和偏航)是否相对于磁北和重力?

  2. 如果以上是正确的,我该如何修改它以便给我相对于地理北方的结果?

  3. 如果设备(如iPhone 3GS)没有陀螺仪,我是否必须告诉管理员,或者我可以告诉它根据设备的传感器给我设备的态度(< em> acc + gyro + compas OR acc + compas

1 个答案:

答案 0 :(得分:6)

  1. 和2:
  2. iOS 5.0简化了此任务。 CMMotion经理有新方法:

    
    - (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame
    

    作为参考框架,您可以使用以下值:

    • CMAttitudeReferenceFrameXMagneticNorthZVertical for magnetic north,
    • CMAttitudeReferenceFrameXTrueNorthZVertical for true north。

    如果您想使用较旧的iOS,请务必使用当前用户位置自行校准。

    尝试结帐此资源:

    3。 如果设备没有陀螺仪,CMMotionManger的deviceMotionAvailable属性将为“NO”(它相当于gyroAvailable属性),并且您无法使用设备运动获得态度。您唯一能做的就是直接读取加速度计和磁力计数据。