我想计算 iPhone 沿 y 轴方向的变化率。
1.最初我需要将参考定义为y轴,
2. 然后测量相对于定义参考的方向变化率(角度测量)。
CMAttitude 是否提供可靠的角度测量来实现此目的?或者我可以使用旋转矩阵或积分陀螺仪数据(我实现了这种方法,但由于陀螺仪的漂移,它不会起作用)。那么请建议我一种可靠的方法来完成这项工作?
先感谢您!
首先,澄清一下:旋转速率不是“从”任何轴测量的,而是“绕”轴测量的。您不需要提供初始参考框架,因为您只是担心change随着时间的推移。
不管怎样,你能得到的最好的就是CMDeviceMotion http://developer.apple.com/library/ios/#DOCUMENTATION/CoreMotion/Reference/CMDeviceMotion_Class/Reference/Reference.html's rotationRate
属性,文档对此说道:
CMRotationRate 结构包含指定设备速率的数据
绕三个轴旋转。该属性的值包含一个
测量已被Core消除偏差的陀螺仪数据
运动算法。
据说它集成了来自多个来源(加速度计)的传感器数据,试图消除读数中的陀螺仪漂移,而不是CMG陀螺仪数据 http://developer.apple.com/library/ios/#DOCUMENTATION/CoreMotion/Reference/CMGyroData_Class/Reference/Reference.html#//apple_ref/occ/cl/CMGyroData类,文档对此说:
此属性可测量设备的旋转速率
围绕三个轴。而该属性给出了来自
陀螺仪,CMDeviceMotion 的同名属性给出了
CMRotationRate 结构测量陀螺仪数据,其偏差已
由核心运动算法删除。
从这些参考文献中得出的结论是,如果您想要最准确的旋转速率数据,您应该使用类似以下的内容:
CMMotionManager* manager = [[CMMotionManager alloc] init];
[manager startDeviceMotionUpdates];
// Later, in some other scope...
double rotationAroundY = [[manager deviceMotion] rotationRate].y;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)