алгоритм / теория для устранения джиттера положения GPS - PullRequest
7 голосов
/ 08 февраля 2012

Я пытаюсь написать GPS-трекинг (похожий на приложение для бега трусцой) на Android, и проблема с джиттером местоположения GPS подняла свою уродливую голову.Когда точность равна ТОЧНО, а точность находится в пределах 5 метров, положение дрожит 1-n метров в секунду.Как вы определяете или отфильтровываете этот джиттер из законного движения?

Приложения Sporypal и т. Д. Явно имеют какой-то способ фильтрации этого шума.

Есть мысли?

1 Ответ

4 голосов
/ 08 февраля 2012

Не могли бы вы просто провести позиции через фильтр нижних частот?

что-то порядка

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

, где

S - ваши зашумленные сэмплы, а x - сэмплы нижних частот. K - это константа от 0 до 1, с которой вам, вероятно, придется поэкспериментировать для достижения наилучшей производительности.

За предложение ТЗ:

Мой псевдокод будет выглядеть ужасно C как:

    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. Как я уже говорил, вам придется немного поэкспериментировать со значением, чтобы увидеть, какое значение дает наиболее чистый и желательный результат. результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...