卡尔曼滤波器在GPS安卓中的应用

9
为了从GPS中获得更加准确的数据,建议使用卡尔曼滤波器。但是我找不到任何关于如何在安卓上实现GPS卡尔曼滤波器的教程。

1
谢谢您的问题,但建议将此问题考虑为大地测量接收器课程的内容。 - softghost
这个问题已经很老并且已关闭,但我正在寻找同样的任务,并发现了这两个有趣的项目。也许对像我一样来到这里的人有所帮助: https://github.com/villoren/KalmanLocationManager 和 https://github.com/maddevsio/mad-location-manager 第二个项目还使用加速计和传感器数据来改善轨迹。虽然第一个答案中提到 GPS 数据已经进行了大量的 Kalman 滤波,但我还是发现这个项目非常有趣。 - Jorge
2个回答

11

GPS数据已经经过Kalman滤波处理。这是在GPS接收器内部完成的。 如果您创建自己的卡尔曼滤波器,不要期望位置(纬度/经度)的精度会提高。 此外,您没有内部GPS接收器所拥有的信息。它在输出位置之前每秒将其内部Kalman滤波器馈送1000次。

在您自己的后处理滤波器中,您可能会获得更平滑的轨迹(与可视化位置相关)。但是更平滑并不意味着更准确,只是更舒适。

另一个问题是GPS位置是否必须实时可用,例如在屏幕上显示当前位置。如果您想事后平滑您的轨迹(非实时),则可能会成功,但我不会为该情况使用卡尔曼滤波器。 卡尔曼滤波器非常适合实时过滤,对于后处理,您可以尝试使用三角窗口滤波器的滑动平均值(易于实现,而卡尔曼滤波器非常复杂)


在所有来自Android的信号上使用卡尔曼滤波器怎么样?例如,来自基站的位置、来自GPS的位置和来自Wifi热点的位置。在这种情况下,卡尔曼滤波器是否有益? - oliw
不需要基站或 WLAN 位置,如果您有 GPS。这些是三种具有不同精度的定位技术。GPS 比其他任何技术都要准确得多,因此如果您有 GPS,则可以忽略其他技术。在 GPS 不可用时,可以使用 WLAN 和基站位置来加载地图数据。但是,将所有三个技术一起进行卡尔曼滤波没有任何好处。 - AlexWien
位置更新的来源随时间变化,有时是GPS,有时不是。我的项目在经过一段时间的GPS更新后,下一个更新是模糊不准确的基站位置更新时会遇到困难。我希望能够使用卡尔曼滤波器来最小化不准确更新对后续位置更新的影响。 - oliw
不要忘记,如果您没有GPS位置,则没有有效的位置。只使用GPS时,您很可能会获得更好的结果。基站位置的使用受到限制(1公里精度)。 - AlexWien

6
通过谷歌和维基百科你可以找到很多东西,但是有一个基本的直觉可能会很有用。基本上,卡尔曼滤波器意味着反复应用两个步骤:1.做出猜测;2.使用测量结果更新猜测。卡尔曼滤波器正式化了一个简单的想法:当你知道自己的速度时,你可以从上次报告的GPS位置预测你的地理位置,然后在新的GPS报告到达时进行更新。我们将在这里讨论两个变量:平均值,即您的最佳猜测,以及不确定性,表示该猜测的准确性。就GPS而言,您将谈论GPS位置和误差范围(例如10米)。每次更新都会稍微增加不确定性,因为您并不确定速度是否已经改变。当收到新的测量结果时,您会更新位置和确定性。平均值和不确定性可以表示为钟形曲线(正态分布),其中变量在X轴上,具有该值的概率在Y轴上:在这里,µ(mu)是平均值,σ(sigma)是不确定性。任何这样的曲线都可以用这两个值来描述。诀窍在于,您实际上可以将两个钟形曲线(您的预测和您的测量)相乘,并获得代表组合知识的新曲线,当您在进行一些预测后获得新的GPS位置时,您将执行此操作。你可以在维基百科和其他网站上找到这个问题的解决方法。

Kalman是用于线性运动的,就我所知。但不能说GPS数据是这样的。在我的情况下,我可以将GPS数据转换为XY坐标,然后进行卡尔曼滤波,然后再次转换它们吗? - malintha
@Marlio 当然可以将给定的(纬度,经度)坐标转换为笛卡尔平面。每个地图应用程序在显示屏幕上的位置时都会执行此操作。这个任务被称为“投影”。 - AlexWien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接