2012-09-10 34 views
3

我正在嘗試使用加速度計來測量設備滑動的距離。這是我如何做的:iOS與加速度計的滑動距離

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { 
    CGFloat interval = [NSDate timeIntervalSinceReferenceDate] - lastTime; 

    CGFloat velocity = ((acceleration.y + lastAcceleration)/2) * interval * 9.8 + lastVelocity; 

    totalDistance += velocity * interval; 

    lastAcceleration = acceleration.y; 
    lastVelocity = velocity; 

    lastTime = [NSDate timeIntervalSinceReferenceDate]; 
} 

結果是非常不穩定的,範圍+/- 30%的實際值。我的計算是否正確?如果是這樣,我怎樣才能使這段代碼更加準確?

+0

你認爲,由於它的動作,而在空氣中移動它是一個更平滑的過渡沿表面的摩擦將引起振動來改變傳感器值? 您試圖做的是運動感應中最難的問題之一,並且無法重新定位隨着時間的推移行駛的估計距離會變得越來越糟。 – FaultyJuggler

+0

似乎你正在嘗試[臭名昭着的雙積分](http://stackoverflow.com/a/7835988/341970)。我很驚訝你只有30%的錯誤。 – Ali

+0

嗯...所以你說的是,這是不可能的iPhone的當前硬件? –

回答