控制系统设计专题(三)——自抗扰控制算法(下)

前言

  上篇中详细阐述了经典的自抗扰控制算法的原理,本篇将围绕两种ADRC算法展开,针对扩张状态观测器的参数整定问题进行详解,同时,对跟踪微分器的几个重要应用进行介绍。

两种典型的ADRC算法

  自抗扰控制算法的核心,在于通过扩张状态观测器动态观测系统的“总扰动”,在补偿系统后,将其简化为积分器串联系统,由此,扩张状态观测器观测得到的“总扰动”补偿环节可等效于PID控制算法中的积分项作用,并且,其没有积分项的负面影响。

  下面介绍两种典型的ADRC控制算法:

  • 改进型非线性ADRC控制算法
      本文的改进型ADRC控制算法,主要针对实际工程中出现的扩张状态观测器估计的“总扰动”无法与真值完全吻合的问题,添加了积分环节,以消除稳态误差。

  • 线性LADRC控制算法
      由于非线性ADRC控制算法参数较多,且始终缺乏其闭环稳定性的理论证明。于是,作为韩京清教授在自抗扰控制算法领域的合作者,高志强先生,于2003年,首次提出一种基于经典ADRC算法思想的改进型线性ADRC控制算法——LADRC

  LADRC主要将扩张状态观测器中的非线性函数替换为线性函数,同时,高志强先生给出了 β01\beta_{01}β02\beta_{02}β03\beta_{03} 与系统带宽之间的关系,大大简化了状态观测器的参数整定过程,且易于理解和实现。

扩张状态观测器参数整定技巧

  • 改进型非线性ADRC控制算法
      本篇针对多旋翼飞行器控制系统,设计了一套扩张状态观测器的参数整定准则:
      (1)记录飞行器的等采样时间间隔的反馈量 yy 以及反馈量的微分 y˙\dot y
      (2)对反馈量的微分 y˙\dot y 进一步微分得到 y¨\ddot y ,由于微分运算引入了较大的噪声,因此本文借助matlab自带的无时延巴特沃兹滤波器对微分后的信号进行滤波处理,以获取最接近真实值的微分信号。若传感器的测量误差可被忽略,则由此可得系统方程中的三个状态变量
    x1(t),x2(t),x3(t)x_{1}(t),x_{2}(t),x_{3}(t) 的近似真值,以此作为扩张状态观测器的输出值 z1(t),z2(t),z3(t)z_{1}(t),z_{2}(t),z_{3}(t)
    ,当扩张状态观测器的参数接近于理想值时,
    z1(t)x1(t),z2(t)x2(t),z3(t)x3(t)z_{1}(t)\rightarrow x_{1}(t), z_{2}(t)\rightarrow x_{2}(t), z_{3}(t)\rightarrow x_{3}(t)
    (3)计算扩张状态观测器的均方误差 S ,如下所示:
    S=k=1n(k1(z1(k)x1(k))+k2(z2(k)x2(k))+k3(z3(k)x3(k)))nS=\sqrt{\frac{\sum_{k=1}^{n}{(k_{1}(z_{1}(k)-x_{1}(k))+k_{2}(z_{2}(k)-x_{2}(k))+k_{3}(z_{3}(k)-x_{3}(k)))}}{n}}
    式中, k1+k2+k3=1k_{1}+k_{2}+k_{3}=1 ,根据实际工程中所关注的扩张状态观测器性能指标来选取不同
    k1,k2,k3k_{1},k_{2},k_{3} 组合。由于观测值 z3(t)z_{3}(t) 的估计精度直接影响整个ADRC控制器的控制品质,本文采用 k1=0.3,k2=0.1,k3=0.6k_{1}=0.3,k_{2}=0.1,k_{3}=0.6 的组合对扩张状态观测器的估计效果进行评估。
    图3.1-3.6为滤波前后扩张状态观测器的输出曲线对比图,其中扩张状态观测器的参数为
    β01=400β02=56000β03=3500000δ=400TT=0.0025\beta_{01}=400、\beta_{02}=56000、\beta_{03}=3500000、\delta=400T、T=0.0025
    从图3.1-3.6可知,滤波前扩张状态观测器 z1,z2,z3z_{1},z_{2},z_{3} 与状态量 x1,x2,x3x_{1},x_{2},x_{3} 的残差的方差分别为19.683、863.254与2396.265;滤波后扩张状态观测器 z1,z2,z3z_{1},z_{2},z_{3} 与状态量 x1,x2,x3x_{1},x_{2},x_{3} 的残差的方差分别为1.635、67.297与186.274。
      由此可见,扩张状态观测器具有与跟踪微分器相似的特性,其对输入信号的噪声较为敏感。输入信号经过滤波后,即当输入信号噪声较小时,扩张状态观测器的输出结果能够很好地跟踪对应的状态量,且具有较小的跟踪时延;输入信息未经滤波,即当输入信号噪声较大时,扩张状态观测器输出信号噪声也较大,这对自抗扰控制器的性能会产生较大的影响。
    控制系统设计专题(三)——自抗扰控制算法(下)
    控制系统设计专题(三)——自抗扰控制算法(下)
    控制系统设计专题(三)——自抗扰控制算法(下)
    控制系统设计专题(三)——自抗扰控制算法(下)
    控制系统设计专题(三)——自抗扰控制算法(下)
    控制系统设计专题(三)——自抗扰控制算法(下)

  • LADRC控制算法
    LADRC算法的线性扩张观测器如下式所示:
    {e=z1yz1=z1+h(z2β01e)z2=z2+h(z3β02e+bu)z3=z3+h(β03e)\begin{cases} e=z_{1}-y \\[2ex] z_{1}=z_{1}+h(z_{2}-\beta_{01}e)\\[2ex] z_{2}=z_{2}+h(z_{3}-\beta_{02}e+bu) \\[2ex] z_{3}=z_{3}+h(-\beta_{03}e) \end{cases}
    高志强先生将参数 β01β02β03\beta_{01}, \beta_{02} , \beta_{03}与系统的带宽联系在一起,并给出了以下一般性关系,
    其中 ω\omega 的取值一般与系统带宽呈倍数关系:

  • 对于一阶系统有
    β01=2ω,β02=ω2\beta_{01} =2\omega ,\beta_{02} = \omega^2

  • 对于二阶系统有
    β01=3ω,β02=3ω2,β03=ω3\beta_{01} =3\omega ,\beta_{02} = 3\omega^2,\beta_{03}=\omega^3

  • 对于三阶系统有
    β01=4ω,β02=6ω2,β03=4ω3.β04=ω4\beta_{01} =4\omega ,\beta_{02} = 6\omega^2,\beta_{03}=4\omega^3.\beta_{04}=\omega^4

跟踪微分器在多旋翼飞行器控制系统中的妙用

  • 柔化输入信号
      跟踪微分器除了可以对误差信号设计过渡过程,也可以针对一些输入/给定信号进行过渡过程设计,以此,从源头避免信号突变的问题。那么这两者的区别在于哪里?
    对于多旋翼飞行器控制系统而言,我们往往加入一些前馈环节以提高控制系统的动态响应速度,而前馈环节输出较大的时刻,往往也是对应着给定信号突变的时刻。因此,直接对给定信号设计过渡过程的控制效果,往往优于对误差信号设计过渡过程。

  • 相位超前补偿
      对于一些轴距较大,电机转速较慢,桨叶尺寸较大的多旋翼飞行器,其执行器的动态响应速度较慢,因此,我们可以适当地对反馈信号进行相位超前补偿处理,使得系统的动态响应速度能够达到预期效果。下式为相位超前补偿算法,其中 fhan 函数表达式可详见上一篇
    {fh=fhan(v1v(t),v2,r,h1)v1=v1+hv2v2=v2+hfhy(t)=1/γ(v1(t)+λh1v2(t)),γ>1\begin{cases} fh=fhan(v_{1}-v(t),v_{2},r,h_{1})\\[2ex] v_{1}=v_{1}+hv_{2}\\[2ex] v_{2}=v_{2}+hfh\\[2ex] y(t)=1/\gamma(v_{1}(t)+\lambda h_{1}v_{2}(t)),\gamma>1 \end{cases}

多旋翼飞行控制系统设计

  这里以四旋翼飞行器为例,如图5.1所示为四旋翼飞行控制系统结构图。
控制系统设计专题(三)——自抗扰控制算法(下)
  本文设计的飞行控制系统采用串级控制结构。内环进行飞行器的姿态增稳控制,外环实现轨迹控制。对于高度通道,采用位置、速度、加速度控制的串级结构,如图5.2所示。位置控制回路与速度控制回路采用比例控制器进行控制,而加速度控制回路则采用ADRC控制器进行控制。

控制系统设计专题(三)——自抗扰控制算法(下)
  图5.3所示为水平控制通道,采用位置、速度、姿态角、角速度控制的串级结构。其中位置控制回路采用比例控制器进行控制,速度控制回路采用ADRC控制器进行控制,姿态角控制回路采用比例控制器进行控制,而角速度控制回路则采用ADRC控制器进行控制。
控制系统设计专题(三)——自抗扰控制算法(下)
  对于航向通道,采用姿态角与角速度的串级控制结构,航向角控制回路采用比例控制器进行控制,角速度控制采用ADRC控制器进行控制,如下图5.4所示。
控制系统设计专题(三)——自抗扰控制算法(下)
  尽管扩张状态观测器,能够较准确地估计总扰动,并对控制量进行修正。最终将控制对象简化成积分器串联系统,使得自抗扰控制器能够实现无静差控制。然而,实际工程中,由于传感器噪声、参数的时变性以及其他未知因素的影响,扩张状态观测器估计得到的扰动往往存在迟滞现象,同时,其估计精度受限于传感器噪声,被控对象往往无法简化为积分器串联系统,这使得无积分控制的自抗扰控制器难以完全消除控制系统的稳态误差。因此,本文设计的控制器中,在传统的自抗扰控制器计算得到的控制量基础上,增加了积分项控制,以提高控制系统的稳态精度。

总结

  本篇介绍了高志强先生提出的LADRC控制算法以及改进型非线性ADRC控制算法。同时,针对自抗扰控制算法的核心部分——扩张状态观测器的参数整定问题进行了详解。而后,针对跟踪微分器在实际工程中的几个妙用进行了阐述,最后针对多旋翼飞行器的控制系统结构设计进行了详解。