卡尔曼滤波器:6.扩展卡尔曼滤波器

卡尔曼滤波器:6.扩展卡尔曼滤波器

卡尔曼滤波器是线性系统下最优的滤波器

这部分呢,讲一下,非线性环境下 扩展卡尔曼滤波器

对于非线性环境下的处理呢 有很多种处理方法,这部分就是讲最基础的方法,扩展卡尔曼滤波器的方式

非线性模型:

KaTeX parse error: No such environment: flalign* at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲*̲}̲ &x_k=f(x_{k-1}…

正太分布分随机变量通过非线性系统后就不再是正态的了

如果我们还想向这个系统使用卡尔曼滤波的话,就是要对该系统实现线性化

线性化 linerization

线性化会利用到泰勒展开(taylor series)
f ( x ) = f ( x 0 ) + δ f δ x ( x − x 0 ) f(x)=f(x_0)+\frac{\delta f}{\delta x}(x - x_0) f(x)=f(x0)+δxδf(xx0)
对于高纬度的来讲,就要用到雅可比矩阵(在非线性系统中有很详细的讲解)

最好的线性化的点 真实值 但是系统有误差,无法在真实点线性化

估计方程线性化

f ( x k ) f(x_k) f(xk) x ^ k − 1 \hat{x}_{k-1} x^k1附近线性化即k-1时刻的后验估计

因此线性化模型可以变成这样:
x k = f ( x ^ k − 1 , μ k − 1 , ω k − 1 ) + A ( x k − x ^ k − 1 ) + ω ω k − 1 x_k=f(\hat{x}_{k-1}, \mu_{k-1}, \omega_{k-1})+A(x_k-\hat{x}_{k-1})+\omega_{\omega_{k-1}}\\ xk=f(x^k1,μk1,ωk1)+A(xkx^k1)+ωωk1
误差为0,

f ( x ^ k − 1 , μ k − 1 , 0 ) = x ~ k f(\hat{x}_{k-1}, \mu_{k-1}, 0) = \widetilde{x}_k f(x^k1,μk1,0)=x k

A是雅可比矩阵
KaTeX parse error: No such environment: flalign* at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲*̲}̲ &A=\frac{\delt…
然后把 x ^ k − 1 , μ k − 1 \hat{x}_{k-1}, \mu_{k-1} x^k1,μk1代入进去就可以了

为了方便理解,举个栗子:(二维系统)
x 1 = x 1 + s i n ( x 2 ) = f 1 x 2 = x 1 2 = f 2 x_1=x_1+sin(x_2) = f_1\\ x_2=x_1^2=f_2 x1=x1+sin(x2)=f1x2=x12=f2

$$
\begin{align}

A&=\frac{\delta{f}}{\delta{x}}\
&=\left[\matrix{\frac{\delta{f_1}}{\delta{x_1}}&\frac{\delta{f_1}}{\delta{x_2}}\
\frac{\delta{f_2}}{\delta{x_1}}&\frac{\delta{f_2}}{\delta{x_2}}}\right]\
&=\left[\matrix{1&cos(x_2)\2x_1&0}\right]{|\hat{x}{1,k-1}, \hat{x}{2,k-1}}\
&=\left[\matrix{1&cos(\hat{x}
{2,k-1})\2\hat{x}_{1,k-1}&0}\right]
\end{align}
$$

这样就得到了一个A矩阵在K时刻的样子

因为A矩阵在随着k的变换而变化,因此我们每一个时刻K矩阵都在变化中每次都需要对该矩阵进行求解
KaTeX parse error: Undefined control sequence: \matrix at position 12: A_k=\left[\̲m̲a̲t̲r̲i̲x̲{1&cos(\hat{x}_…
同样的可以求解出来

ω k = δ f δ ω \omega_k = \frac{\delta{f}}{\delta{\omega}} ωk=δωδf

然后把 x ^ k − 1 , μ k − 1 \hat{x}_{k-1}, \mu_{k-1} x^k1,μk1代入进去就可以了

测量方程线性化

z k z_k zk x ~ k \widetilde{x}_k x k线性化
z k = h ( x ~ k , ν k ) + H ( x k − x ~ k ) + ν ν k z_k=h(\widetilde{x}_k,\nu_k)+H(x_k-\widetilde{x}_k)+\nu_{\nu_k} zk=h(x kνk)+H(xkx k)+ννk
h ( x ~ k − 1 , 0 ) = z ~ k h(\widetilde{x}_{k-1}, 0) = \widetilde{z}_k h(x k1,0)=z k

H = δ h δ x ∣ x ~ k H = \frac{\delta{h}}{\delta{x}}_{|\widetilde{x}_k} H=δxδhx k

ν = δ h δ ν ∣ x ~ k \nu=\frac{\delta{h}}{\delta{\nu}}_{|\widetilde{x}_k} ν=δνδhx k

综合

x k = x ~ k + A ( x k − 1 − x ^ k − 1 ) + ω ω k − 1 z k = z ~ k + H ( x k − x ~ k ) + ν ν k x_k=\widetilde{x}_k+A(x_{k-1}-\hat{x}_{k-1})+\omega_{\omega_{k-1}}\\ z_k=\widetilde{z}_k+H(x_k-\widetilde{x}_k)+\nu_{\nu_k} xk=x k+A(xk1x^k1)+ωωk1zk=z k+H(xkx k)+ννk

其中
P ( ω ) ∼ N ( 0 , Q ) P ( ω ω ) ∼ N ( 0 , ω Q ω T ) P ( ν ν ) ∼ N ( 0 , ν R ν T ) P(\omega)\sim N(0,Q)\\ P(\omega_{\omega})\sim N(0,\omega Q \omega^T)\\ P(\nu_{\nu}) \sim N(0, \nu R \nu^T) P(ω)N(0,Q)P(ωω)N(0,ωQωT)P(νν)N(0,νRνT)
后面就可以用之前的方式进行推导了

公式

预测更新
先验 x ^ k − = f ( x ^ k − 1 , μ k − 1 , 0 ) \hat{x}^-_k= f(\hat{x}_{k-1}, \mu_{k-1},0) x^k=f(x^k1,μk1,0)卡尔曼增益 K k = P k − H T H P k − H T + ν R ν T K_k=\frac{P^-_kH^T}{HP^-_kH^T+\nu R\nu^T} Kk=HPkHT+νRνTPkHT
先验误差协方差 P k − = A P k − 1 A T + ω Q ω T P^-_k=AP_{k-1}A^T+\omega Q\omega^T Pk=APk1AT+ωQωT后验估计 x ^ k = x ^ k − + K k ( z k − h ( x ^ k − , 0 ) ) \hat{x}_k=\hat{x}^-_k + K_k(z_k - h(\hat{x}^-_k,0)) x^k=x^k+Kk(zkh(x^k,0))
更新误差协方差 P k = ( I − K k H ) P k − P_k=(I-K_kH)P^-_k Pk=(IKkH)Pk
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值