【自抗扰控制ADRC】跟踪微分器



何为跟踪微分器(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(tu)=0d=2rdr2(tu)d=r2t2rd+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=[0r212r]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} [td]=[0r212r][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)ert+1
其中 C 1 , C 2 C_1,C_2 C1C2跟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)ert+1(C1+C2t)ert=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(x1u+2rx2x2)
    其中 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(x1u+2rx2x2)

这个最速控制综合函数 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 2av12v22=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 x1u是到达目标位置的位移。
通过比较这两个位移项的和,来决定当前是否加减速。
在simulink实现NTD,再观察状态变量的变化过程。
在这里插入图片描述
matlab function模块中的代码如下:

function y = fcn(x1,x2,r)
    y = -r*sign(x1+x2*abs(x2)/(2*r));

示波器结果为:
在这里插入图片描述
在这里插入图片描述

  • 7
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

争取35岁退休

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值