私はアンドロイドにGPS追跡(ジョギングアプリに似ています)を書こうとしています.GPS位置ジッタの問題はそれが醜い頭を育てました。精度がFINEで精度が5メートル以内の場合、位置は毎秒1-nメートルのジッタがあります。正当な動きからこのジッタをどのように決定し、除外しますか?GPS位置ジッタ除去のアルゴリズム/理論
Sporypalなどのアプリでは、このノイズを除外していることが明らかです。
どのような考えですか?
私はアンドロイドにGPS追跡(ジョギングアプリに似ています)を書こうとしています.GPS位置ジッタの問題はそれが醜い頭を育てました。精度がFINEで精度が5メートル以内の場合、位置は毎秒1-nメートルのジッタがあります。正当な動きからこのジッタをどのように決定し、除外しますか?GPS位置ジッタ除去のアルゴリズム/理論
Sporypalなどのアプリでは、このノイズを除外していることが明らかです。
どのような考えですか?
位置をローパスフィルタで実行できますか?
Sはあなたの騒々しいサンプルとのx、ローパスフィルタリングされたサンプルであるため
x(n) = (1-K)*x(n-1) + K*S(n)
の
何か。 Kは0と1の間の定数で、最高のパフォーマンスを得るために試してみなければならないでしょう。
パーTKの提案:
私の擬似コードは、ものすごく好き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:
一言で言えば、これは1サンプル遅延を持つ単純フィードバックインテグレータです。入力信号に希望する信号の低周波ホワイトノイズがある場合、この積分器は時間の経過とともに入力信号を平均化し、ノイズ成分をほぼゼロに近づけ、希望する信号を残します。
どれくらいうまく動作するかは、信号のノイズ量とフィルタのフィードバック係数Kに依存します。前にも述べたように、値を少しだけ再生して、望ましい結果。
擬似コードを使用して「インスタンス」を指定できますか?私はそれがOPのためにそれをはるかに明確にすると思います。 –
詳細な例をお寄せいただきありがとうございます...今日これをハッシュして、役立つかどうかを確認してください。 – corrumpu
@corrumpu動作しましたか? – Yankee