之前BLOG中系统参数为已知或者一变化的常数,若条件更加苛刻,系统参数为有界的常数,此时该如何设计控制器,由此引入鲁棒控制。直接放上DR_CAN视频链接:https://www.bilibili.com/video/BV1vW411V7Bh/?spm_id_from=trigger_reload

在维基百科中是这样解释鲁棒控制的:To achieve robust performance and/or stability in presence of bounded modeling error。直译就是在存在有界模型误差的情况下实现强大的性能和/或稳定性。

鲁棒控制器包括三种,接下来介绍这三种控制器并进行比较:

Controller Sliding Mode(滑模控制) High Gain(高增益) High Frequency(高频)
UauxU_{aux}Uaux辅助控制器 ρe∣e∣\rho\frac{e}{\left\vert e\right\vert}ρee 1ερ2e\frac{1}{\varepsilon}\rho^2eε1ρ2e ρ2eρ∣e∣+ε\frac{\rho^2e}{\rho\left\vert e\right\vert+\varepsilon}ρe+ερ2e
t→∞t\to\inftyt e→0e\to 0e0 e≤εke\leq\sqrt{\frac{\varepsilon}{k}}ekε e≤εke\leq\sqrt{\frac{\varepsilon}{k}}ekε

若减小ε\varepsilonε的值,eee的值将减小,但uuu会随之增大,即:ε↓,e↓,u↑。\varepsilon\downarrow,e\downarrow,u\uparrow。εeu

假设有这样一个模型:x˙=ax2+u\dot{x}=ax^2+ux˙=ax2+u

其中∣a∣≤1\left|a\right|\le1a1,即aaa为一有界的随机常数。设计目标是使得x→xd=2x\to x_d=2xxd=2,即x˙d=0\dot{x}_d=0x˙d=0

令:f(x)=ax2≤∣ax∣2≤x2<x2+0.1=ρ(x)f(x)=ax^2\le\left|ax\right|^2\le x^2<x^2+0.1=\rho(x)f(x)=ax2ax2x2<x2+0.1=ρ(x)

令(uuu为何这样设置的具体证明在这里:https://www.bilibili.com/video/BV1KW411j7VS):u=ke+xd˙+Uaux=ke+Uauxu=ke+\dot{x_d}+U_{aux}=ke+U_{aux}u=ke+xd˙+Uaux=ke+Uaux

============================================================================
接下来进行Design of Experiments(DOF),即Simulink仿真,对三种控制器设置不同参数得到五种不同情况的仿真结果。仿真架构及仿真结果如下:

1.整体仿真架构整体仿真架构
2.High Frequency/epsilon=1High Frequency/epsilon=1
3.仿真结果误差e在这里插入图片描述
4.仿真结果输入u

在这里插入图片描述
在仿真的过程中开始还出现了这样一个错误:在这里插入图片描述
指在Sliding ModeSliding\space ModeSliding Mode模块中SignSignSign函数零点存在问题,即当e=0e=0e=0时,函数为e∣e∣=0∣0∣\frac{e}{\left\vert e\right\vert}=\frac{0}{\left\vert 0\right\vert}ee=00无法计算,所以需要将此零点去除:在这里插入图片描述
将仿真结果进行定量的排名得到如下表格:
在这里插入图片描述
将表格内容以雷达图形式表示如下:在这里插入图片描述
Simulink源文件:
链接:https://pan.baidu.com/s/12inDbNOrZzHzTkNJG4jSVA
提取码:yto7

注:
我在仿真的时候发现我仿真结果的稳态误差High Gain/epsilon=1 < High Frequency/epsilon=0.1High\space Gain/epsilon=1\space <\space High\space Frequency/epsilon=0.1High Gain/epsilon=1 < High Frequency/epsilon=0.1与DR_CAN不同,但是表格和雷达图是按照DR_CAN的结果绘制的。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐