线性连续时间状态空间模型的离散化(Discretization of Linear Continuous-Time State-Space Models)

1 .状态空间模型

非线性连续时间状态空间模型
x ˙ ( t ) = f ( x ( t ) ) + B w ( x ( t ) ) w ( t ) y n = g ( x n ) + r n \begin{aligned}\dot{\bm x}(t) &= f(x(t))+ \bm B_w(x(t))\bm w(t) \\ \bm y_n &= g(x_n)+r_n\end{aligned} x˙(t)yn=f(x(t))+Bw(x(t))w(t)=g(xn)+rn
线性离散时间状态空间模型
x n = F x n − 1 + B q q n y n = G x n + r n \begin{aligned}\bm x_n &= \bm Fx_{n-1}+\bm B_q\bm q_n \\ \bm y_n &= \bm Gx_n+\bm r_n \end{aligned} xnyn=Fxn1+Bqqn=Gxn+rn
非线性离散时间状态空间模型
x n = f ( x n − 1 ) + B q ( x n − 1 ) q n y n = g ( x n ) + r n \begin{aligned}\bm x_n &=f(x_{n-1})+\bm B_q(x_{n-1})\bm q_n \\ \bm y_n & =g(x_n)+\bm r_n \end{aligned} xnyn=f(xn1)+Bq(xn1)qn=g(xn)+rn

示例:Quasi-Constant Turn Model in 2D 二维准常数转弯模型
  • 车辆在位置 p ( t ) p(t) p(t), 速度为 v ( t ) v(t) v(t), 方位角(航向角) φ ( t ) \varphi(t) φ(t)
  • 状态向量 x = [ p x ( t ) p y ( t ) v ( t ) φ ( t ) ] x = \begin{bmatrix} p^x(t) \\ p^y(t) \\ v(t)\\ \varphi(t) \end{bmatrix} x=px(t)py(t)v(t)φ(t)
  • 动态模型
    [ p ˙ x ( t ) p ˙ y ( t ) v ˙ ( t ) φ ˙ ( t ) ] = [ v ( t ) cos ⁡ ( φ ( t ) ) v ( t ) sin ⁡ ( φ ( t ) ) 0 0 ] + [ 0 0 0 0 1 0 0 1 ] w ( t ) \begin{bmatrix} \dot{p}^x(t) \\ \dot{p}^y(t) \\ \dot{v}(t)\\ \dot{\varphi}(t) \end{bmatrix} = \begin{bmatrix} v(t)\cos({\varphi(t)})\\ v(t)\sin({\varphi(t)})\\ 0 \\ 0 \end{bmatrix} + \begin{bmatrix} 0&0\\ 0&0\\ 1&0\\ 0&1 \end{bmatrix}w(t) p˙x(t)p˙y(t)v˙(t)φ˙(t)=v(t)cos(φ(t))v(t)sin(φ(t))00+00100001w(t)

2. 连续时间的离散化模型

我们为什么使用连续时间的离散化模型?以下有几个原因,

  • 在计算机中实现传感器融合
  • 数据只能在离散时间步上被处理 t 1 , t 2 , . . . , t n t_1, t_2, ...,t_n t1,t2,...,tn
  • 离散的连续时间模型和离散时间模型关系密切
  • 举例, 车辆跟踪

所以,离散的连续事件模型等于解决在时间 t n − 1 → t n t_{n-1}\to t_n tn1tn间的ODE(常微分方程)/SDE(随机微分方程)模型。

常微分方程wiki

在数学中,常微分方程(ODE)是一个包含一个或多个独立变量的函数和这些函数的导数的微分方程。普通方程与偏微分方程形成对比,后者可能涉及一个以上的独立变量。

随机微分方程wiki

随机微分方程(SDE)是一个微分方程,其中一个或多个项是一个随机过程,导致其解决方案也是一个随机过程。SDE被用来模拟各种现象,如不稳定的股票价格或受热波动影响的物理系统。通常情况下,SDE包含一个变量,代表随机白噪声,作为布朗运动或维纳过程的导数计算。然而,其他类型的随机行为也是可能的,如跳跃过程。

3. 线性一阶ODE模型

我们的目标是在区间 ( t n − 1 , t n ] (t_{n-1}, t_n] (tn1,tn]中解一阶线性常微分方程
x ˙ ( t ) = a x ( t ) + b u ( t ) \dot{x}(t) = ax(t) + bu(t) x˙(t)=ax(t)+bu(t)
假设, 将上式乘以积分因子 e − a t e^{-at} eat
e − a t x ˙ = e − a t a x ( t ) + e − a t b u ( t ) e^{-at}\dot{x} = e^{-at}ax(t) + e^{-at}bu(t) eatx˙=eatax(t)+eatbu(t)
t t t可分的ODE,
d d t e − a t x ( t ) = e − a t b u ( t ) \frac{\rm d}{{\rm d}t}e^{-at}x(t) = e^{-at}bu(t) dtdeatx(t)=eatbu(t)
解为,
e − a t n x ( t n ) − e − a t n − 1 x ( t n − 1 ) = ∫ t n − 1 t n e − a t b u ( t ) d t e^{-at_n}x(t_n) - e^{-at_{n-1}}x(t_{n-1}) =\int_{t_{n-1}}^{t_n} e^{-at}bu(t){\rm d} t eatnx(tn)eatn1x(tn1)=tn1tneatbu(t)dt
重新整理可得
x ( t n ) = e a Δ t x ( t n − 1 ) + ∫ t n − 1 t n e a ( t n − t ) b u ( t ) d t x(t_n) = e^{a\Delta t} x(t_{n-1}) + \int_{t_{n-1}}^{t_n} e^{a{(t_n - t)}}bu(t) {\rm d}t x(tn)=eaΔtx(tn1)+tn1tnea(tnt)bu(t)dt

推广到线性一阶ODE矢量模型
x ˙ ( t ) = A x ( t ) + B u u ( t ) \dot{x}(t) = {\bm A}{\bm x}(t) + {\bm B}_uu(t) x˙(t)=Ax(t)+Buu(t)

我们需要计算积分因子,这里引入矩阵指数的定义:

指数的定义
e a = ∑ k = 0 ∞ 1 k a k e^a =\sum _{k=0}^\infin \frac 1 k a^k ea=k=0k1ak
矩阵指数的定义
e A = ∑ k = 0 ∞ 1 k ! A k e^A =\sum _{k=0}^\infin \frac 1 {k!} A^k eA=k=0k!1Ak
矩阵指数相对于标量x的导数。
d d x e A x = e A x A \frac{\rm d}{{\rm d}x}e^{{\bm A}{\bm x}} = e^{{\bm A}{\bm x}}A dxdeAx=eAxA
A T A^T AT的矩阵指数:
( e A ) T = e A T (e^A)^{\bm T} = e^{A^T} (eA)T=eAT

解线性一阶向量ODEs
一般线性动态模型:
x ˙ ( t ) = A x ( t ) + B u u ( t ) \dot{x}(t) = {\bm A}{\bm x}(t) + {\bm B}_uu(t) x˙(t)=Ax(t)+Buu(t)
乘以积分系数 e − A t e^{-{\bm A}t} eAt
e − A t x ˙ ( t ) = e − A t A x ( t ) + e − A t B u u ( t ) e^{-{\bm A}t}\dot{x}(t) = e^{-{\bm A}t}{\bm A}{\bm x}(t) + e^{-{\bm A}t}{\bm B}_uu(t) eAtx˙(t)=eAtAx(t)+eAtBuu(t)
重新整理得,
e − A t x ˙ ( t ) − e − A t A x ( t ) = e − A t B u u ( t ) e^{-{\bm A}t}\dot{x}(t) - e^{-{\bm A}t}{\bm A}{\bm x}(t) = e^{-{\bm A}t}{\bm B}_uu(t) eAtx˙(t)eAtAx(t)=eAtBuu(t)
使用 d d t e − A t x ( t ) = e − A t x ˙ ( t ) + e − A A x ( t ) \frac{\rm d}{{\rm d}t}e^{-{\bm A}t}x(t) = e^{-{\bm A}t}\dot{x}(t) + e^{-A}{\bm A}{\bm x}(t) dtdeAtx(t)=eAtx˙(t)+eAAx(t)替代得(在 t t t时)
d d t e − A t x ( t ) = e − A t B u u ( t ) \frac{\rm d}{{\rm d}t}e^{-{\bm A}t}x(t) = e^{-{\bm A}t}{\bm B}_uu(t) dtdeAtx(t)=eAtBuu(t)
根据 t t t的积分
∫ t n − 1 t n d [ e − A t x ( t ) ] = ∫ t n − 1 t n e − A t B u u ( t ) d t [ e − A t x ( t ) ] t = t n − 1 t n = ∫ t n − 1 t n e − A t B u u ( t ) d t e − A t n x ( t n ) − e − A t n − 1 x ( t n − 1 ) = ∫ t n − 1 t n e − A t B u u ( t ) d t \begin{aligned} \int_{t_{n-1}}^{t_n} {\rm d}[e^{-{\bm A}t}x(t)]&= \int_{t_{n-1}}^{t_n}e^{-{\bm A}t}{\bm B}_u u(t){\rm d} t\\ [e^{-{\bm A}t}x(t)]^{t_n}_{t=t_{n-1}} &= \int_{t_{n-1}}^{t_n}e^{-{\bm A}t}{\bm B}_u u(t){\rm d} t \\ e^{-{\bm A}t_n}x(t_n) - e^{-{\bm A}t_{n-1}}x(t_{n-1})&= \int_{t_{n-1}}^{t_n}e^{-{\bm A}t}{\bm B}_u u(t){\rm d} t \end{aligned} tn1tnd[eAtx(t)][eAtx(t)]t=tn1tneAtnx(tn)eAtn1x(tn1)=tn1tneAtBuu(t)dt=tn1tneAtBuu(t)dt=tn1tneAtBuu(t)dt
整理得,
x ( t n ) = e A ( t n − t n − 1 ) x ( t n − 1 ) + ∫ t n − 1 t n e A ( t n − t ) B u u ( t ) d t x(t_n) = e^{{\bm A}(t_n - t_{n-1})}x(t_{n-1}) + \int_{t_{n-1}}^{t_n}e^{{\bm A}{(t_n-t)}}{\bm B}_u u(t){\rm d} t x(tn)=eA(tntn1)x(tn1)+tn1tneA(tnt)Buu(t)dt

输入的 u ( t ) u(t) u(t)在不同的采样实例之间通常是恒定的(零阶保持;zero-order-hold(ZOH)) 。

然后有,
∫ t n − 1 t n e A ( t n − t ) B u u ( t ) d t = ∫ t n − 1 t n e A ( t n − t ) B u u ( t ) d t u n − t \int_{t_{n-1}}^{t_n}e^{{\bm A}{(t_n-t)}}{\bm B}_u u(t){\rm d} t = \int_{t_{n-1}}^{t_n}e^{{\bm A}{(t_n-t)}}{\bm B}_u u(t){\rm d} t {\bm u}_{n-t} tn1tneA(tnt)Buu(t)dt=tn1tneA(tnt)Buu(t)dtunt

离散确定性线性动态模型
线性连续时间动态模型
x ˙ ( t ) = A x ( t ) + B u u ( t ) \dot{x}(t) = {\bm A}{\bm x}(t) + {\bm B}_uu(t) x˙(t)=Ax(t)+Buu(t)
离散动态模型
x n = F n x n − 1 + L n u n − 1 \bm x_n = \bm F_n\bm x_{n-1} + \bm L_n \bm u_{n-1} xn=Fnxn1+Lnun1
其中
F n ≜ e A ( t n − t n − 1 ) L n ≜ ∫ t n − 1 t n e A ( t n − t ) B u d t \begin{aligned}\bm F_n & \triangleq e^{\bm A(t_n - t_{n-1})} \\ {\bm L}_n& \triangleq \int_{t_{n-1}}^{t_n}e^{{\bm A}(t_n-t)}{\bm B}_u {\rm d} t\end{aligned} FnLneA(tntn1)tn1tneA(tnt)Budt
可以看到,离散的动态模型完全等于连续时间模型。

示例1:一维确定性线性动态模型

动态模型
[ p ˙ ( t ) v ˙ ( t ) ] = [ 0 1 0 0 ] [ p ( t ) v ( t ) ] + [ 0 1 ] u ( t ) \begin{bmatrix}\dot{p}(t) \\ \dot{v}(t)\end{bmatrix} = \begin{bmatrix}0 & 1 \\ 0 & 0 \end{bmatrix} \begin{bmatrix}p(t) \\ v(t)\end{bmatrix} + \begin{bmatrix}0 \\1 \end{bmatrix} u(t) [p˙(t)v˙(t)]=[0010][p(t)v(t)]+[01]u(t)
使用如下方程
F n = e A Δ t = ∑ j = 0 ∞ 1 j ! A j ( Δ t ) j \bm F_n = e^{{\bm A \Delta t}} = \sum_{j=0}^{\infin}\frac{1}{j!}A^j(\Delta t)^j Fn=eAΔt=j=0j!1Aj(Δt)j
A \bm A A的值
A 0 = I A 1 = A A j = 0 j ≥ 2 \begin{aligned} \bm A^0 &= \bm I \\ \bm A^1 &= \bm A \\ \bm A^j &= 0 \quad j \geq 2\end{aligned} A0A1Aj=I=A=0j2
然后有
A d d = ∑ n = 0 ∞ 1 n ! A n ( Δ t ) n = 1 0 ! I ( Δ t ) 0 + 1 1 ! A Δ t + 1 2 ! A 2 ( Δ t ) 2 + 1 3 ! A 3 ( Δ t ) 3 + 1 4 ! A 4 ( Δ t ) 4 = [ 1 Δ t 0 1 ] \begin{aligned}\bm A_dd & = \sum_{n=0}^{\infin}\frac{1}{n!}A^n(\Delta t)^n \\ &= \frac{1}{0!}I(\Delta t)^0 + \frac{1}{1!}\bm A \Delta t + \frac{1}{2!}\bm A^2 (\Delta t)^2+ \frac{1}{3!}\bm A^3 (\Delta t)^3 + \frac{1}{4!}\bm A^4 (\Delta t)^4 \\ &= \begin{bmatrix}1 & \Delta t \\ 0 & 1 \end{bmatrix} \end{aligned} Add=n=0n!1An(Δt)n=0!1I(Δt)0+1!1AΔt+2!1A2(Δt)2+3!1A3(Δt)3+4!1A4(Δt)4=[10Δt1]
输入矩阵
L = ∫ t n − 1 t n e A ( t n − t ) B u d t \bm L = \int_{t_{n-1}}^{t_n}e^{\bm A (t_n -t)}\bm B_u {\rm d}t L=tn1tneA(tnt)Budt
其中,
e A ( t n − t ) = [ 1 Δ t 0 1 ] , B u = [ 0 1 ] e^{\bm A (t_n -t)} = \begin{bmatrix}1 & \Delta t \\ 0 & 1 \end{bmatrix}, \bm B_u = \begin{bmatrix}0 \\ 1 \end{bmatrix} eA(tnt)=[10Δt1],Bu=[01]
得到,连续时间模型
[ p ˙ ( t ) v ˙ ( t ) ] = [ 0 1 0 0 ] [ p ( t ) v ( t ) ] + [ 0 1 ] u ( t ) \begin{bmatrix}\dot{p}(t) \\ \dot{v}(t)\end{bmatrix} = \begin{bmatrix}0 & 1 \\ 0 & 0 \end{bmatrix} \begin{bmatrix}p(t) \\ v(t)\end{bmatrix} + \begin{bmatrix}0 \\1 \end{bmatrix} u(t) [p˙(t)v˙(t)]=[0010][p(t)v(t)]+[01]u(t)
离散时间模型
x n = [ 1 Δ t 0 1 ] x n − 1 + [ ( Δ t ) 2 2 Δ t ] u n − 1 \bm x_n = \begin{bmatrix}1 & \Delta t \\ 0 & 1 \end{bmatrix} \bm x_{n-1} + \begin{bmatrix}\frac{(\Delta t)^2}{2} \\ \Delta t \end{bmatrix} \bm u_{n-1} xn=[10Δt1]xn1+[2(Δt)2Δt]un1

示例2:刚体平面运动学模型

刚体在平面中的运动可以使用以下方程定义:
a x = v ˙ x − r v y a y = v ˙ y + r v x \begin{aligned}a_x &= \dot{v}_x -rv_y \\a_y &=\dot{v}_y+rv_x \end{aligned} axay=v˙xrvy=v˙y+rvx
其中状态空间表示为:
x ˙ k = A k ( t ) x k + B k ( t ) u k y k = C k ( t ) x k \begin{aligned} \dot{ x}_k &= A_k(t){ x}_k + B_k(t){ u}_k \\ { y}_k &= C_k(t){ x}_k \end{aligned} x˙kyk=Ak(t)xk+Bk(t)uk=Ck(t)xk
其中,
A k ( t ) = [ 0 − r ( t ) r ( t ) 0 ] , B k ( t ) = [ 1 0 0 1 ] , C k ( t ) = [ 1 0 ] \begin{aligned} A_k(t) & = \begin{bmatrix}0 & -r(t) \\ r(t) & 0\end{bmatrix}, B_k(t) = \begin{bmatrix}1 & 0 \\ 0 & 1\end{bmatrix},\\ C_k(t) & = \begin{bmatrix}1 & 0\end{bmatrix} \end{aligned} Ak(t)Ck(t)=[0r(t)r(t)0],Bk(t)=[1001],=[10]
离散化后的模型为:
x ^ k [ t + 1 ] = A k , d [ t ] ⋅ x ^ k [ t ] + B k , d [ t ] ⋅ u k [ t ] y k [ t ] = C k , d [ t ] ⋅ x ^ k [ t ] \begin{aligned} \hat{\text{x}}_{k}[t+1] &= A_{k,d}[t] \cdot \hat{\text{x}}_{k}[t] + B_{k,d}[t] \cdot u_{k}[t] \\ \text{y}_{k}[t] &= C_{k,d}[t] \cdot \hat{\text{x}}_{k}[t] \end{aligned} x^k[t+1]yk[t]=Ak,d[t]x^k[t]+Bk,d[t]uk[t]=Ck,d[t]x^k[t]
我们可以借助MATLAB来计算离散化后的系统矩阵 A k , d A_{k,d} Ak,d B k , d B_{k,d} Bk,d

% Create symbolic variables
syms r 'real';
syms dt 'real';

% define system matrices
A_k = [0 -r ;r 0];
B_k = [1 0; 0 1];
I = [1 0; 0 1];

% calculate discretised system matrices
A_kd = I + A_k*dt + 1/2*A_k^2*dt^2 + 1/6*A_k^3*dt^3 + 1/24*A_k^4*dt^4
B_kd = simplify(int(expm(dt*A_k)*B_k, dt))

可以得到:

A_kd =
[(dt^4*r^4)/24 - (dt^2*r^2)/2 + 1,          (dt^3*r^3)/6 - dt*r]
[         dt*r - (dt^3*r^3)/6, (dt^4*r^4)/24 - (dt^2*r^2)/2 + 1]

B_kd =
[ sin(dt*r)/r, cos(dt*r)/r]
[-cos(dt*r)/r, sin(dt*r)/r]

4. 随机线性动态模型

随机线性动态模型:
x ˙ ( t ) = A x ( t ) + B w w ( t ) \dot{x}(t) = {\bm A}{\bm x}(t) + {\bm B}_{w}{\bm w}(t) x˙(t)=Ax(t)+Bww(t)
随机模型和确定模型的唯一区别是输入 u ( t ) {\bm u}(t) u(t)( w ( t ) {\bm w}(t) w(t))。 w ( t ) {\bm w}(t) w(t)白噪声过程,也成为白色随机过程(white stochastic process)。

自相关函数(Auto-correlation function):
R w w ( τ ) = E { w ( t + τ ) w ( t ) } = ∑ w δ ( τ ) R_{ww}(\tau) = \text{E}\{{\bm w} (t +\tau){\bm w}(t)\}=\sum_{w}\delta(\tau) Rww(τ)=E{w(t+τ)w(t)}=wδ(τ)
因此有:
x ( t n ) = e A ( t n − t n − 1 ) ) x ( t n − 1 ) + ∫ t n − 1 t n e A ( t n − t ) B w w ( t ) d t {\bm x}(t_n) = e^{{\bm A}(t_n - t_{n-1}))}{\bm x}(t_{n-1}) + \int_{t_{n-1}}^{t_n}e^{{\bm A}(t_n - t)}{\bm B}_w{\bm w}(t) dt x(tn)=eA(tntn1))x(tn1)+tn1tneA(tnt)Bww(t)dt

其中, w ( t ) {\bm w}(t) w(t)是随机的, 无法使用零阶保持,甚至是无法积分的(使用标准方法)。所以我们定义一个随机变量作为随机噪声:
q n ≜ ∫ t n − 1 t n e A ( t n − t ) B w w ( t ) d t {\bm q_{n}} \triangleq \int_{t_{n-1}}^{t_n}e^{{\bm A}(t_n - t)}{\bm B}_w{\bm w}(t) dt qntn1tneA(tnt)Bww(t)dt
然后有
x n = F n x n − 1 + q n {\bm x}_n = {\bm F}_n{\bm x}_{n-1}+ {\bm q}_n xn=Fnxn1+qn
过程噪声的均值和协方差:
E { q n } = 0 C o v { q n } = E { ( q n − E { q n } ) ( q n − E { q n } ) T } = ∬ t n − 1 t n e A ( t n − t ) B w E { w ( t ) w ( τ ) T } B w T ( e A ( t n − τ ) ) T d τ d t = ∫ t n − 1 t n e A ( t n − τ ) B w ∑ w B w T e A T ( t n − τ ) d τ ≜ Q n \begin{aligned}{\rm E}\{ {\bm q}_n\} & = 0 \\ \\ {\rm Cov}\{{\bm q}_n\} &= {\rm E} \{({\bm q}_n - {\rm E}\{{\bm q}_n\})({\bm q}_n -{\rm E}\{{\bm q}_n\})^T\} \\ &= \iint _{t_{n-1}}^{t_n}e^{{\bm A}(t_n - t)}{\bm B}_w {\rm E}\{ {\bm w}(t){\bm w}(\tau)^T\}B^T_w(e^{{\bm A}(t_n - \tau)})^T d\tau dt \\ & =\int _{t_{n-1}}^{t_n}e^{{\bm A}(t_n - \tau)}{\bm B}_w \sum _w{\bm B}_w^T e^{{\bm A}^T(t_n - \tau)}d\tau \\ &\triangleq {\bm Q}_n\end{aligned} E{qn}Cov{qn}=0=E{(qnE{qn})(qnE{qn})T}=tn1tneA(tnt)BwE{w(t)w(τ)T}BwT(eA(tnτ))Tdτdt=tn1tneA(tnτ)BwwBwTeAT(tnτ)dτQn
其符合正态分布:
q n ∼ N ( 0 , Q n ) {\bm q}_n\sim \mathcal{N}(0 , {\bm Q}_n) qnN(0,Qn)

离散的随机线性动态模型:
x n = F n x n − 1 + q n {\bm x}_n = {\bm F}_n{\bm x}_{n-1}+ {\bm q}_n xn=Fnxn1+qn
其中:
F n ≜ e A ( t n − t n − 1 ) q n ∼ N ( 0 , Q n ) Q n = ∫ t n − 1 t n e A ( t n − τ ) B w ∑ w B w T e A T ( t n − τ ) d τ \begin{aligned}{\bm F}_n &\triangleq e^{\bm A(t_n -t_{n-1})} \\ \bm q_n & \sim{N}(0 , {\bm Q}_n) \\ {\bm Q}_n &=\int _{t_{n-1}}^{t_n}e^{{\bm A}(t_n - \tau)}{\bm B}_w \sum _w{\bm B}_w^T e^{{\bm A}^T(t_n - \tau)}d\tau \end{aligned} FnqnQneA(tntn1)N(0,Qn)=tn1tneA(tnτ)BwwBwTeAT(tnτ)dτ

示例:一维维纳速度模型

数学中,维纳过程(英语:Wiener process)是一种连续时间随机过程,得名于诺伯特·维纳。由于与物理学中的布朗运动有密切关系,也常被称为“布朗运动过程”或简称为布朗运动。维纳过程是莱维过程(指左极限右连续的平稳独立增量随机过程)中最有名的一类,在纯数学、应用数学、经济学与物理学中都有重要应用

动态模型:
[ p ˙ ( t ) v ˙ ( t ) ] = [ 0 1 0 0 ] [ p ( t ) v ( t ) ] + [ 0 1 ] w ( t ) \begin{bmatrix}\dot{p}(t) \\ \dot{v}(t)\end{bmatrix} = \begin{bmatrix}0 & 1 \\ 0 & 0 \end{bmatrix} \begin{bmatrix}p(t) \\ v(t)\end{bmatrix} + \begin{bmatrix}0 \\1 \end{bmatrix} w(t) [p˙(t)v˙(t)]=[0010][p(t)v(t)]+[01]w(t)
且有白噪声过程 w ( t ) w(t) w(t) R w w ( τ ) = σ w 2 δ ( τ ) R_{ww}(\tau) = \sigma^2_{w}\delta (\tau) Rww(τ)=σw2δ(τ)

过程噪声协方差:
Q n = ∫ t n − 1 t n e A ( t n − τ ) B w ∑ w B w T e A T ( t n − τ ) d τ {\bm Q}_n =\int _{t_{n-1}}^{t_n}e^{{\bm A}(t_n - \tau)}{\bm B}_w \sum _w{\bm B}_w^T e^{{\bm A}^T(t_n - \tau)}d\tau Qn=tn1tneA(tnτ)BwwBwTeAT(tnτ)dτ
其中:
e A ( t n − τ ) = [ 1 t n − τ 0 1 ] e A ( t n − τ ) B w = [ 1 t n − τ 0 1 ] [ 0 1 ] = [ t n − τ 1 ] \begin{aligned}e^{{\bm A}(t_n - \tau)} &= \begin{bmatrix}1 &t_n - \tau \\ 0 &1\end{bmatrix} \\ e^{{\bm A}(t_n - \tau)} {\bm B}_w&= \begin{bmatrix}1 &t_n - \tau \\ 0 &1\end{bmatrix}\begin{bmatrix}0 \\ 1\end{bmatrix} = \begin{bmatrix}t_n - \tau \\ 1\end{bmatrix} \end{aligned} eA(tnτ)eA(tnτ)Bw=[10tnτ1]=[10tnτ1][01]=[tnτ1]
得到离散化的模型:
[ p n v n ] = [ 1 Δ t 0 1 ] [ p n − 1 v n − 1 ] + q n \begin{bmatrix}p_n\\ v_n\end{bmatrix} = \begin{bmatrix}1 & \Delta t \\ 0 & 1 \end{bmatrix} \begin{bmatrix}p_{n-1} \\ v_{n-1}\end{bmatrix} + \bm q_n [pnvn]=[10Δt1][pn1vn1]+qn
且有 q n ∼ N ( 0 , Q n ) \bm q_n \sim{N}(0 , {\bm Q}_n) qnN(0,Qn)
Q n = σ w 2 [ ( Δ t ) 3 3 ( Δ t ) 2 2 ( Δ t ) 2 2 Δ t ] {\bm Q}_n = \sigma^2_w\begin{bmatrix}\frac{(\Delta t)^3}{3} & \frac{(\Delta t)^2}{2}\\ \frac{(\Delta t)^2}{2} & \Delta t\end{bmatrix} Qn=σw2[3(Δt)32(Δt)22(Δt)2Δt]

5. 总结

线性ODE模型的离散化
线性连续时间动态模型
x ˙ ( t ) = A x ( t ) + B u u ( t ) \dot{x}(t) = {\bm A}{\bm x}(t) + {\bm B}_uu(t) x˙(t)=Ax(t)+Buu(t)
离散动态模型
x n = F n x n − 1 + L n u n − 1 \bm x_n = \bm F_n\bm x_{n-1} + \bm L_n \bm u_{n-1} xn=Fnxn1+Lnun1
其中
F n ≜ e A ( t n − t n − 1 ) L n ≜ ∫ t n − 1 t n e A ( t n − t ) B u d t \begin{aligned}\bm F_n & \triangleq e^{\bm A(t_n - t_{n-1})} \\ {\bm L}_n& \triangleq \int_{t_{n-1}}^{t_n}e^{{\bm A}(t_n-t)}{\bm B}_u {\rm d} t\end{aligned} FnLneA(tntn1)tn1tneA(tnt)Budt

线性SDE模型的离散化
线性连续时间动态模型
x ˙ ( t ) = A x ( t ) + B w w ( t ) \dot{x}(t) = {\bm A}{\bm x}(t) + {\bm B}_ww(t) x˙(t)=Ax(t)+Bww(t)
离散动态模型
x n = F n x n − 1 + q n , q n ∼ N ( 0 , Q n ) \bm x_n = \bm F_n\bm x_{n-1} + \bm q_n, \quad \bm q_n \sim{N}(0 , {\bm Q}_n) xn=Fnxn1+qn,qnN(0,Qn)
其中
Q n = ∫ t n − 1 t n e A ( t n − τ ) B w ∑ w B w T e A T ( t n − τ ) d τ {\bm Q}_n =\int _{t_{n-1}}^{t_n}e^{{\bm A}(t_n - \tau)}{\bm B}_w \sum _w{\bm B}_w^T e^{{\bm A}^T(t_n - \tau)}d\tau Qn=tn1tneA(tnτ)BwwBwTeAT(tnτ)dτ

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐