仅使用Core Motion或Gyroscope的rotationRate属性,是否可以提取旋转设备的弧度(或度数,如果你喜欢)?
我曾尝试对Core Motion数据进行定时采样,例如,每秒采样5次,所以我知道每次读数之间有0.2秒。然后,如果我从一个读数到另一个读数的旋转速率为每秒0.5弧度,理论上我可以将其除以5并且现在知道自上次以来设备旋转了多少弧度。
这似乎合乎逻辑,但结果与现实无关。将设备旋转90度将产生结果,告诉我设备旋转了100倍。
是否可以通过查看rotationRate来提取设备旋转的程度?
我错过了什么?
答案 0 :(得分:2)
需要更多空间而不是评论;-) iOS以弧度检索所有数据,如果您的其他计算是正确的,我认为它可能是以弧度为单位测量的角度。
一般来说,你的方法似乎没问题:取每个信号的角速度,将其与时间增量相乘,你将得到这个时间范围的角度增量。然后将所有角度相加,结果应该是覆盖距离,以弧度为单位。角度phi是角速度omega在经过的时间内的积分,并且与梯形法则(例如所描述的)进行数值积分对于陀螺仪的数据(不适用于加速度计)是可以的。
一般情况下,我建议使用核心动作提供的时间戳,而不是Apple推荐的定义时间段(1/5),因为设备动态数据的传输频率通常低于预期(见{{3} }或What is the official iPhone 4 maximum gyroscope data update frequency and。
此外,您应该采用更高的频率来避免数值积分中的错误。
[评论部分更新:]
如果您有兴趣通过扩展的Simpson规则进行整合,我建议使用Push method for core motion and frequency of Accelerometer/Gyroscope Data(仅限德语,第173页)和paper。从现有项目中获取的一些示例代码作为提取的代码段可以在这里找到:An Extension to Newton-Cotes Formulae请注意,它可能无法编译,也没有保修,因为......您从其他站点知道这一点; - )
免费应用程序将传感器输入显示为iPhone的图形:DevicePosition.m