卡尔曼滤波

卡尔曼滤波的设计过程中需要定义两个变量,一个是状态量,另一个是观测量

状态量

  • 状态量是跟踪目标。将状态量记作xn\mathbf{x}_nxn,状态量的协方差矩阵记作Pn\mathbf{P}_nPn,可以由前一个时刻的状态,估计当前的状态
  • 估计过程表示为:xn=Fnxn−1\mathbf{x}_n=\mathbf{F}_n\mathbf{x}_{n-1}xn=Fnxn1,其中xn\mathbf{x}_nxn是一个N∗1N*1N1的列向量(小写粗体),Fn\mathbf{F}_nFn是一个N∗NN*NNN的矩阵(大写粗体)
  • 数学理论:若xn\mathbf{x}_nxn的协方差矩阵为Pn\mathbf{P}_nPn,那么Fnxn\mathbf{F}_n\mathbf{x}_nFnxn的协方差矩阵为FnPnFnT\mathbf{F}_n\mathbf{P}_n\mathbf{F}_n^TFnPnFnT
  • Pn=cov(xn)=cov(Fnxn−1)=FnPn−1FnT+Q\mathbf{P}_n=cov(\mathbf{x}_n)=cov(\mathbf{F}_n\mathbf{x}_{n-1})=\mathbf{F}_n\mathbf{P}_{n-1}\mathbf{F}_n^T+\mathbf{Q}Pn=cov(xn)=cov(Fnxn1)=FnPn1FnT+Q,其中Q\mathbf{Q}Q是为了增加协方差矩阵的不确定性

观测量

  • 由观测量可以预测状态量。将观测量记作zn\mathbf{z}_nzn,观测量的协方差矩阵记作Rn\mathbf{R}_nRn,观测量与状态量之间存在映射关系
  • 映射关系表示为:zn=Hnxn\mathbf{z}_n=\mathbf{H}_n\mathbf{x}_nzn=HnxnRn=HnPnHnT\mathbf{R}_n=\mathbf{H}_n\mathbf{P}_n\mathbf{H}_n^TRn=HnPnHnT,其中zn\mathbf{z}_nzn是一个M∗1M*1M1的列向量,Rn\mathbf{R}_nRn是一个M∗MM*MMM的矩阵,Hn\mathbf{H}_nHn是一个M∗NM*NMN的矩阵
  • 根据前一个时刻的状态可以估计当前的状态,根据观测量可以映射出当前的状态,但是这两种方法可能都不够准确,因此需要对它们俩的估计结果取一个交集
  • 根据两个量的均值和协方差矩阵,得到状态量和观测量的分布,然后计算联合分布,将其作为新的状态量

在这里插入图片描述

联合分布的更新过程

  • 卡尔曼增益
    Kn=PnHnT(HnPnHnT+Rn)−1 \mathbf{K}_n=\mathbf{P}_n\mathbf{H}_n^T(\mathbf{H}_n\mathbf{P}_n\mathbf{H}_n^T+\mathbf{R}_n)^{-1} Kn=PnHnT(HnPnHnT+Rn)1
  • 估计过程
    xn+1=xn+Kn(zn−Hnxn) \mathbf{x}_{n+1}=\mathbf{x}_{n}+\mathbf{K}_n(\mathbf{z}_n-\mathbf{H}_n\mathbf{x}_n) xn+1=xn+Kn(znHnxn)
  • 协方差矩阵
    Pn+1=Pn−KnHnPn \mathbf{P}_{n+1}=\mathbf{P}_{n}-\mathbf{K}_n\mathbf{H}_n\mathbf{P}_n Pn+1=PnKnHnPn

具体到AEC任务

  • 卡尔曼滤波预测公式
    xn=Fnxn−1Pn=FnPn−1FnT+Q \begin{aligned} \mathbf{x}_n&=\mathbf{F}_n\mathbf{x}_{n-1} \\ \mathbf{P}_n&=\mathbf{F}_n\mathbf{P}_{n-1}\mathbf{F}_n^T+\mathbf{Q} \end{aligned} xnPn=Fnxn1=FnPn1FnT+Q
  • 卡尔曼滤波更新公式
    Kn=PnHnT(HnPnHnT+Rn)−1xn+1=xn+Kn(zn−Hnxn)Pn+1=Pn−KnHnPn \begin{aligned} \mathbf{K}_n&=\mathbf{P}_n\mathbf{H}_n^T(\mathbf{H}_n\mathbf{P}_n\mathbf{H}_n^T+\mathbf{R}_n)^{-1} \\ \mathbf{x}_{n+1}&=\mathbf{x}_{n}+\mathbf{K}_n(\mathbf{z}_n-\mathbf{H}_n\mathbf{x}_n) \\ \mathbf{P}_{n+1}&=\mathbf{P}_{n}-\mathbf{K}_n\mathbf{H}_n\mathbf{P}_n \end{aligned} Knxn+1Pn+1=PnHnT(HnPnHnT+Rn)1=xn+Kn(znHnxn)=PnKnHnPn
  • AEC的预测目标是回声路径wn\mathbf{w}_nwn,假设回声路径是稳定的,可由N阶线性滤波器模拟,那么wn=wn−1\mathbf{w}_n=\mathbf{w}_{n-1}wn=wn1wn\mathbf{w}_nwn是一个N∗1N*1N1的列向量,取xn=wn\mathbf{x}_n=\mathbf{w}_{n}xn=wn,从而Fn=I\mathbf{F}_{n}=\mathbf{I}Fn=IPn=Pn−1+Q\mathbf{P}_{n}=\mathbf{P}_{n-1}+\mathbf{Q}Pn=Pn1+Q
  • AEC的滤波输出e(n)=d(n)−wnTxne(n)=d(n)-\mathbf{w}_n^T\mathbf{x}_ne(n)=d(n)wnTxn,其中d(n)d(n)d(n)是麦克风当前接收信号,xn\mathbf{x}_nxn是参考信号,同样为N∗1N*1N1的列向量
  • AEC的观测量是麦克风当前接收信号d(n)d(n)d(n)d(n)=xnTwn+e(n)d(n)=\mathbf{x}_n^T\mathbf{w}_n+e(n)d(n)=xnTwn+e(n),取zn=d(n)\mathbf{z}_n=d(n)zn=d(n),从而Hn=xnT\mathbf{H}_n=\mathbf{x}_{n}^THn=xnT(将e(n)e(n)e(n)的期望视作0,zn=Hnxn\mathbf{z}_n=\mathbf{H}_n\mathbf{x}_nzn=Hnxn),Rn=e(n)2+δ\mathbf{R}_n=e(n)^2+\deltaRn=e(n)2+δ,其中δ\deltaδ是小常数
  • 注意:因为zn=d(n)\mathbf{z}_n=d(n)zn=d(n),所以此时的zn\mathbf{z}_nzn是一个常数,从而Rn\mathbf{R}_nRn也是一个常数,Hn\mathbf{H}_nHn是一个1∗N1*N1N的行向量
  • 代入更新公式
    Kn=Pnxn(xnTPnxn+Rn)−1wn+1=wn+Kn(d(n)−xnTwn)=wn+Kne(n)Pn+1=Pn−KnxnTPn \begin{aligned} \mathbf{K}_n&=\mathbf{P}_n\mathbf{x}_n(\mathbf{x}_n^T\mathbf{P}_n\mathbf{x}_n+\mathbf{R}_n)^{-1} \\ \mathbf{w}_{n+1}&=\mathbf{w}_{n}+\mathbf{K}_n(d(n)-\mathbf{x}_n^T\mathbf{w}_n)=\mathbf{w}_{n}+\mathbf{K}_{n}e(n) \\ \mathbf{P}_{n+1}&=\mathbf{P}_{n}-\mathbf{K}_n\mathbf{x}_n^T\mathbf{P}_n \end{aligned} Knwn+1Pn+1=Pnxn(xnTPnxn+Rn)1=wn+Kn(d(n)xnTwn)=wn+Kne(n)=PnKnxnTPn
  • 综合
    Pn=Pn−1+Qe(n)=d(n)−wnTxnRn=e(n)2+δKn=Pnxn(xnTPnxn+Rn)−1wn+1=wn+Kne(n)Pn+1=Pn−KnxnTPn \begin{aligned} \mathbf{P}_{n}&=\mathbf{P}_{n-1}+\mathbf{Q} \\ e(n)&=d(n)-\mathbf{w}_{n}^T\mathbf{x}_{n} \\ \mathbf{R}_n&=e(n)^2+\delta \\ \mathbf{K}_n&=\mathbf{P}_n\mathbf{x}_n(\mathbf{x}_n^T\mathbf{P}_n\mathbf{x}_n+\mathbf{R}_n)^{-1} \\ \mathbf{w}_{n+1}&=\mathbf{w}_{n}+\mathbf{K}_{n}e(n) \\ \mathbf{P}_{n+1}&=\mathbf{P}_{n}-\mathbf{K}_n\mathbf{x}_n^T\mathbf{P}_n \end{aligned} Pne(n)RnKnwn+1Pn+1=Pn1+Q=d(n)wnTxn=e(n)2+δ=Pnxn(xnTPnxn+Rn)1=wn+Kne(n)=PnKnxnTPn
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐