如何解释来自iPhone的加速度计读数(How to interpret the accelerom

2019-09-17 02:31发布

我想建立一个基于Kinect和iPhone应用程序。

我试图计算我手中的加速随着时间的推移每个基于Kinect的返回轨迹的XY轴和Z轴的。 基本上我选择的0.5秒或15帧(一个标准的时间间隔dt )和3点,( x0x1x2 )上,其是通过0.5秒separeted时间。 首先我要指出的是,3点的位置在米被提及。 通过使用这些点我计算两个速度( v0 = (x1 - x0) / dtv1 = (x2 - x1) / dt )。 最后,通过使用这些速度,我计算之间的加速度x1x2作为acc = (v1 - v0) / dt

我重复这些计算在每个帧和我获得加速度的阵列。

正如我已经说过,我也是一个iPhone,我希望看到哪只手,我有我的iPhone,左手或右手。 我想试图通过我的手的加速度与iPhone的在正确的位置上,使我有同样的轴系统的加速度匹配做到这一点。

唯一的问题是,有我的加速度和手机的加速度之间的巨大差异。

手机acceelaration读数是介于-2至2之间为每个轴,而我的是-10到10之间,我应该怎样理解iPhone的加速度,以获得类似的措施以米/秒,以我的吗?

Answer 1:

在iPhone上的加速度计数据以g力单元提供。 x轴与手机屏幕的顶部边缘对齐,y轴与左边缘对齐,以及Z轴来直出对你的屏幕,如果你正在寻找它。 因此,与您的手机在桌子上休息面朝上,你应该得到的值(0, 0, -1)为X,Y和Z轴分别。 如果你放下你的手机,而它在自由下落,你应该得到(0, 0, 0)

假设你保持这样的排列将手机作为你移动它,以获得三维加速度米每平方秒:

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration
{
    float g = 9.80665f;
    float x = acceleration.x * g;
    float y = acceleration.y * g;
    float z = (acceleration.z + 1.0f) * g;
    // x, y, and z now hold the absolute acceleration in ms^-2
}

请注意,您必须减去,以获得相对于你的客厅的加速度,而不是相对于4维时空地球重力的影响。

另外要注意的是,iPhone的加速度计是相当嘈杂,周围即使手机是静态的,所以你要应用一些平滑这些值抖动。 但是,如果你使用了类似的技术,你似乎做什么用的位置数据做,把值到一个数组每一帧,以便在最后0.5秒得到的滚动平均值,这会已经顺利的数据为您服务。

需要注意的另一件事是,iPhone的加速计约2.3克峰值出来。 这些G力并不难实现(例如,如果您合掌),所以你可能会超过他们,积累的数据会不会很可靠的技术。



文章来源: How to interpret the accelerometer readings from iPhone