2012-09-10 3 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

흠 ... 그래서 아이폰의 현재 하드웨어로는 이것이 불가능하다는 말입니까? –

답변

0

결과에 필터를 적용하여 하드웨어의 부정확성을 제거 할 수 있습니다.

여기에 값에 대한 고속 푸리에 변환을 수행하는 라이브러리가 있습니다.

http://sourceforge.net/projects/kissfft/

관련 문제