卡尔曼滤波器 - 两个相同传感器的融合
Kalman Filter - Fusion of two equal sensors
我有兴趣在 Python 中实现卡尔曼滤波器。首先,我编写了一个非常简单的 K 滤波器版本——只有一个状态(Y 方向的位置)。
我的状态转换矩阵如下所示:
X <- X + v * t
其中 v 和 t 是常量。
我用一个简单的线性函数模拟测量
y = mx + b
并为其添加噪音:
y1 = np.random.normal(y, sigma, Nsamples).
它工作得很好,我可以重新定义 R 和 Q 来改变测量和过程噪声值(到目前为止,它不是矩阵)。
现在我有一个想法...
如果我进行第二次测量会怎样?
y2 = np.random.normal(y, sigma2, Nsamples)
我该如何处理?我可以像这样预过滤测量吗:
(y1 + y2) / 2
或者是否有更合适的method/solution涉及到卡尔曼滤波器?
有多种方法可以使用卡尔曼滤波器处理多个传感器测量值的融合。一种方法是用新的测量顺序更新卡尔曼滤波器。
请参阅 this answer 中传感器融合先驱 Hugh Durrant-Whyte 的幻灯片,了解融合传感器数据的多种方法。
我有兴趣在 Python 中实现卡尔曼滤波器。首先,我编写了一个非常简单的 K 滤波器版本——只有一个状态(Y 方向的位置)。 我的状态转换矩阵如下所示:
X <- X + v * t
其中 v 和 t 是常量。
我用一个简单的线性函数模拟测量
y = mx + b
并为其添加噪音:
y1 = np.random.normal(y, sigma, Nsamples).
它工作得很好,我可以重新定义 R 和 Q 来改变测量和过程噪声值(到目前为止,它不是矩阵)。
现在我有一个想法...
如果我进行第二次测量会怎样?
y2 = np.random.normal(y, sigma2, Nsamples)
我该如何处理?我可以像这样预过滤测量吗:
(y1 + y2) / 2
或者是否有更合适的method/solution涉及到卡尔曼滤波器?
有多种方法可以使用卡尔曼滤波器处理多个传感器测量值的融合。一种方法是用新的测量顺序更新卡尔曼滤波器。
请参阅 this answer 中传感器融合先驱 Hugh Durrant-Whyte 的幻灯片,了解融合传感器数据的多种方法。