扩展卡尔曼滤波器

1线性系统与非线性系统

  • 线性系统:状态变量和输出变量对于所有可能的输入变量和初始状态都满足叠加原理的系统。一个由线性元部件所组成的系统必是线性系统。但是,相反的命题在某些情况下可能不成立。线性系统的状态变量(或输出变量)与输入变量间的因果关系可用一组线性微分方程或差分方程来描述,这种方程称为系统的数学模型。
  • 非线性系统:一个系统,如果其输出不与其输入成正比,则它是非线性的。从数学上看,非线性系统的特征是叠加原理不再成立。叠加原理是指描述系统的方程的两个解之和仍为其解。叠加原理可以通过两种方式失效。其一,方程本身是非线性的。其二,方程本身虽然是线性的,但边界是未知的或运动的。
    上述定义来源 线性系统与非线性系统区别

2 一个非线性卡尔曼滤波器

使用了一个没有状态变换和控制信号的模型,但拥有过程噪声,单个传感器,和单个状态值 :

  • 模型
    x k = x k − 1 + w k x_{k}=x_{k-1}+w_k xk=xk1+wk
    z k = c x k + v k z_k=cx_k+v_k zk=cxk+vk
  • 预测
    x ^ k = x ^ k − 1 \hat x_k=\hat x_{k-1} x^k=x^k1
    p k = p k − 1 + q p_k=p_{k-1}+q pk=pk1+q
  • 更新
    g k = p k c ( c p k c + r ) − 1 g_k=p_kc(cp_kc+r)^{-1} gk=pkc(cpkc+r)1
    x ^ k ← x ^ k + g k ( z k − c x ^ k ) \hat x_k\leftarrow \hat x_k+g_k(z_k-c\hat x_k) x^kx^k+gk(zkcx^k)
    p k ← ( 1 − g k c ) p k p_k \leftarrow (1-g_kc)p_k pk(1gkc)pk
    相关参数说明参考这篇文章
    下面将传感器测量值的影响改为非线性,并且 c k c_k ck代表它对时间步长的一阶导数:
  • 模型
    x k = x k − 1 + w k x_{k}=x_{k-1}+w_k xk=xk1+wk
    z k = h ( x k ) + v k z_k=h(x_k)+v_k zk=h(xk)+vk
  • 预测
    x ^ k = x ^ k − 1 \hat x_k=\hat x_{k-1} x^k=x^k1
    p k = p k − 1 + q p_k=p_{k-1}+q pk=pk1+q
  • 更新
    g k = p k c k ( c p k c k + r ) − 1 g_k=p_kc_k(cp_kc_k+r)^{-1} gk=pkck(cpkck+r)1
    x ^ k ← x ^ k + g k ( z k − c x ^ k ) \hat x_k\leftarrow \hat x_k+g_k(z_k-c\hat x_k) x^kx^k+gk(zkcx^k)
    p k ← ( 1 − g k c k ) p k p_k \leftarrow (1-g_kc_k)p_k pk(1gkck)pk

3 计算导数

现在还有两个问题需要解决:
1.在并不知道显示函数时,如何从实际信号中计算一阶导数。
2. 如何推广我们的单值非线性状态/观测模型到多值系统。
这里求一阶导数如下:
f ( x ) ′ = lim ⁡ n → + ∞ f ( x + Δ x ) − f ( x ) Δ x f(x)^{'}=\lim_{n \to +\infty} \frac{f(x+\Delta x)-f(x)}{\Delta x} f(x)=n+limΔxf(x+Δx)f(x)
如果一个信号(像传感器值 z k z_k zk )是另一个信号(状态 x k x_k xk)的函数,我们能够用第一个信号的连续差值除以第二个信号的连续差值来表示不是关于时间的有限差分,而是分子关于分母中信号的有限差分 :
z k + 1 − z k x k + 1 − x k \frac{z_{k+1}-z_k}{x_{k+1}-x_k} xk+1xkzk+1zk

4 雅克比矩阵

接下来我们将解决3中的第二个问题,首先还是从线性系统分析,线性系统中传感器分量表示为:
z k = C x k z_k=Cx_k zk=Cxk对于一个非线性模型,同样存在这样一个矩阵,其行数等于传感器的数量,列数等于状态变量的个数。然而,这个矩阵将会包含传感器值对于相应状态值的一阶导数(线性近似)的当前值。数学家把它叫做偏导数,这些偏导数组成的矩阵称为雅可比矩阵。
上面我们已经将模型中的观测公式推广到非线性,这里,剩下的只有将状态变换公式推广到非线性。换句话说,线性模型中的:
x k = A x k − 1 + w k x_k=Ax_{k-1}+w_k xk=Axk1+wk
变为:
x k = f ( x k − 1 ) + w k x_k=f(x_{k-1})+w_k xk=f(xk1)+wk
其中 A A A被状态变换函数f的雅克比矩阵所代替,并且使用 H k H_k Hk代表传感器函数 h h h的雅克比矩阵,将控制信号 u k u_k uk合并到状态变换模型中,我们得到扩展卡尔曼滤波器的完整公式 :

  • 模型:
    x k = f ( x k − 1 , u k ) + w k x_k=f(x_{k-1},u_k)+w_k xk=f(xk1,uk)+wk
    z k = h ( x k ) + v k z_k=h(x_k)+v_k zk=h(xk)+vk
  • 预测:
    x ^ k = f ( x ^ k − 1 , u k ) \hat x_k=f(\hat x_{k-1},u_k) x^k=f(x^k1,uk)
    P k = F k P k − 1 F k T + Q k P_k=F_kP_{k-1}F_{k}^{T}+Q_k Pk=FkPk1FkT+Qk
  • 更新
    G k = P k H k ( H k P k H k T + R ) − 1 G_k=P_kH_k(H_kP_kH_k^T+R)^{-1} Gk=PkHk(HkPkHkT+R)1
    x ^ k ← x ^ k + G k ( z k − h ( x ^ k ) ) \hat x_k\leftarrow \hat x_k+G_k(z_k-h(\hat x_k)) x^kx^k+Gk(zkh(x^k))
    P k ← ( I − G k H k ) P k P_k \leftarrow (I-G_kH_k)P_k Pk(IGkHk)Pk
    这样就完成了扩展卡尔曼滤波器的构建。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值