我有每秒5次更新的实时GPS数据。平均80%的数据相当准确;但大约20%的数据是生涩的。此外,我们偶尔会得到一个异常值,即远离实际轨迹的错误数据点。
我正在寻找能够实现以下目标的算法:
为了给出一些背景信息,我首先在stackoverflow.com网站上搜索了一些类似的主题,并找到了以下链接:
我的软件工程师实现了上述链接中提供的KalmanLatLong例程;但是我们遇到了以下问题:
当算法产生外推值时,算法落后于意义,更多的GPS数据点到达(记住数据是实时传输的)。
如果偶尔出现异常情况,算法会很顺利。而目标是消除这些异常值,因为它们是错误的数据。
我正在寻找一种可以实时工作并以5 Hz处理GPS更新的算法,并在消除异常值的同时使数据平滑。
非常感谢您的帮助。
答案 0 :(得分:1)
基本方法可能是这样的:
您需要尝试X,P和阈值的值,看看哪些适合您。对于高速赛车而言,有利于步行应用。 如果您有太多外推节点,还要添加一个检查,因为这意味着此算法认为大多数数据都是错误的,并且不应该是真的。您可以清空点列表并从头开始。
答案 1 :(得分:0)
您可以在卡尔曼滤波器本身中加入观察拒绝。这有时称为数据窥探。
我认为你有一个简单的例子,你只有GPS数据,并希望结合一个瞬间的测量,或者把它们全部扔掉(而不是只丢掉纬度)。
符号符合Wiki article
在更新步骤中,计算
V = y'*inv(S)*y
(y是残差向量,S是残差协方差) 如果你的过滤器被正确调整,那么它有一个卡方(2)分布,如果你只使用lat和lon,或卡方(3),如果你也使用高度。如果V超出此分布的0.1%百分位,则拒绝观察,即不计算增益或更新您的州或州协方差。