Processing math: 100%

线性动态系统建模

描述一架飞机的动态模型是简单的,我相信你从高中开始就对牛顿运动方程很熟悉了。

这一章将会把动态模型的建立推广到任意线性动态系统。后续的讲述会包括积分和微分方程。

本章是整个教程最具挑战的部分,但并不是了解卡尔曼滤波原理所必要的。如果本章的数学内容让你感到棘手和不舒服 - 可以随时跳过这一章。

同时,我会尽量让我的讲述直观和容易理解一些,并且自然地,我给出了实际生活中的例子。

状态外插方程的推导

我们的目标是推导出如下形式的状态外插方程:

ˆxn+1,n=Fˆxn,n+Gˆun,n+wn

为达到这个目的,我们需要对动态系统进行建模。也就是说,思考出动态系统的 状态空间表达。下面两个方程就是LTI系统的状态空间表达:

˙x(t)=Ax(t)+Bu(t)
y(t)=Cx(t)+Du(t)
式中:
x 是状态向量
y 是输出向量
A 是动态矩阵
B 是输入矩阵
C 是输出矩阵
D 是前馈矩阵

为了找到 状态转移矩阵 F输入转移矩阵 G,我们需要求解状态空间微分方程。

下图总结了状态外插方程的推导过程。

The process of the state extrapolation equation derivation

状态空间表达

你也许会好奇为什么状态空间表达必须是下述的形式:

˙x(t)=Ax(t)+Bu(t)

y(t)=Cx(t)+Du(t)

许多计算机软件包求解微分方程时需要这样的描述。

最好的讲述状态空间表达的方式是通过示例。

示例 - 匀速运动的物体

由于没有外部力作用在物体上,系统没有输入:

u(t)=0

状态空间向量 x(t) 是物体的位移量 p(t) 和速度 v(t).

x(t)=[pv]

注:为了避免混淆状态向量 x(t) (粗体)和物体在 x 轴上的位置 - 记为 x(t) (非粗体),我把物体位置改记为 p(t).

˙x(t)=Ax(t)+Bu(t)

[˙p˙v]=A[pv]+B×0

[˙p˙v]=[0100][pv]

A=[0100]

我们获取了微分形式的第一个方程。

动态系统输出 y(t) 是物体的位移 p(t),也是系统的状态变量。

y(t)=Cx(t)+Du(t)

p=C[pv]+D×0

p=[10][pv]

C=[10]

到这里就完成了。

建模高阶动态系统

许多动态系统模型由高阶的微分方程描述。微分方程的阶次就是微分方程中具有最高阶导数的变量的阶次。

为了处理高阶方程,我们应该通过引入新变量并将其代入最高阶项的方式来将方程逐渐降为一阶微分方程。

微分方程降阶算法

一个 n 阶线性微分方程可以由 n 个一阶线性微分方程组来表示。

动态系统的高阶 支配方程 Governing Equation 有如下的形式:

andnydtn+an1dn1ydtn1++a2d2ydt2+a1d1ydt1+a0y=u

这个 支配方程 完全描述了系统的动态状态。

降阶

  1. 隔离出最高阶项:
  2. dnydtn=a0anya1and1ydt1a2and2ydt2an1andn1ydtn1+1anu

    y 及其前 n1 阶导是这个系统的状态。

  3. 定义新变量 x1,x2,,xn:
  4. xi=di1ydti1,,有:

    x1(t)=y

    x2(t)=dydt
    x3(t)=d2ydt2
    xn(t)=dn1ydtn1

    此时 xi(t) 就是状态变量。

  5. 这些变量对 t 求导:
  6. dx1dt=x2(t)

    dx2dt=x3(t)
    dxn1dt=xn(t)
    dxndt=dnydtn

  7. 把一开始隔离出的 dnydtn 项代入最后一个方程:
  8. dx1dt=x2(t)

    dx2dt=x3(t)
    dxn1dt=xn(t)
    dxndt=a0anx1a1anx2a2anx3an1anxn+1anu

  9. 用向量矩阵形式改写上述方程组:
  10. [dx1dtdx2dtdxn1dtdxndt]=[˙x1˙x2˙xn1˙xn]=[010000010000001a0ana1ana2anan2anan1an][x1x2xn1xn]+[0001an]u

搞定了。这个方程就是符合下述形式的状态空间方程:

˙x(t)=Ax(t)+Bu(t)

其中:

A=[010000010000001a0ana1ana2anan2anan1an]

B=[0001an]

再来看两个例子。

示例 - 匀加速运动物体

本例中,物体上有外力作用。

匀加速运动物体的支配方程就是牛顿第二定律:

m¨p=F

式中:

p 是物体位移

m 是物体质量

F 是外部作用在物体上的力

The constant acceleration model

我们对上述方程应用前面提到的降阶算法。

  1. 隔离出最高阶项:
  2. ¨p=1mF

  3. 定义新变量 x1x2:
  4. x1=p

    x2=˙p

    x1x2 就是状态变量。

  5. 状态变量各自对时间求导:
  6. ˙x1=x2

    ˙x2=¨p

  7. 把最高阶项 ¨p 代入第二个方程:
  8. ˙x1=x2

    ˙x2=Fm

  9. 用矩阵形式描述上述方程组:
  10. [˙x1˙x2]=[0100][x1x2]+[01m]F

记住 x2=˙p. 记 x2v 会更有意义,因为 x2 本身就是物体的速度。

上述方程可以重写为:

[˙p˙v]=[0100][pv]+[01m]F

或:

[˙p˙v]=[0100][pv]+[01]a

其中 a 是物体被施加作用力 F 后产生的加速度。

于是我们得到了这个形式的方程:

˙x(t)=Ax(t)+Bu(t)

状态向量 x(t) 是物体的位移 p(t) 和速度 v(t).

动态系统的输出 y(t) 是物体的位移 p(t),也是系统状态变量的分量。

y(t)=Cx(t)+Du(t)

p=C[pv]+Da

p=[10][pv]+[0]a

示例 - 质量-弹簧-阻尼系统

质量-弹簧-阻尼系统包含三个基本元件:

  • 质量 - 惯性元件
  • 弹簧 - 弹性元件
  • 阻尼 - 摩擦元件
Mass-spring-damper model

Each of the elements has one of two possible energy behaviors: 每个元素具有两种可能的能量转移行为之一:

  • 将输入的能量存储在自身
  • 将输入的能量转化为“摩擦”热量

质量将输入的能量以动能形式存储。

当弹簧被拉伸超过原始长度时,输入能量以势能形式存储。

阻尼以热能形式将输入能量耗散。

这三个元件:质量、弹簧和阻尼,能够以一般形式描述任何动态系统的响应。

本系统的受力分析图如下所示。

Mass-spring-damper forces

弹簧弹力正比于质量的位移量 p.

粘滞阻力正比于质量的速度 ˙p.

牛顿第二定律表明:

F=ma=md2pdt2=m¨p

We proceed by summing the forces and applying Newton's second law: 我们将上述所有作用力加和在一起,并运用牛顿第二定律:

F=F(t)c˙pkp=m¨p

其中:

p 是物体位移

m 是物体质量

F 是外部作用在物体上的力

k 是弹簧弹力系数

c 是阻尼系数

这个方程就是完全描述上述系统的动态状态的支配方程。

接下来我们对这个支配方程应用降阶算法。

  1. 隔离出最高阶项:
  2. ¨p=kmpcm˙p+1mF

  3. 定义新变量 x1x2:
  4. x1=p

    x2=˙p

    x1x2 就是状态变量。

  5. 状态变量各自对时间求导:
  6. ˙x1=x2

    ˙x2=¨p

  7. 把一开始隔离出的 ¨p 代入第二个方程:
  8. ˙x1=x2

    ˙x2=kmpcm˙p+1mF

  9. 用向量矩阵形式改写上述方程组:
  10. [˙x1˙x2]=[01kmcm][x1x2]+[01m]F

记住 x2=˙p. 记 x2v 会更有意义,因为 x2 本身就是物体的速度。

上述方程可以重写为:

[˙p˙v]=[01kmcm][pv]+[01m]F

于是我们得到了这个形式的方程:

˙x(t)=Ax(t)+Bu(t)

状态向量 x(t) 是物体的位移 p(t) 和速度 v(t).

动态系统的输出 y(t) 是物体的位移 p(t),也是系统状态变量的分量。

y(t)=Cx(t)+Du(t)

p=C[pv]+DF

p=[10][pv]+[0]F

更多示例

你可以在ShareTechnote找到更多有意义的状态空间建模示例。

求解微分方程

记住,对我们的卡尔曼滤波模型,我们需要下述形式的状态外插方程:

ˆxn+1,n=Fˆxn,n+Gˆun,n

为了得到这个形式的方程,我们需要求解描述状态空间的微分方程。

我们可以用计算机软件来求解这些方程,也可以自己动手完成。

我们来看看这些方程该怎么解。

没有输入的动态系统

没有输入的LTI系统可以用一阶微分方程组描述:

˙x=Ax

其中 A动态矩阵

我们的目标是找到 状态转移矩阵 F.

需要求解微分方程来获取 F.

在一维情况下,微分方程具有如下形式:

dxdt=kx

dxx=kdt

两侧同时积分得到:

x1x01xdx=Δt0kdt

求解积分:

ln(x1)ln(x0)=kΔt

ln(x1)=ln(x0)+kΔt
x1=eln(x0)+kΔt
x1=eln(x0)ekΔt
x1=x0ekΔt

类似地,对多维情况:

˙x=Ax

其解为:

xn+1=xneAΔt

于是我们就找到了状态转移矩阵 F:

F=eAΔt

eAt矩阵指数.

矩阵指数可以通过泰勒展开计算:

eX=k=01k!Xk

因此:

F=eAΔt=I+AΔt+(AΔt)22!+(AΔt)33!+(AΔt)44!+

其中 I 是单位矩阵。

示例 续 - 匀速运动的物体

现在我们可以得到匀速运动物体的状态转移矩阵 F 了。

下面的微分方程组可以描述匀速运动模型:

{dpdt=vdvdt=0

用矩阵形式表示:

[˙p˙v]=[0100][pv]

A=[0100]

我们来计算 A2

A2=[0100][0100]=[0000]

由于 A2=0A 的更高阶次幂也全部是0.

于是我们可以得到匀速运动物体的状态转移矩阵 F:

F=eAΔt=I+AΔt=[1001]+[0100]Δt=[1Δt01]

xn+1=Fxn=[1Δt01]xn
[xn+1˙xn+1]=[1Δt01][xn˙xn]

有输入的动态系统

假设零阶保持采样,即把输入看作一个分段常量,那么一个下述形式的状态空间微分方程:

˙x(t)=Ax(t)+Bu(t)

具有通解为:

x(t+Δt)=eAΔtFx(t)+Δt0eAtdtBGu(t)

去掉输入的话 (u(t)=0),我们就得到了前面例子里推导出的解。

这里的证明就不展开了 - 你可以在 Tom M. Apostol 的 “微积分” 教科书里的定理8.3处找到证明,也可以在任何其他一本微积分书上找到。

我们再来求解匀加速运动物体质量-弹簧-阻尼系统示例。

示例 续 - 匀加速运动物体

回忆匀加速运动物体的状态空间方程:

[˙p˙v]=[0100][pv]+[01]a

其中:

A=[0100]

B=[01]

我们来求解方程:

x(t+Δt)=eAΔtFx(t)+Δt0eAtdtBGu(t)

解 F

F=eAΔt

我们已经得到了在 A=[0100] 时的解:

F=[1Δt01]

解 G

G=Δt0eAtdtB

Δt0eAtdt 的通解公式是幂级数:

Δt0eAtdt=Δt(I+AΔt2!+(AΔt)23!+(AΔt)34!+)

A2=[0100][0100]=[0000]

A 的更高阶次幂都是0.

Δt0eAtdt=Δt([1001]+[0100]Δt2)=[Δt12Δt20Δt]

G=Δt0eAtdtB=[Δt12Δt20Δt][01]=[12Δt2Δt]

现在我们得到状态外插方程:

[pn+1˙pn+1]=[1Δt01][pn˙pn]+[12Δt2Δt]a

示例 续 - 质量-弹簧-阻尼系统

回忆质量-弹簧-阻尼系统的状态空间方程:

[˙p˙v]=[01kmcm][pv]+[01m]F

其中:

A=[01kmcm]

B=[01m]

本例中,矩阵指数的计算并不简单,因为此时矩阵A的高阶次幂不再是0了。

这个微分方程的求解细节超出了本教程的范围。

上一章 下一章

Cookies

This website uses Google Analytics third-party cookies to analyze web traffic. Read more about cookies