CoreMotion 不会让我滚动、俯仰和偏航

Posted

技术标签:

【中文标题】CoreMotion 不会让我滚动、俯仰和偏航【英文标题】:CoreMotion wont give me roll, pitch and yaw 【发布时间】:2013-03-13 10:20:37 【问题描述】:

s在 ios 弃用 UIAccelerometer 之前,我使用来自此类的 xyz 的数据来计算俯仰、滚动和偏航。我还必须进行一些过滤,但现在我看到使用CoreMotion 库我可以从CMAttitude class 获取这些数据并且非常想使用这些属性,但不知何故我没有这样做。

现在,我所做的是实例化

CMMotionManager *motionManager;
CMDeviceMotion  *deviceMotion;
CMAttitude      *attitude;
...
deviceMotion    = motionManager.deviceMotion;
attitude        = deviceMotion.attitude;

motionManager.accelerometerUpdateInterval = 0.065; // 65ms
[motionManager startAccelerometerUpdates];

我能够从 motionManager.accelerometerData.acceleration.<x,y or z> 读取 x、y 和 z,但尝试从 attitude.<roll,pitch,yaw> 读取会得到 0。

NSLog(@"Roll: %f", attitude.roll); // = 0

我每 100 毫秒读取一次由连续计时器触发的方法中的值。

关于我缺少什么的任何想法?

【问题讨论】:

【参考方案1】:

要使用deviceMotion.attitude,您必须致电[motionManager startDeviceMotionUpdates]

startAccelerometerUpdates 仅提供加速度计数据,例如startGyroUpdates 将提供gyroData。请注意,设备运动数据不仅仅是加速度计和陀螺仪数据,因为它们将结合(传感器融合)以实现更高的精度。

【讨论】:

谢谢先生,就是这样。不知道他们结合了两者的数据来实现这一目标。

以上是关于CoreMotion 不会让我滚动、俯仰和偏航的主要内容,如果未能解决你的问题,请参考以下文章

iOS CoreMotion CMAttitude 相对于北极

给出初始和目标位置以及初始滚动,俯仰和偏航角度的目标滚动,俯仰和偏航角度

如何从前向矢量计算俯仰和偏航值

不寻常的 CoreMotion Sensorfusion 数据

VNDetectFaceRectanglesRequest 对于偏航/俯仰/滚动总是返回 0

使用四元数计算 iphone 的偏航、俯仰和滚动?