卡尔曼滤波器的数学推导

本文从概率论中的贝叶斯准则和全概率公式出发,详细推导了卡尔曼滤波器的数学模型,包括先验和后验概率的计算,以及卡尔曼增益的推导。

前言:这可能是网上最数学化的推导了,相较于其他的推导方法在数学上更加完备,这意味着对于其他的非线性滤波器如EKF或者信息滤波器IF很多其他地方都可以采用同样的方法进行推导,一通百通。本文的卡尔曼滤波器的推导从最基础的概率论中的贝叶斯准则和全概率公式推起,一步一步的完成卡尔曼滤波器,适合对卡尔曼有一定概念上的理解希望深入学习滤波器方法的同学。

卡尔曼滤波算法

μˉt=Atμt−1+Btut \bar{\mu}_t = A_t \mu_{t-1} + B_t u_t μˉt=Atμt1+Btut
Σˉt=AtΣt−1AtT+Rt \bar{\Sigma}_t = A_t \Sigma_{t-1} A_t^T + R_t Σˉt=AtΣt1AtT+Rt
Kt=ΣˉtCtT(CtΣˉtCtT+Qt)−1 K_t = \bar{\Sigma}_t C_t^T(C_t \bar{\Sigma}_t C_t^T + Q_t)^{-1} Kt=ΣˉtCtT(CtΣˉtCtT+Qt)1
μt=μˉt+Kt(zt−Ctμˉt) \mu_t = \bar{\mu}_t + K_t (z_t-C_t \bar{\mu}_t) μt=μˉt+Kt(ztCtμˉt)
Σt=(I−KtCt)Σˉt \Sigma_t = (I-K_t C_t)\bar{\Sigma}_t Σt=(IKtCt)Σˉt

推导过程:

先验条件

贝叶斯准则:
p(x∣y,z)=p(y∣x,z)p(x∣z)p(y∣z) p(x|y,z)=\frac{p(y|x,z)p(x|z)}{p(y|z)} p(xy,z)=p(yz)p(yx,z)p(xz)
全概率公式:
p(x)=∫p(x∣y)p(y)dy p(x) = \int p(x|y)p(y) dy p(x)=p(xy)p(y)dy
马尔可夫性:认为xt−1x_{t-1}xt1zt−1z_{t-1}zt1ut−1u_{t-1}ut1的最优估计

贝叶斯滤波器推导

p(xt∣z1:t,u1:t)=p(xt∣zt,z1:t−1,u1:t)(套用贝叶斯准则)=p(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)p(zt∣z1:t−1,u1:t)(分母与xt无关)=ηp(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)(马尔可夫性)=ηp(zt∣xt)p(xt∣z1:t−1,u1:t)(区分先验后验) p(x_t|z_{1:t},u_{1:t})=p(x_t|z_t,z_{1:t-1},u_{1:t}) (套用贝叶斯准则) \\ =\frac{p(z_t|x_t,z_{1:t-1},u_{1:t})p(x_t|z_{1:t-1},u_{1:t})}{p(z_t|z_{1:t-1},u_{1:t})}(分母与x_t无关)\\ =\eta p(z_t|x_t,z_{1:t-1},u_{1:t})p(x_t|z_{1:t-1},u_{1:t}) (马尔可夫性)\\ =\eta p(z_t|x_t)p(x_t|z_{1:t-1},u_{1:t}) (区分先验后验) \\ p(xtz1:t,u1:t)=p(xtzt,z1:t1,u1:t)()=p(ztz1:t1,u1:t)p(ztxt,z1:t1,u1:t)p(xtz1:t1,u1:t)(xt)=ηp(ztxt,z1:t1,u1:t)p(xtz1:t1,u1:t)()=ηp(ztxt)p(xtz1:t1,u1:t)()
对于先验分布p(xt∣z1:t−1,u1:t)p(x_t|z_{1:t-1},u_{1:t})p(xtz1:t1,u1:t)带入全概率公式
bel‾(xt)=p(xt∣z1:t−1,u1:t)=∫p(xt∣xt−1,z1:t−1,u1:t)p(xt−1∣z1:t−1,u1:t)dxt−1 \overline{bel}(x_t) = p(x_t|z_{1:t-1},u_{1:t}) \\ = \int p(x_t|x_{t-1},z_{1:t-1},u_{1:t})p(x_{t-1}|z_{1:t-1},u_{1:t})d x_{t-1} bel(xt)=p(xtz1:t1,u1:t)=p(xtxt1,z1:t1,u1:t)p(xt1z1:t1,u1:t)dxt1
最终得到先验和后验公式

先验:
bel‾(xt)=∫p(xt∣xt−1,z1:t−1,u1:t)p(xt−1∣z1:t−1,u1:t)dxt−1 \overline{bel}(x_t) = \int p(x_t|x_{t-1},z_{1:t-1},u_{1:t})p(x_{t-1}|z_{1:t-1},u_{1:t})d x_{t-1} bel(xt)=p(xtxt1,z1:t1,u1:t)p(xt1z1:t1,u1:t)dxt1
后验:
bel(xt)=ηp(zt∣xt)bel‾(xt) bel(x_t)=\eta p(z_t|x_t)\overline{bel}(x_t) bel(xt)=ηp(ztxt)bel(xt)

卡尔曼滤波器推导

根据贝叶斯滤波器带入线性的模型,推导得到卡尔曼滤波器。

模型

预测方程:
xt=Atxt−1+Btut+ϵt x_t=A_t x_{t-1} + B_t u_t + \epsilon_t xt=Atxt1+Btut+ϵt
xt=(x1,tx2,t⋮xn,t)ut=(u1,tu2,t⋮um,t) x_{t}=\left(\begin{array}{c} x_{1, t} \\ x_{2, t} \\ \vdots \\ x_{n, t} \end{array}\right) \boldsymbol{u}_{t}=\left(\begin{array}{c} u_{1, t} \\ u_{2, t} \\ \vdots \\ u_{m, t} \end{array}\right) xt=x1,tx2,txn,tut=u1,tu2,tum,t

观测方程:
zt=Ctxt+δt z_{t}=C_{t} x_{t}+\delta_{t} zt=Ctxt+δt

预测

根据贝叶斯滤波器的先验公式
bel‾(xt)=∫p(xt∣xt−1,ut)⏟∼N(xt;Atxt−1+Btut,Rt)bel(xt−1)⏟∼N(xt−1;μt−1,Σt−1)dxt−1\overline{\mathrm{bel}}\left(x_{t}\right)=\int \underbrace{p\left(x_{t} | x_{t-1}, u_{t}\right)}_{\sim N\left(x_{t} ; A_{t} x_{t-1}+B_{t} u_{t}, R_{t}\right)} \underbrace{\mathrm{bel}\left(x_{t-1}\right)}_{\sim N\left(x_{t-1} ; \mu_{t-1}, \Sigma_{t-1}\right)} \mathrm{d} x_{t-1}bel(xt)=N(xt;Atxt1+Btut,Rt) p(xtxt1,ut)N(xt1;μt1,Σt1) bel(xt1)dxt1
其中,t-1时刻bel(xt−1)bel(x_{t-1})bel(xt1)的概率分布为高斯分布,均值为μt−1\mu_{t-1}μt1,方差为Σt−1\Sigma_{t-1}Σt1

bel‾(xt)=η∫exp{ −12(xt−Atxt−1−Btut)TRt−1(xt−Atxt−1−Btut)}exp{ −12(xt−1−μt−1)TΣt−1−1(xt−1−μt−1)} \overline{bel}(x_t) = \eta \int exp \left \{ -\frac{1}{2} (x_t-A_t x_{t-1}-B_t u_t)^TR_{t}^{-1}(x_t-A_t x_{t-1}-B_t u_t)\right\}exp\left \{ -\frac{1}{2}(x_{t-1}-\mu_{t-1})^T \Sigma_{t-1}^{-1}(x_{t-1}-\mu_{t-1})\right\} bel(xt)=ηexp{ 21(xtAtxt1Btut)TRt1(xtAtxt1Btut)}exp{ 21(xt

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值