欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

简单易懂详解卡尔曼滤波与数据关联算法(NN, PDA, JPDA, CJPDA, NNCJPDA)

最编程 2024-07-23 19:40:27
...

一、卡尔曼滤波(Kalman Filter)

1.1 Data Fusion问题的引入:

  当前有两个传感器A和B,对待观测目标的状态进行测量(如两个电子秤对某物体的重量进行测量),这两个传感器的量测结果,是存在测量误差的随机变量(没有误差就不需要使用Kalman Filter了),现在的问题是:

如何融合两个传感器的量测结果得到最优的目标状态估计?

(最终结果还是个估计值,只不过是融合了两个传感器量测结果的更好的估计值,肯定不可能获得开了上帝视角的真值)

  这里我们设A和B两传感器对目标的量测结果服从高斯分布,也即:


A ∼ N ( μ A , σ A 2 ) A \sim N\left( {{\mu }_{A}},\sigma _{A}^{2} \right) AN(μA,σA2)
B ∼ N ( μ B , σ B 2 ) B \sim N\left( {{\mu }_{B}},\sigma _{B}^{2} \right) BN(μB,σB2)

  一个直观的想法是,最终估计输出C是分别对A和B加权的求和结果,也即:


C = A + s ( B − A ) s ∈ [ 0 , 1 ] (1) C=A+s\left( B-A \right) s\in \left[ 0,1 \right] \tag{1} C=A+s(BA)s[0,1](1)

其中,s为加权系数,也即:
  1. 当s取0时,最终估计输出C完全由A决定;
  2. 当s取1时,最终估计输出C完全由B决定;
  3. 当s在0到1之间时,最终估计输出C由A和B以不同比例共同决定。

  那么,如何选择一个最优的s呢?
  由于A和B是高斯分布,C是A和B按系数s的线性组合,则C也是高斯分布,如下图:
在这里插入图片描述

  这里我们认为:

方差最小的C对应着最优估计,也即其随机结果最接近目标真值,此时的s也称为最优的s

  问题转换: 求解最优估计输出—>求解最小方差对应的s
  求解过程:
1.C的方差为:

D ( C ) = D ( A + s ( B − A ) )                        = ( 1 − s ) 2 D ( A ) + s 2 D ( B ) (2) \begin{matrix} & D\left( C \right)=D\left( A+s\left( B-A \right) \right) \\ & \text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }={{\left( 1-s \right)}^{2}}D\left( A \right)+{{s}^{2}}D\left( B \right) \\ \end{matrix} \tag{2} D(C)=D(A+s(BA))                      =(1s)2D(A)+s2D(B)(2)

2.对其进行求导,导数为0即可求得使C的方差 最小的k:


d D ( C ) d k = − 2 ( 1 − s ) D ( A ) + 2 s D ( B ) = 0 s = D ( A ) D ( A ) + D ( B ) = σ A 2 σ A 2 + σ B 2 \begin{matrix} & \frac{dD\left( C \right)}{dk}=-2\left( 1-s \right)D\left( A \right)+2sD\left( B \right)=0 \\ & s=\frac{D\left( A \right)}{D\left( A \right)+D\left( B \right)}\text{=}\frac{\sigma _{A}^{2}}{\sigma _{A}^{2}+\sigma _{B}^{2}} \\ \end{matrix} dkdD(C)=2(1s)D(A)+2sD(B)=0s=D(A)+D(B)D(A)=σA2+σB2σA2

3.此时,C的最优估计输出和最小方差为:


C = A + s ( B − A ) (3) C=A+s\left( B-A \right)\tag{3} C=A+s(BA)(3)
D ( C ) = σ A 2 σ B 2 σ A 2 + σ B 2 = σ A 2 − s σ A 2 (4) D\left( C \right)=\frac{\sigma _{A}^{2}\sigma _{B}^{2}}{\sigma _{A}^{2}+\sigma _{B}^{2}}=\sigma _{A}^{2}-s\sigma _{A}^{2} \tag{4} D(C)=σA2+σB2σA2σB2=σA2sσA2(4)

当理解到这里时,你已经掌握的Kalman滤波的核心思想:两个高斯随机变量通过比例系数s融合为方差最小的最优估计,这里的s就是后面的卡尔曼增益

总结:
两个高斯随机变量A和B的最优融合结果为C,其分别满足:
A ∼ N ( μ A , σ A 2 ) A \sim N\left( {{\mu }_{A}},\sigma _{A}^{2} \right) AN(μA,σA2)
B ∼ N ( μ B , σ B 2 ) B \sim N\left( {{\mu }_{B}},\sigma _{B}^{2} \right) BN(μB,σB2)
C ∼ N ( μ A δ B 2 + μ B δ A 2 δ A 2 + δ B 2 , σ A 2 σ B 2 σ A 2 + σ B 2 ) C \sim N\left( \frac{\mu_A \delta_B^2 + \mu_B \delta_A^2}{\delta_A^2 + \delta_B^2} ,\frac{\sigma _{A}^{2}\sigma _{B}^{2}}{\sigma _{A}^{2}+\sigma _{B}^{2}} \right) CN(δA2+δB2μAδB2+μBδA2,σA2