2

我正在研究 iPhone 中的加速度计传感器。这是我获取加速度计数据的代码:-

if (motionManager.deviceMotionAvailable)
    {
        motionManager.deviceMotionUpdateInterval = 10.0f;
        [motionManager startDeviceMotionUpdates];
        [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue]
                                           withHandler:^(CMDeviceMotion* motion, NSError *error)
         {

             //DLog(@"%f",motion.userAcceleration.x);
              DLog(@"x = %f,y =  %f,z = _%f",motion.userAcceleration.x,motion.userAcceleration.y,motion.userAcceleration.z);
         }
         ];
    } else {
        DLog(@"No gyroscope on device.");

    }
}

我有一个问题,比如如果我把我的 iphone 放在桌子上的静态位置仍然在桌子上,我可以看到它的值正在变化。它的值并不一致。

谁能告诉我为什么即使 iphone 处于静止位置,加速度计 x、y 和 z 轴也会发生变化?

4

3 回答 3

3

基本上,当你Accelerometer只使用时,地球的重力会影响z加速度计的值。但是DeviceMotion试图通过对从传感器接收到的原始数据执行一些算法来补偿重力的这种影响(试图给出更准确的值acceleration.z)。

但是这个算法并不是 100% 准确的,这就是为什么即使你把你的设备放在像桌子这样的平面上,你也会得到一些非零值。这种不准确性的百分比非常低,但您仍然会得到不能简单忽略的结果。

您可能希望执行足够的试验并获得它们的平均值来补偿它。同样,这个平均值并不能完全解决问题。例如,当设备在移动时(并且在桌面上不稳定),您可能会得到更不准确的值。

顺便说一句,这种不准确性或噪音称为gyroscope white noiseor white noise

于 2013-07-05T16:01:48.403 回答
1

iPhone 的传感器非常灵敏

如果您的桌面上有播放音乐的扬声器或电脑风扇(甚至是安静的视网膜 MacBook Pro 风扇),传感器接收振动并解释它们。

在开始对应用程序做出反应之前,您可能需要检查加速度的绝对值是否至少达到一定量。

于 2013-07-05T15:49:14.713 回答
1

加速度计数据的变化将来自至少两个来源:

1) iPhone 所在的桌子的振动(即使很小),以及 2) 由于加速度计的物理性质而产生的噪音。这可以随温度变化 - 称为高斯噪声。

iPhone 加速度计数据似乎以“重力加速度”为单位,即值 1.0 表示加速度约为 9.8 m/s。因此,如果 iPhone 平放在桌子上(面朝上),数据名义上应该是 x: 0.0, y: 0.0, z: -1.0 加上由于上述来源的一些噪音。

于 2018-04-05T23:03:26.283 回答