何为跟踪微分器(TD)
跟踪微分器顾名思义,包含了跟踪和微分两个部分。
- 跟踪 t
就是一个对输入信号以某种手段延迟输出的环节 。
在做一些控制时,通常不希望输入信号出现阶跃的情况,这会在系统中产生一定扰动,因此通常会用一种 " 斜坡算法 "使输入信号变得更平缓。这在变化的输入信号中体现出平滑滞后的效果,看起来像是经过这一 “斜坡算法” 的输出信号在跟踪输入信号。
- 微分 d
微分是指跟踪信号微分后的信号,代表着跟踪信号的变化率。
微分可以理解成变化速度,当我们想要快速精准到达目标信号时,既要保证快速,也要保证精准。而这两者通常是相悖的,快速往往伴随着超调(刹不住车)。因此如果能把握好速度的快慢,在离得远时加速,在快要到达时减速,就可以避免刹不住车的情况。
线性跟踪微分器(LTD)数学描述
- 建立线性状态方程,其中状态变量为
x
⃗
=
[
x
1
x
2
]
=
[
t
d
]
\vec{x}=\begin{bmatrix}x_1\\x_2\end{bmatrix}=\begin{bmatrix}t\\d\end{bmatrix}
x=[x1x2]=[td],输入信号为
u
u
u,其状态方程为
x ′ ⃗ = A x ⃗ + B u y ⃗ = x ⃗ \vec{x'}=A\vec{x}+Bu \\ \vec{y}=\vec{x} x′=Ax+Buy=x
在自动控制理论中,常见的LTD是临界阻尼的二阶惯性环节, 其传递函数表示为
Y ( s ) U ( s ) = G ( s ) = r 2 s 2 + 2 r s + r 2 \frac{Y(s)}{U(s)} = G(s) = \frac{r^2}{s^{2}+2rs+r^2} U(s)Y(s)=G(s)=s2+2rs+r2r2
其中 r r r是自然频率;
将输入信号 u u u和输出信号 t t t代进惯性环节,可以得到:
t ′ ′ + 2 r t ′ + r 2 t = r 2 u t''+2rt'+r^2t=r^2u t′′+2rt′+r2t=r2u
又 t ′ = d , t ′ ′ = d ′ t'=d,t''=d' t′=d,t′′=d′,代入上式可以得到:
d ′ + 2 r d + r 2 ( t − u ) = 0 → d ′ = − 2 r d − r 2 ( t − u ) → d ′ = − r 2 t − 2 r d + r 2 u d'+2rd+r^2(t-u)=0\\ \rightarrow d'=-2rd-r^2(t-u)\\ \rightarrow d'=-r^2t-2rd+r^2u d′+2rd+r2(t−u)=0→d′=−2rd−r2(t−u)→d′=−r2t−2rd+r2u
又 d ′ = x 2 ′ , d = x 2 d'=x_2',d=x_2 d′=x2′,d=x2,代入到状态方程中,可以得到矩阵 A , B A,B A,B为:
A = [ 0 1 − r 2 − 2 r ] B = [ 0 r 2 ] A=\begin{bmatrix} 0&1 \\ -r^2&-2r \end{bmatrix}\\ B=\begin{bmatrix} 0\\ r^2 \end{bmatrix} A=[0−r21−2r]B=[0r2]
整理后,得到
[ t ′ d ′ ] = [ 0 1 − r 2 − 2 r ] [ t d ] + [ 0 r 2 ] u [ y 1 y 2 ] = [ t d ] \begin{bmatrix} t'\\ d' \end{bmatrix} =\begin{bmatrix} 0&1 \\ -r^2&-2r \end{bmatrix} \begin{bmatrix} t \\ d \end{bmatrix} +\begin{bmatrix} 0\\ r^2 \end{bmatrix} u \\ \begin{bmatrix} y1 \\ y2 \end{bmatrix} = \begin{bmatrix} t\\ d \end{bmatrix} [t′d′]=[0−r21−2r][td]+[0r2]u[y1y2]=[td]到这里大多数文章就没有后续的描述了,但其实我在学习到这部分的时候就有一个疑问,这个参数$r$的数学意义是什么,该怎么选取这个参数的数值呢,它又是如何影响着LTD的性能。后面的这部分内容是对参数r的讨论,感兴趣的可以往下看,反之则可以直接跳过。
通过微分方程 t ′ ′ + 2 r t ′ + r 2 t = r 2 u t''+2rt'+r^2t=r^2u t′′+2rt′+r2t=r2u的形式,以单位阶跃响应为例, u = 1 ( t ) u=1(t) u=1(t),观察 t t t随时间变化的过程,观察其达到1时的时间以及参数 r r r在这个过程发挥的作用。
由于 t t t是关于时间的信号,为了避免误解,令 t = h ( t ) t=h(t) t=h(t),前者的t是信号,后者的t是时间。则将上述微分方程整理后得到:
h ′ ′ + 2 r h ′ + r 2 h = r 2 h''+2 r h'+r^{2} h = r ^2 h′′+2rh′+r2h=r2
开始求解微分方程 (悄悄拿出高数课本)
这里不赘述,直接给结论。
h ( t ) = ( C 1 + C 2 t ) e − r t + 1 h(t)=(C_1 +C_2t)e^{-rt}+1 h(t)=(C1+C2t)e−rt+1
其中 C 1 , C 2 C_1,C_2 C1,C2跟0时刻状态有关,不进行讨论。
我们只需要关注当 h ( t ) = 1 h(t)=1 h(t)=1是 t t t的值,用于衡量跟踪性能。
h ( t ) = ( C 1 + C 2 t ) e − r t + 1 → ( C 1 + C 2 t ) e − r t = 0 h(t)=(C_1 +C_2t)e^{-rt}+1\\ \rightarrow(C_1 +C_2t)e^{-rt}=0 h(t)=(C1+C2t)e−rt+1→(C1+C2t)e−rt=0
显然, r r r是衰减因子, r r r越大, h ( t ) h(t) h(t)收敛的越快。
非线性跟踪微分器(NTD)数学描述
- 对比LTD,NTD采用的不是线性二阶惯性环节,而是特殊的非线性函数(最速控制综合函数),以实现跟踪的目的。
连续系统的最速控制综合函数的数学描述为
f h a n = − r s i g n ( x 1 − u + x 2 ∣ x 2 ∣ 2 r ) f_{han}=-rsign(x_1-u+\frac{x_2 |x_2|}{2r}) fhan=−rsign(x1−u+2rx2∣x2∣)
其中 x 1 x_1 x1为跟踪信号, u u u为输入信号, x 2 x_2 x2为微分信号, r r r为加速度的绝对值,则NTD的非线性状态方程为:
x 1 ′ = x 2 x 2 ′ = f h a n = − r s i g n ( x 1 − u + x 2 ∣ x 2 ∣ 2 r ) x_1' = x_2 \\ x_2' = f_{han}=-rsign(x_1-u+\frac{x_2 |x_2|}{2r}) x1′=x2x2′=fhan=−rsign(x1−u+2rx2∣x2∣)
这个最速控制综合函数 f h a n f_{han} fhan是基于物理公式得到的,假设当前速度为 v 1 v_1 v1,以固定的加速度 a a a运动,位移了 x x x后速度为 v 2 v_2 v2,则满足公式:
v 1 2 − v 2 2 2 a = x \frac{v^{2}_{1}- v_{2}^{2}}{2a}=x 2av12−v22=x
所以 s i g n sign sign中的第二项 x 2 ∣ x 2 ∣ 2 r \frac{x2|x_2|}{2r} 2rx2∣x2∣是减速到0的位移,第一项 x 1 − u x_1 - u x1−u是到达目标位置的位移。
通过比较这两个位移项的和,来决定当前是否加减速。
在simulink实现NTD,再观察状态变量的变化过程。
matlab function模块中的代码如下:文章来源:https://www.toymoban.com/news/detail-767370.html
function y = fcn(x1,x2,r)
y = -r*sign(x1+x2*abs(x2)/(2*r));
示波器结果为:
文章来源地址https://www.toymoban.com/news/detail-767370.html
到了这里,关于【自抗扰控制ADRC】跟踪微分器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!