2012-02-07 37 views
7

我正在嘗試在android上編寫一個GPS跟蹤(類似於一個慢跑應用),並且GPS位置抖動的問題已經引發了它的醜陋頭部。當精度爲FINE且精度在5米以內時,位置抖動爲每秒1米。你如何確定或濾除合法運動中的抖動?GPS位置抖動去除算法/理論

Sporypal等應用程序顯然有一些方法,他們正在篩選出這種噪音。

有什麼想法?

回答

4

你可以通過低通濾波器來運行位置嗎?

東西順序

x(n) = (1-K)*x(n-1) + K*S(n) 

其中

S是你的噪聲採樣並且x,將低通濾波的樣本。 K是一個介於0和1之間的常量,爲了獲得最佳性能,您可能需要進行試驗。

每TK的建議:

我的僞代碼將氣色好Ç喜歡:

float noisy_lat[128], noisy_long[128]; 
    float smoothed_lat[128], smoothed_lon[128]; 
    float lat_delay=0., lon_delay=0.; 

    float smooth(float in[], float out[], int n, float K, float delay) 
    { 
     int i; 

     for (i=0; i<n; i++) { 
      *out = *in++ * K + delay * (1-K); 
      delay = *out++; 
     } 

     return delay; 
    } 

loop:  
    Get new samples of position in noisy_lat and noise_lon 

    // LPF the noise samples to produce smoother position data 

    lat_delay = smooth(noisy_lat, smoothed_lat, 128, K, lat_delay); 
    lon_delay = smooth(noisy_lon, smoothed_lon, 128, K, lon_delay); 

    // Rinse. Repeat. 
    go to loop: 

概括地說,這是一種簡單的反饋集成了一個採樣延遲。如果您的輸入在所需信號上有低頻白噪聲,該積分器將隨着時間平均輸入信號,從而導致噪聲分量達到接近零的平均值,併爲您提供所需的信號。

它的工作原理取決於信號的噪聲程度和濾波器的反饋係數K.正如我之前所說的,你必須稍微花一點時間來看看哪個值產生最乾淨,最乾淨理想的結果。

+1

你可以給一個「例如」使用僞代碼?我認爲這會讓OP更清晰。 – 2012-02-07 22:54:43

+0

感謝您的詳細示例......今天就去查看它是否有幫助。 – corrumpu 2012-02-08 15:06:52

+0

@corrumpu它有用嗎? – Yankee 2017-11-07 23:16:28