适用于 iOS 的卡尔曼滤波器
Posted
技术标签:
【中文标题】适用于 iOS 的卡尔曼滤波器【英文标题】:Kalman Filter for iOS 【发布时间】:2015-03-05 06:08:56 【问题描述】:我正在尝试从部署在我实验室天花板上的蓝牙低功耗信标获得平滑的 rssi 值。我使用了加权平均滤波器和移动平均滤波器,但没有得到好的结果。通过各种期刊论文,我了解到卡尔曼滤波器可以用于此目的。但是我无法得到一个正确的数学方程来用objective-c进行编码。有人可以提供有关数学方程或卡尔曼滤波器实现的任何提示吗?非常感谢。
【问题讨论】:
核心位置已经做了卡尔曼滤波,所以这对你可能没有用。在过滤之上进行过滤通常效果不佳。 来自信标的 RSSI 值在波动。如何获得固定的 RSSI 值,以便将其用作无线电地图中的指纹? 我们如何确定核心位置已经进行了卡尔曼滤波?是否有任何框架参考? @santobedi 你找到解决办法了吗? @quellish 你怎么知道的?文档中没有提到卡尔曼滤波。再加上 GPS 真的很粗糙,没有视觉上的过滤证据。 【参考方案1】:像这样的一维情况意味着所有矩阵实际上只是标量值。你需要知道两件事:
R
,测量方差。您可以通过准确地记录一系列 RSSI 值(在固定位置)来直接测量这一点,然后测量它们的方差。您可以使用 Excel 或 python 轻松完成此操作,甚至可以从头开始编写自己的代码。
Q
,过程差异。这是您期望 RSSI 在相同的时间内(测量之间)实际变化的程度。您也可以对此进行衡量,也可以对其进行推理。
如果您查看卡尔曼滤波器方程,您会注意到P
不依赖于您的实际测量值,仅依赖于上述两个值。结果,由于它们是恒定的,P
将收敛到一个固定值。由于K
(卡尔曼增益)仅依赖于这些值,它也会收敛。对于像您这样的应用程序,找到稳定状态的K
并一直使用它通常就足够了。
现在这只是一种复杂的(但在最小二乘意义上是最佳的)创建简单移动平均滤波器的方法。
【讨论】:
【参考方案2】:如果您正在寻找卡尔曼滤波器的快速实现,那么值得关注this framework。它是传统滤波器算法的通用实现,它还提供了一个矩阵结构和所有在卡尔曼滤波器中使用的矩阵的必要操作
【讨论】:
以上是关于适用于 iOS 的卡尔曼滤波器的主要内容,如果未能解决你的问题,请参考以下文章