3

我想计算 iPhone 沿 y 轴方向的变化率。1.最初我需要将参考定义为y轴,2.然后测量定义参考的方向变化率(角度测量)。

CMAttitude 是否提供可靠的角度测量来实现这一点?或者我可以使用旋转矩阵或集成陀螺仪数据(我实现了这个方法,但由于陀螺仪的漂移它不起作用)。所以请建议我一个可靠的方法来完成这个工作?

先感谢您!

4

1 回答 1

2

首先,澄清一下:旋转速率不是“从”任何轴测量的,而是“围绕”一个轴测量的。您不需要提供初始参考框架,因为您只是担心随着时间的推移而发生变化。

无论如何,你会得到最好的是CMDeviceMotionrotationRate属性,文档说:

CMRotationRate 结构包含指定设备围绕三个轴的旋转速率的数据。此属性的值包含陀螺仪数据的测量值,其偏差已被核心运动算法消除。

据说它整合了来自多个来源(加速度计)的传感器数据,试图从读数中消除陀螺仪漂移,而不是CMGyroData类,文档说:

此属性产生设备围绕三个轴的旋转速率的测量值。虽然此属性提供来自陀螺仪的原始数据,但 CMDeviceMotion 的同名属性提供了一个 CMRotationRate 结构测量陀螺仪数据,其偏差已被 Core Motion 算法消除。

从这些参考资料中得出的结论是,如果您想要最准确的旋转速率数据,您应该使用以下内容:

CMMotionManager* manager = [[CMMotionManager alloc] init];
[manager startDeviceMotionUpdates];

// Later, in some other scope...
double rotationAroundY = [[manager deviceMotion] rotationRate].y;
于 2012-09-06T18:13:10.803 回答