1线性系统与非线性系统
- 线性系统:状态变量和输出变量对于所有可能的输入变量和初始状态都满足叠加原理的系统。一个由线性元部件所组成的系统必是线性系统。但是,相反的命题在某些情况下可能不成立。线性系统的状态变量(或输出变量)与输入变量间的因果关系可用一组线性微分方程或差分方程来描述,这种方程称为系统的数学模型。
- 非线性系统:一个系统,如果其输出不与其输入成正比,则它是非线性的。从数学上看,非线性系统的特征是叠加原理不再成立。叠加原理是指描述系统的方程的两个解之和仍为其解。叠加原理可以通过两种方式失效。其一,方程本身是非线性的。其二,方程本身虽然是线性的,但边界是未知的或运动的。
上述定义来源 线性系统与非线性系统区别
2 一个非线性卡尔曼滤波器
使用了一个没有状态变换和控制信号的模型,但拥有过程噪声,单个传感器,和单个状态值 :
- 模型
x k = x k − 1 + w k x_{k}=x_{k-1}+w_k xk=xk−1+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^k−1
p k = p k − 1 + q p_k=p_{k-1}+q pk=pk−1+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^k←x^k+gk(zk−cx^k)
p k ← ( 1 − g k c ) p k p_k \leftarrow (1-g_kc)p_k pk←(1−gkc)pk
相关参数说明参考这篇文章
下面将传感器测量值的影响改为非线性,并且 c k c_k ck代表它对时间步长的一阶导数: - 模型
x k = x k − 1 + w k x_{k}=x_{k-1}+w_k xk=xk−1+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^k−1
p k = p k − 1 + q p_k=p_{k-1}+q pk=pk−1+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^k←x^k+gk(zk−cx^k)
p k ← ( 1 − g k c k ) p k p_k \leftarrow (1-g_kc_k)p_k pk←(1−gkck)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+1−xkzk+1−zk
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=Axk−1+wk
变为:
x
k
=
f
(
x
k
−
1
)
+
w
k
x_k=f(x_{k-1})+w_k
xk=f(xk−1)+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(xk−1,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^k−1,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=FkPk−1FkT+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^k←x^k+Gk(zk−h(x^k))
P k ← ( I − G k H k ) P k P_k \leftarrow (I-G_kH_k)P_k Pk←(I−GkHk)Pk
这样就完成了扩展卡尔曼滤波器的构建。