【问题标题】:Accelerometer Data keeps on fluctuating加速度计数据不断波动
【发布时间】:2016-01-08 16:37:38
【问题描述】:

我把手机放在木地板的同一个地方。但是每次我调用下面的代码sn-p时,值都会不断变化

if let accelerometerData = motionManager.accelerometerData {                    
    let z:String="x:"+String(accelerometerData.acceleration.x)+" y:"+String(accelerometerData.acceleration.y)+"z"+String(accelerometerData.acceleration.z)
    print("\(z)")               
}

这是我用来初始化和启动加速度计的代码

//Accelerometer
motionManager = CMMotionManager()
motionManager.startAccelerometerUpdates()

【问题讨论】:

  • 有什么问题?
  • 波动有多大?
  • 是的。为什么会有这样的问题?
  • 但它应该为相同的位置提供相同的值...我必须将加速度计位置传递给 API。如果它不断改变我应该给出哪个值?我当时收到的任何值或找到 5 次尝试的平均值并通过..

标签: ios swift accelerometer


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多