iPhone - 核心运动旋转率
Posted
技术标签:
【中文标题】iPhone - 核心运动旋转率【英文标题】:iPhone - core motion rotationRate 【发布时间】:2011-02-20 21:04:11 【问题描述】:仅使用 Core Motion 或 Gyroscope 的 rotationRate 属性是否可以提取设备旋转了多少弧度(或度数,如果您愿意)?
我尝试对 Core Motion 数据进行定时采样,例如,每秒采样 5 次,因此我知道每次读数之间有 0.2 秒。然后,如果从一次读取到另一次读取的旋转速率为每秒 0.5 弧度,理论上我可以将其除以 5,现在就知道自上次以来设备旋转了多少弧度。
这似乎合乎逻辑,但结果与现实无关。将设备旋转 90 度会产生结果,告诉我设备旋转了 100 倍。
是否可以仅通过查看rotationRate 来提取设备旋转了多少?
我错过了什么?
【问题讨论】:
度数 - 弧度?根据设备方向的直角? 什么意思?我不在乎它是弧度还是度数。我只想知道设备在每个轴上旋转了多少度。使用 Yaw,俯仰和滚动并不好,因为俯仰只是在 -Pi 到 Pi 之间变化。所以,我想看看我是否可以从这个rotationRate中提取3轴的相对旋转...... 我碰巧注意到这与您之前提出的问题非常相似。您不使用 CMAttitude 的 Euler Angles 的原因是因为“音高只是从 -Pi 到 Pi 变化”? 不,这是因为我收到了疯狂的值,我想尝试一种不同的方法,以查看这些值是否更精确。 【参考方案1】:需要比评论更多的空间;-) ios 以弧度检索所有数据,如果您的其他计算正确,我认为它可能是以弧度测量的角度。
一般来说,您的方法似乎没问题:获取每个信号的角速度,将其乘以时间增量,您将获得此时间范围内的角度增量。然后将所有角度相加,结果应该是以弧度为单位的覆盖距离。角度 phi 是角速度 omega 在经过时间上的积分,并且对于陀螺仪的数据(不适用于加速度计),使用梯形规则(即如上所述)进行数值积分是可以的。
一般而言,我建议使用核心运动传递的时间戳,而不是 Apple 推荐的定义周期 (1/5),因为设备运动数据的传递频率通常低于预期(参见 What is the official iPhone 4 maximum gyroscope data update frequency and 或Push method for core motion and frequency of Accelerometer/Gyroscope Data。
此外,您应该采用更高的频率以避免数值积分出现错误。
[从 cmets 部分更新:]
如果您有兴趣通过扩展的辛普森规则进行集成,我推荐paper(仅限德语,第 173 页)和An Extension to Newton-Cotes Formulae。从现有项目中提取的一些示例代码 sn-p 可以在此处找到:DevicePosition.m 请注意,它可能无法编译,没有保修,因为...您从其他网站知道这一点;-)
一个将传感器输入显示为 iPhone 图形的免费应用程序:Sensor Monitor
【讨论】:
谢谢。我尝试过使用官方时间戳,但最大的问题是这个。我的方法就是这样做的。当它开始时,它会读取初始姿态并计算设备旋转。假设 iphone 处于静止状态,读取的角度为 0 度。然后我将它旋转 180 度。当它旋转时,例程会这样做:读取时间戳(当前和最后一个)之间的差异 - 让我们调用这个增量,读取rotationRate,将它除以增量。所以现在它知道自上次以来它旋转了多少......继续 如果我将设备在一个轴上旋转 180 度并返回到原始位置,所有增量的总和应该为零,但不是。报告为零的原始位置现在报告不正确...例如,180 度旋转报告为或多或少 150 度... 啊,“除以 delta”?速率*时间=角度。速度/时间=加速度。对不起,我误读了你的问题(你已经说过了),并假设 1/5 秒作为时间增量相乘。可能就是这样:) 对不起,我的错误,我的意思是乘以 delta。不幸的是,我乘以 delta 并且对于真正的 180 度旋转,范围报告为或多或少 150 度,并且每次旋转时,都会报告不同的角度。我将继续尝试寻找方法。谢谢。 我在这个过程中发现,当旋转很小时,你不能相信rotationRate 作为旋转方向的指示。理论上,rotationRates 在逆时针旋转时带有一个加号,在顺时针旋转时带有一个减号(右手法则)。但当旋转较小时,即使使用 Core Motion 无偏数据,情况也并非如此。以上是关于iPhone - 核心运动旋转率的主要内容,如果未能解决你的问题,请参考以下文章
如何检测 iPhone 6 设备的运动? (确定 iPhone 设备是不是移动 - x,y,z- 上的最小可能运动)