6

GPS を使用した追跡アプリケーションに取り組んでいます。大丈夫なのですが、通行止めや悪天候などで点数がずれることがあります。それらをプロットすると、多くのホップ/ジャンプがあり、正しく見えません。

悪い信号を除外するには、どのアルゴリズムを実行すればよいですか? 私にはぼかしアルゴリズムのアプリケーションのように見えますが、どう思いますか?

4

3 に答える 3

8

いくつかのオプションがあります:

  1. 外れ値を捨てる
  2. フィルター
  3. より良い GPS を使用する
  4. 外部データ ソースを使用する (道路にスナップ)
  5. 上記の組み合わせ

私はフィルターを使用するのが好きです - カルマン フィルターは典型的な (そしてしばしば最良の) ソリューションです - 安価な IIR (無限インパルス応答) フィルターよりも優れた量の予測平均を使用します。

FilteredValue = FilteredValue * 0.75 + NewValue * 0.25

1 秒あたり 4 ~ 5 回の修正を行う GPS モジュールを入手できます。これにより、上記の「安価な」フィルタを適切な応答時間で使用できるようになります。

また、ノイズが少なく、屋内での受信が優れている (可能な場合)、より優れた GPS (SiRF III 以上) を入手することもできます。

消費者向け GPS ユニットは、可能な場合は「道路にスナップ」するため、道路から離れた場所でのエラーや、その他のいくつかの技術が消費者に表示されることはありません。

カルマンは実装が簡単ではありませんが、外部データセットやセンサー (道路速度など) がなければ最適なオプションです。コードとチュートリアルについては、http://www.google.com/search?q= open%20source%20kalman%20filter をご覧ください。

-アダム

于 2009-01-26T17:21:01.767 に答える
3

re: 「ポップ」ノイズの存在下でのフィルタリング--

これを行うために私が見つけた最も簡単な方法の1つは次のとおりです。

delta = newValue - filteredValue;
delta = delta > LARGEST_SANE_DELTA ? LARGEST_SANE_DELTA
     : (delta < -LARGEST_SANE_DELTA ? -LARGEST_SANE_DELTA : delta);
filteredValue += alpha*delta;

ここで、alpha = 1/tau であり、tau は問題のローパス フィルターの時定数であり、上記のコードの反復間の時間の倍数で表されます。この値は、入力の大きな変化LARGEST_SANE_DELTAの可能性を表し、newValue過度に大きな変化をクリップします。この種のノイズを拒否するより良い方法があるかもしれませんが、それらはより複雑であり、私が言及したものは非常に単純です.

于 2009-01-26T18:06:00.257 に答える
2

カルマン フィルターを使用します。

于 2009-01-26T17:15:50.450 に答える