在iOS上获取相对于地理北极的俯仰,俯仰和偏航?

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

所以我的问题是:

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

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

  3. 如果一个设备(如iPhone 3GS)没有陀螺仪,我必须告诉经理,或者我可以告诉它给我的设备的态度基于它有传感器( acc + gyro + compas acc + compas

  1. 和2:

iOS 5.0简化了这个任务。 CMMotion经理有了新的方法:

- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame 

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

  • CMAttitudeReferenceFrameXMagneticNorthZ垂直磁北,
  • CMAttitudeReferenceFrameXTrueNorthZ垂直于真北。

如果你想用老版本的iOS来做这件事,那么恐怕你不得不使用当前的用户位置来自行校准。

尝试结帐这个资源:

  • “Core Motion的新function”WWDC 2011video ,
  • “在iOS 4中感应设备运动”WWDC 2010video

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

Interesting Posts