在iOS上获取相对于地理北方的俯仰、滚转和偏航



我发现我可以从设备中检索CMAttitude,并从中读取我需要的3个值(俯仰、滚转和偏航)。据我所知,这个CMAttitude对象由CoreMotion管理,它是一个传感器融合管理器,用于计算指南针、陀螺仪和加速度计的正确结果(在Android上,它是SensorManager类)。

所以我的问题是:

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

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

  3. 如果一台设备(如iPhone 3GS)没有陀螺仪,我是否必须告诉它给经理,或者我是否可以告诉它根据它拥有的传感器(acc+gyro+compasacc+compas

  1. 和2:

iOS 5.0简化了此任务。CMMotion管理器有了新方法:


- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame

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

  • CM态度参考框架X磁北Z磁北垂直
  • CM态度参考框架XTrueNorthZ正北垂直

如果你想在旧版iOS上做到这一点,恐怕你必须使用当前用户位置自行校准。

尝试签出此资源:

  • "核心运动的新功能"WWDC 2011视频
  • "iOS 4中的传感设备运动"WWDC 2010视频

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

相关内容

  • 没有找到相关文章

最新更新