机器人动力学仿真——状态空间模型的离散化

Hello,欢迎做客我的博客!
在动力学仿真中,我们不得不采用迭代的方法进行数值计算,这个时候我们会用到离散化的数学模型。
可是,我们在建立模型时,考虑的都是连续的情况,那么如何将一个连续的模型转换为离散模型呢?
这篇文章将告诉你答案。

1 模型表示方法

1.1 连续模型

X ˙ = A X + B U Y = C X + D U \begin{aligned} \dot{X}&=AX+BU\\ Y&=CX+DU \end{aligned} X˙Y=AX+BU=CX+DU

1.2 离散模型

X [ ( k + 1 ) Δ T ] = G X [ k Δ T ] + H U [ k Δ T ] Y [ ( k + 1 ) Δ T ] = C X [ k Δ T ] + D U [ k Δ T ] \begin{aligned} {X}\left[ (k+1)\Delta T\right] &=GX[k\Delta T]+HU[k\Delta T]\\ Y\left[ (k+1)\Delta T\right]&=CX[k\Delta T]+DU[k\Delta T] \end{aligned} X[(k+1)ΔT]Y[(k+1)ΔT]=GX[kΔT]+HU[kΔT]=CX[kΔT]+DU[kΔT]
其中, Δ T \Delta T ΔT是采样周期。注意,由于输出方程本身就不是微分方程,所以不需要进行离散化,离散系统和连续系统的系数矩阵相同。

2 离散化方法

2.1 精确离散化方法

离散化的主要目标就是要保证离散化后的系统特性不变,具体而言,我们期望离散化后的系统和连续系统的系统状态 X X X t = k Δ T t=k\Delta T t=kΔT的时刻下保持一致。
基于此思想,我们可以推导出离散化方法。

第一,连续模型的解可以表示为:

X ( t ) = Φ ( t − t 0 ) X ( t 0 ) + ∫ t 0 t Φ ( t − τ ) B U ( τ )   d τ X(t)=\Phi(t-t_0)X(t_0)+\int_{t_0}^{t}\Phi(t-\tau)BU(\tau) \ d\tau X(t)=Φ(tt0)X(t0)+t0tΦ(tτ)BU(τ) dτ

第二,取 t 0 = k Δ T t_0=k\Delta T t0=kΔT t = ( k + 1 ) Δ T t=(k+1)\Delta T t=(k+1)ΔT,由于我们希望离散化后的系统和原系统在 t 0 t_0 t0 t t t时刻的系统状态相等,因此我们将二者代入上式,可到离散化系统的方程:
X [ ( k + 1 ) Δ T ] = Φ ( Δ T ) X [ k Δ T ] + ∫ k Δ T ( k + 1 ) Δ T Φ ( k Δ T − τ ) B U [ k Δ T ]   d τ X[(k+1)\Delta T]=\Phi(\Delta T)X[k\Delta T]+\int_{k\Delta T}^{(k+1)\Delta T}\Phi(k\Delta T-\tau)BU[k\Delta T]\ d\tau X[(k+1)ΔT]=Φ(ΔT)X[kΔT]+kΔT(k+1)ΔTΦ(kΔTτ)BU[kΔT] dτ
其中, Φ ( t ) = e A t \Phi(t)=e^{At} Φ(t)=eAt。此外,在 [ k Δ T , ( k + 1 ) Δ T ] [k\Delta T,(k+1)\Delta T] [kΔT,(k+1)ΔT]期间,控制量不变,为 U [ k Δ T ] U[k\Delta T] U[kΔT]

第三,令 z = ( k + 1 ) Δ T − τ z=(k+1)\Delta T-\tau z=(k+1)ΔTτ,代入上式可得:
X [ ( k + 1 ) Δ T ] = Φ ( Δ T ) X [ k Δ T ] + ∫ 0 Δ T Φ ( z ) B   d z ⋅ U [ k Δ T ] X[(k+1)\Delta T]=\Phi(\Delta T)X[k\Delta T]+\int_{0}^{\Delta T}\Phi(z)B\ dz \cdot U[k\Delta T] X[(k+1)ΔT]=Φ(ΔT)X[kΔT]+0ΔTΦ(z)B dzU[kΔT]

第四,取 G = Φ ( Δ T ) G=\Phi(\Delta T) G=Φ(ΔT) H = ∫ 0 Δ T Φ ( z ) B   d z H=\int_{0}^{\Delta T}\Phi(z)B\ dz H=0ΔTΦ(z)B dz,可得离散系统方程为:
X [ ( k + 1 ) Δ T ] = G X [ k Δ T ] + H U [ k Δ T ] X[(k+1)\Delta T]=GX[k\Delta T]+H U[k\Delta T] X[(k+1)ΔT]=GX[kΔT]+HU[kΔT]

以上离散化方法被称之为精确离散化方法,与此相对的我们在实际应用中还常常用到一种近似离散化方法

2.2 近似离散化方法

这种离散化方法的主要思想是用差分来代替微分,即:
X ˙ [ k Δ T ] = X [ ( k + 1 ) Δ T ] − X [ k Δ T ] Δ T = A X [ k Δ T ] + B U [ k Δ T ] \dot{X}[k\Delta T]=\frac{X[(k+1)\Delta T]-X[k\Delta T]}{\Delta T}=AX[k\Delta T]+BU[k\Delta T] X˙[kΔT]=ΔTX[(k+1)ΔT]X[kΔT]=AX[kΔT]+BU[kΔT]
于是,有:
X [ ( k + 1 ) Δ T ] = ( I + A Δ T ) X [ k Δ T ] + ( B Δ T ) U [ k Δ T ] = G X [ k Δ T ] + H U [ k Δ T ] X[(k+1)\Delta T]=(I+A\Delta T)X[k\Delta T]+(B\Delta T)U[k\Delta T]=GX[k\Delta T]+HU[k\Delta T] X[(k+1)ΔT]=(I+AΔT)X[kΔT]+(BΔT)U[kΔT]=GX[kΔT]+HU[kΔT]

2.3 两种离散化方法的联系

事实上,精确方法是近似方法的推广,精确法甚至可以用到时变系统中。因此,我们通过某种简化,就可以把精确方法转换为近似方法。

我们知道:
Φ ( t ) = e A t = I + A t + 1 2 ! A 2 t 2 + . . . \Phi(t)=e^{At}=I+At+\frac{1}{2!}A^2t^2+... Φ(t)=eAt=I+At+2!1A2t2+...

把上式代入表达式 G = Φ ( Δ T ) G=\Phi(\Delta T) G=Φ(ΔT) H = ∫ 0 Δ T Φ ( z ) B   d z H=\int_{0}^{\Delta T}\Phi(z)B\ dz H=0ΔTΦ(z)B dz,可得:
G = Φ ( Δ T ) = I + A Δ T + 1 2 ! A 2 Δ T 2 + . . . G=\Phi(\Delta T)=I+A{\Delta T}+\frac{1}{2!}A^2{\Delta T}^2+... G=Φ(ΔT)=I+AΔT+2!1A2ΔT2+...
H = ∫ 0 Δ T Φ ( z ) B   d z = ∫ 0 Δ T I + A z + 1 2 ! A 2 z 2 + . . .   d z ⋅ B = ( Δ T + 1 2 A Δ T 2 + . . . . ) ⋅ B \begin{aligned} H&=\int_{0}^{\Delta T}\Phi(z)B\ dz\\ &=\int_{0}^{\Delta T}I+Az+\frac{1}{2!}A^2z^2+...\ dz \cdot B\\ &=({\Delta T}+\frac{1}{2}A{\Delta T}^2+....)\cdot B \end{aligned} H=0ΔTΦ(z)B dz=0ΔTI+Az+2!1A2z2+... dzB=(ΔT+21AΔT2+....)B

由于,假设采样周期 Δ \Delta Δ很小,所以可以省略高阶项,于是得到:
G = I + A Δ T , H = B Δ T G=I+A{\Delta T},H=B\Delta T G=I+AΔTH=BΔT

可知,上式与近似方法取得的结果完全相同。

3 结论

事实上,我们在仿真中通常都是采用近似方法来迭代求解微分方程,那么这么做有没有问题呢?

在这篇文章中,我们看到,当采样时间很短时,近似方法是可以和精确方法等价的。

所以,只要采用较短的采样时间,我们可以使用近似方法进行模型的仿真!

参考资料

连续状态空间表达式->离散的状态空间表达式
状态方程离散化

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值