在iOS上获取相对于地理北极的俯仰,俯仰和偏航?
我看到我可以从设备中检索CMAttitude ,从中可以读取我需要的3个值(俯仰,滚动和偏航)。 据我所知,这个CMAttitude对象由CoreMotionpipe理,它是一个传感器融合pipe理器,用于一起计算来自罗盘,陀螺仪和加速度计的正确结果(在Android上它是SensorManager类)。
所以我的问题是:
-
这些数值(俯仰,滚转和偏航)相对于磁北和重力?
-
如果以上是正确的,我怎么修改它给我相对于地理北方的结果呢?
-
如果一个设备(如iPhone 3GS)没有陀螺仪,我必须告诉经理,或者我可以告诉它给我的设备的态度基于它有传感器( acc + gyro + compas 或 acc + compas )
- 和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属性),使用设备运动无法得到态度。 你唯一能做的就是直接读取加速度计和磁力计数据。