我正在研究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轴也在变化?
答案 0 :(得分:2)
基本上,当您仅使用Accelerometer
时,地球的引力会影响加速度计的z
值。但是DeviceMotion
试图通过对从传感器接收的原始数据执行某种算法来补偿重力的这种影响(即,为acceleration.z
提供更准确的值)。
但是这个算法不是100%准确,这就是为什么即使你把你的设备放在像桌子一样的平面上,你也会获得一些非零值。这种不准确的百分比非常低,但你仍然会得到不能忽视的结果。
您可能希望执行足够的试验并获得它们的平均值以补偿它。同样,这个平均值不能完全解决问题。例如,当设备移动时(并且在桌面上时不稳定),您可能会获得更多不准确的值。
顺便说一句,这种不准确或噪音称为gyroscope white noise
或white noise
。
答案 1 :(得分:1)
iPhone的传感器非常敏感。
如果您在桌面上播放音乐或电脑风扇(甚至安静的视网膜MacBook Pro风扇),传感器将拾取振动并进行解释。
您可能需要在开始对应用程序做出反应之前检查加速度的绝对值是否至少为一定量。
答案 2 :(得分:1)
加速度计数据的变化将来自至少两个来源:
1)iPhone正在搁置的桌子的震动(甚至很小),和 2)由加速度计的物理特性引起的噪声。这可能随温度而变化 - 称为高斯噪声。
似乎iPhone加速度计数据以重力加速度为单位,即1.0表示加速度约为9.8米/秒。因此,如果iPhone平放在桌子上(面朝上),数据名义上应为x:0.0,y:0.0,z:-1.0加上由于上述来源产生的噪音。