6

使用 GPS 开发跟踪应用程序。一切都很好,但有时由于封闭区域或恶劣天气,我得到的分数不准确。当您绘制它们时,它看起来不正确,有很多跳跃/跳跃。

我应该运行什么算法来过滤掉不良信号 对我来说这看起来像是一个模糊算法的应用,但你怎么看?

4

3 回答 3

8

有几个选项:

  1. 剔除异常值
  2. 筛选
  3. 使用更好的 GPS
  4. 使用外部数据源(捕捉到道路)
  5. 以上结合

我喜欢使用滤波器——卡尔曼滤波器是典型的(通常也是最好的)解决方案——它使用的预测平均量比廉价的 IIR(无限脉冲响应)滤波器更好:

FilteredValue = FilteredValue * 0.75 + NewValue * 0.25

您可以获得每秒 4-5 次修复的 GPS 模块,这将允许您使用上述“廉价”过滤器并具有合理的响应时间。

您还可以简单地获得更好的 GPS(SiRF III 或更好的),它没有那么嘈杂并且具有更好的室内接收(如果可能)。

消费类 GPS 装置尽可能“与道路同步”,因此消费者不会看到道路外的错误,以及其他一些技术。

Kalman 并不容易实现,但如果没有外部数据集或传感器(例如道路速度),它是最佳选择。查看http://www.google.com/search?q=open%20source%20kalman%20filter获取代码和教程。

-亚当

于 2009-01-26T17:21:01.767 回答
3

回复:在存在“流行”噪声的情况下进行过滤-

我发现的最简单的方法之一是:

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 回答