组合导航原理剖析(五):kalman滤波在惯性导航中的应用相关推导过程

简明ESKF推导

1. 线性kalman滤波器与扩展kalman滤波器

本质上kalman滤波可以看成是一个递归滤波器。在信号处理领域,递归滤波器也被成为IIR滤波器,有着明确的系数和传递函数,而kalman滤波器是一个增益不断迭代变化的递归滤波器。卡尔曼滤波所采用的增益是随时间变化逐渐趋近于稳定的,当滤波器收敛之后,理论上系统可以得到状态值的最优后验估计。

s t e p 1 : 计算 k a l m a n 增益 : K k = e k − 1 E S T e k − 1 E S T + e k M E A step1:计算kalman增益:K_k=\frac{e^{EST}_{k-1}}{e^{EST}_{k-1}+e^{MEA}_k} step1:计算kalman增益:Kk=ek1EST+ekMEAek1EST

s t e p 2 : 计算: x ^ k = x ^ k − 1 + K k ( z k − x ^ k − 1 ) step2:计算:\hat x_k=\hat x_{k-1}+K_k(z_k-\hat x_{k-1}) step2:计算:x^k=x^k1+Kk(zkx^k1)

e k E S T = ( 1 − K k ) e k − 1 E S T e^{EST}_k=(1-K_k)e^{EST}_{k-1} ekEST=(1Kk)ek1EST

首先,定义线性系统表示为:

x k = A x k − 1 + B u k − 1 + w k − 1 z k = H k − 1 + v k \begin{array}{l}{{\rm{x}}_k} = A{x_{k - 1}} + B{u_{k - 1}} + {w_{k - 1}}\\{z_k} = {H_{k - 1}} + {v_k}\end{array} xk=Axk1+Buk1+wk1zk=Hk1+vk

误差可以表示为:

P ( w ) ∼ N ( 0 , Q ) P ( v ) ∼ N ( 0 , R ) \begin{array}{l} P(w) \sim N(0,Q)\\ P(v) \sim N(0,R) \end{array} P(w)N(0,Q)P(v)N(0,R)

预测方程表示为:

x ^ k − = A x ^ k − 1 + B u k − 1 P k − = A P k − 1 A T + Q \begin{array}{l}\hat x_k^ - = A{{\hat x}_{k - 1}} + B{u_{k - 1}}\\P_k^ - = A{P_{k - 1}}{A^T} + Q\end{array} x^k=Ax^k1+Buk1Pk=APk1AT+Q

更新方程表示为:

K k = P k − H T H P k − H T + R x ^ k = x ^ k − + K k ( z k − H x ^ k − ) P k = ( I − K k H ) P k − \begin{array}{l}{K_k} = \frac{{P_k^ - {H^T}}}{{HP_k^ - {H^T} + R}}\\{{\hat x}_k} = \hat x_k^ - + {K_k}({z_k} - H\hat x_k^ - )\\{P_k} = (I - {K_k}H)P_k^ - \end{array} Kk=HPkHT+RPkHTx^k=x^k+Kk(zkHx^k)Pk=(IKkH)Pk

实际情况下,系统常常是非线性的。假设非线性系统表示为

x k = f ( x k − 1 , u k − 1 , w k − 1 ) z k = h ( x k , v k ) x_k=f(x_{k-1},u_{k-1},w_{k-1})\\z_k=h(x_k,v_k) xk=f(xk1,uk1,wk1)zk=h(xk,vk)

设计非线性kalman滤波系统,也就是扩展kalman滤波系统,首先需要对非线性系统进行线性化,其中线性化的点被称为**“operating point**”,通常认为选取真实点作为**“operating point**”是最合适的。但由于误差的存在真实值往往是未知的。因此采用泰勒展开的方式将更新矩阵在 x ^ k − 1 \hat x_{k-1} x^k1处线性化,可以表示为(其中 x ^ k − 1 \hat x_{k-1} x^k1为k-1时刻的后验估计值)

x k = f ( x ^ k − 1 , u k − 1 , w k − 1 ) + A ( x k − x ^ k − 1 ) + W k w k − 1 x_k=f(\hat x_{k-1},u_{k-1},w_{k-1})+A(x_k-\hat x_{k-1})+W_kw_{k-1} xk=f(x^k1,uk1,wk1)+A(xkx^k1)+Wkwk1

那么假设 w k − 1 w_{k-1} wk1为0,有 x ~ k = f ( x ^ k − 1 , u k − 1 , 0 ) \tilde x_k=f(\hat x_{k-1},u_{k-1},0) x~k=f(x^k1,uk1,0),假设 v k v_{k} vk为0,有 z ~ k = h ( x ~ k , 0 ) \tilde z_k=h(\tilde x_k,0) z~k=h(x~k,0)。另外,雅克比矩阵表示为

A = ∂ f ∂ x ∣ x ^ k − 1 , u k − 1 W k = ∂ f ∂ w ∣ x ^ k − 1 , u k − 1 A=\frac{\partial f}{\partial x}|\hat x_{k-1},u_{k-1}\\W_k=\frac{\partial f}{\partial w}|\hat x_{k-1},u_{k-1} A=xfx^k1,uk1Wk=wfx^k1,uk1

其中A为状态量 x k x_k xk对状态量 x k − 1 x_{k-1} xk1的雅克比矩阵, W k W_k Wk为状态量 x k x_k xk对误差 w k − 1 w_{k-1} wk1的雅克比矩阵。

观测方程在 x ~ k \tilde x_k x~k处线性化,可以表示为

z k = z ~ k + H ( x k − x ~ k − 1 ) + V k v k − 1 z_k=\tilde z_k+H(x_k-\tilde x_{k-1})+V_kv_{k-1} zk=z~k+H(xkx~k1)+Vkvk1

雅克比矩阵表示为

H k = ∂ h ∂ x ∣ x ~ k V k = ∂ h ∂ v ∣ x ~ k H_k=\frac{\partial h}{\partial x}|\tilde x_k\\V_k=\frac{\partial h}{\partial v}|\tilde x_k Hk=xhx~kVk=vhx~k

协方差矩阵表示为

P ( w ) − N ( 0 , Q ) P ( W w ) − N ( 0 , W Q W T ) P ( v ) − N ( 0 , R ) P ( V v ) − N ( 0 , V R V T ) P(w)-N(0,Q)\\P(Ww)-N(0,WQW^T)\\P(v)-N(0,R)\\P(Vv)-N(0,VRV^T) P(w)N(0,Q)P(Ww)N(0,WQWT)P(v)N(0,R)P(Vv)N(0,VRVT)

扩展卡尔曼滤波可以表示为

x ^ k − = f ( x ^ k − 1 , u k − 1 , 0 ) P k − = A P k − 1 A T + W Q W T \hat x_k^-=f(\hat x_{k-1},u_{k-1},0)\\P^-_k=AP_{k-1}A^T+WQW^T x^k=f(x^k1,uk1,0)Pk=APk1AT+WQWT

更新方程表示为

K k = P k − H T H P k − H T + V R V T {K_k} = \frac{{P_k^ - {H^T}}}{{HP_k^ - {H^T} + VRV^T}} Kk=HPkHT+VRVTPkHT

x ^ k = x ^ k − + K k ( z k − h ( x ^ k − , 0 ) ) P k = ( I − K k H ) P k − {{\hat x}_k} = \hat x_k^ - + {K_k}({z_k} - h(\hat x_k^-,0) )\\{P_k} = (I - {K_k}H)P_k^ - x^k=x^k+Kk(zkh(x^k,0))Pk=(IKkH)Pk

2. 误差状态扩展卡尔曼滤波器

导航的目的通常是估计或者测量系统的位置、姿态、速度状态,还可能包含一些未准确标定、待确定的参数,比如杆臂、零偏等等。常见的导航方式则采用误差状态估计的方式,去代替直接的状态估计,因此又被成为间接的误差状态估计。在文献Quaternion kinematics for the error-state Kalman filter中总结过这种方式的优势。

因此,整个组合导航过程分成了两个步骤:1.根据机械编排公式更新状态量,包括位置、速度、姿态等,得到标称值。2. kalman滤波估计误差状态值,将误差状态值补偿至标称值,得到修正之后的测量值。在第2步中,实际计算时将上面公式中的 x ^ k \hat x_k x^k替换成 δ x = [ δ θ , δ v , δ p ] T \delta x=[\delta \theta , \delta v, \delta p]^T δx=[δθ,δv,δp]T,那么状态转移矩阵就变成了

A = ∂ f ∂ δ x ∣ x ^ k − 1 , u k − 1 W k = ∂ f ∂ δ w ∣ x ^ k − 1 , u k − 1 A=\frac{\partial f}{\partial \delta x}|\hat x_{k-1},u_{k-1}\\W_k=\frac{\partial f}{\partial \delta w}|\hat x_{k-1},u_{k-1} A=δxfx^k1,uk1Wk=δwfx^k1,uk1

对于一般的非线性系统 x k = f ( x k − 1 , u k − 1 ) x_k=f(x_{k-1},u_{k-1}) xk=f(xk1,uk1),应用泰勒展开,将状态量进行误差化可以表示为下式

x k = f ( x k − 1 , u k − 1 ) x ^ k + δ x k = f ( x ^ k − 1 + δ x k − 1 , u k − 1 + n k − 1 ) x ^ k + δ x k = f ( x ^ k − 1 , u ^ k − 1 ) + F δ x k − 1 + G n k − 1 x_k=f(x_{k-1},u_{k-1})\\\hat x_k+\delta x_k=f(\hat x_{k-1}+\delta x_{k-1},u_{k-1}+n_{k-1})\\\hat x_k+\delta x_k=f(\hat x_{k-1},\hat u_{k-1}) + F\delta x_{k-1}+Gn_{k-1} xk=f(xk1,uk1)x^k+δxk=f(x^k1+δxk1,uk1+nk1)x^k+δxk=f(x^k1,u^k1)+Fδxk1+Gnk1

如果能够知道误差随时间变化的导数关系,也可以将其离散化之后得到误差传播方程

δ x ˙ = A δ x + B n \delta \dot x=A\delta x+Bn δx˙=Aδx+Bn

那么有关系: F = ( I + A Δ t )        G = B Δ t F=(I+A\Delta t)\;\;\;G=B\Delta t F=(I+AΔt)G=BΔt

上面的表示方式有一定优势,也更加简洁。惯性测量中运动学方程或者比力方程是已知的,比如

v ˙ = R a b + g \dot{\mathbf{v}}=\mathbf{R} \mathbf{a}^{b}+\mathbf{g} v˙=Rab+g

那么就可以直接推导误差量岁时间变化的关系

v ˙ + δ v ˙ = R ( I + [ δ θ ] × ) ( a b + δ a b ) + g + δ g δ v ˙ = R δ a b + R [ δ θ ] × ( a b + δ a b ) + δ g δ ˙ v = R δ a b − R [ a b ] × δ θ + δ g \begin{aligned}\dot{\mathbf{v}}+\dot{\delta \mathbf{v}} &=\mathbf{R}\left(\mathbf{I}+[\delta \boldsymbol{\theta}]_{\times}\right)\left(\mathbf{a}^{b}+\delta \mathbf{a}^{b}\right)+\mathbf{g}+\delta \mathbf{g} \\\dot{\delta \mathbf{v}} &=\mathbf{R} \delta \mathbf{a}^{b}+\mathbf{R}[\delta \boldsymbol{\theta}]_{\times}\left(\mathbf{a}^{b}+\delta \mathbf{a}^{b}\right)+\delta \mathbf{g} \\\dot{\delta} \mathbf{v} &=\mathbf{R} \delta \mathbf{a}^{\mathbf{b}}-\mathbf{R}\left[\mathbf{a}^{b}\right]_{\times} \delta \boldsymbol{\theta}+\delta \mathbf{g}\end{aligned} v˙+δv˙δv˙δ˙v=R(I+[δθ]×)(ab+δab)+g+δg=Rδab+R[δθ]×(ab+δab)+δg=RδabR[ab]×δθ+δg

再将上式进行离散化,同样可以得到误差状态量的离散传递方程。

3. 量测更新修正

观测方程中,由于采用误差状态量作为待估计对象,因此将观测方程对 δ x \delta x δx求偏导得到观测矩阵 H H H。SLAM的方法中,求导方式可以采用链式法则。这一块的内容与运动学方程的计算方式接近,不再赘述。

H = ∂ h ∂ δ x = ∂ h ∂ x ∂ x ∂ δ x {\rm{H = }}\frac{{\partial h}}{{\partial \delta x}} = \frac{{\partial h}}{{\partial x}}\frac{{\partial x}}{{\partial \delta x}} H=δxh=xhδxx
以上,有助于理解在组合导航应用中kalman滤波计算的实际含义。

  • 12
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

擦擦擦大侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值