精华内容
下载资源
问答
  • 鲁棒控制matlab程序

    热门讨论 2009-11-12 05:41:47
    is how to write the Matlab code. I will here try to give a short overview of some useful Matlab functions. Hopefully this will help you when trying to design your first H1- controller.
  • 若将常用的多变量鲁棒控制技术应用到航空涡扇发动机控制问题中,存在控制器阶数过高、复杂等济,从而导致实现困难。在过去十几年,定量反馈理论(QuantitativeFeedbackTheory,QFT)[1-6]引起控制界广泛关注。SISOQFT...

    现代航空发动机在其工作过程中,由于工作状态和飞行条件变化以及未建模动态的影响,其控制系统的数学模型明显呈现不确定性,从而给发动机控制系统设计带来了一定的困难。若将常用的多变量鲁棒控制技术应用到航空涡扇发动机控制问题中,存在控制器阶数过高、复杂等济,从而导致实现困难。在过去十几年,定量反馈理论(QuantitativeFeedbackTheory,QFT)[1-6]引起控制界广泛关注。SISOQFT控制系统鲁棒设计方法已经很成熟,并获得了广泛地应用,MATLABQFT工具箱已说明了这一点。但QFT在MIMO系统中的应用仍在研究与探讨之中,其原因是MIMO控制系统的输入输出存在耦合,常规解耦技术通过适当的补偿器去除MIMO控制系统回路之间耦合,很难处理具有模型不确定性发动机控制问题,且其方法步骤复杂,远离工程实现和不易被理解[4,6]。本文以某型涡扇发动机(22MIMO)作为研究对象,推导了非对角控制器控制律的求解公式,给出一个具有明确物理意义的控制律评价指标,并给出QFT用于MIMO系统控制律设计的方法和步骤。最后,将该方法应用于某型涡扇发动机系统控制中,仿真表明该方法具有良好控制效果。1问题描述某型航空涡扇发动机双变量控制系统框图见图1所示,其中,被控对象P=(pij),控制器G=(gij),滤波器F=(fij),PP,P为不确定性参数变化构成的被控对象的组合。图1双变量航空发动机控制系统框图由图1可知,这是一个标准的二自由度控制系统,其被控过程的输出响应函数为y=PI(+s)PG((ss))GF((ss))r(s)=T(s)F(s)r(s)=TY|R(s)r(s)(1)式中,T(s)=P(s)G(s)/[I+P(s)G(s)]为系统闭环传递函数,TY|R(s)=T(s)F(s)为系统闭环频率矩阵。假定系统跟踪性能指标为TL()={tiLj()},TU()={tiUj()}(2)系统闭环频率特性TY|R(j)={tiYj|R(j)}(3)边界约束为tiLj()|tiYj|R(j)|tiUj(),i,j=1,…,n(4)系统设计目标,即寻找nn控制器G(s)和nn前置滤波器F(s),使得系统闭环频率特性TY|R(j)满足边界约束式(4)。2MIMO系统控制律推导及QFT设计方法2.1MIMO系统控制律推导令P(s)=P-1(s),有P(s)=Pd(s)+Pb(s),G(s)=Gd(s)+Gb(s)其中,下标d表示矩阵的对角部分,下标b表示矩阵的非对角部分。令F(s)r(s)=r(s),则由式(1)有[P(s)+G(s)]T(s)r(s)=G(s)r(s)进一步有T(s)r(s)=[I+Pd-1(s)Gd(s)]-1Pd-1(s)Gd(s)r(s)+[I+Pd-1(s)Gd(s)]-1Pd-1(s){Gb(s)r(s)-[Pb(s)+Gb(s)]T(s)r(s)}(5)由式(5)可知,系统闭环传递函数矩阵T(s)可分为两部分:对角部分Td(s)和非对角部分Tb(s),且Td(s)为Td(s)=[I+Pd-1(s)Gd(s)]-1Pd-1(s)Gd(s)(6)图2第i回路等效SISO系统结构图由式(6)知,闭环传递函数对角部分Td(s)既不含控制对象P(s)的非对角项Pb(s),也不含控制器矩阵G(s)的非对角项Gb(s)。这相当于将系统Pd-1(s)分解成n个SISO系统进行QFT控制器设计。每一回路控制结构如图2。对于闭环传递函数非对角部分,有Tb(s)=[I+Pd-1(s)Gd(s)]-1Pd-1(s){Gb(s)-[Pb(s)+Gb(s)]T(

    展开全文
  • 1、项目调度问题的一些项目调度问题的一些 matlabmatlab 开发的工具箱开发的工具箱Matlab 鲁棒控制工具箱(Robust Control Toolbox)目 录一、引言 21、工具箱函数简介 21)不确定元素22)不确定矩阵...

    《项目调度问题的一些matlab开发的工具箱》由会员分享,可在线阅读,更多相关《项目调度问题的一些matlab开发的工具箱(39页珍藏版)》请在金锄头文库上搜索。

    1、项目调度问题的一些项目调度问题的一些 matlabmatlab 开发的工具箱开发的工具箱Matlab 鲁棒控制工具箱(Robust Control Toolbox)目 录一、引言 21、工具箱函数简介 21)不确定元素22)不确定矩阵和系统23)不确定模型的控制34)不确定模型间的互连35)模型降阶 36)鲁棒性和最坏情况分析 47)参数依赖系统的鲁棒性分析48)控制器综合49) 综合510)采样系统511)增益调度512)频域响应模型513)公用函数614)LMI 函数 615)LMI 特征 616)LMI 求解 617)结果验证618)修改 LMI 对象72、不确定性建模73、最坏情况下的。

    2、性能分析 94、MIMO 系统的鲁棒控制器设计115、模型降阶及逼近 136、作者简介 167、参考文献 17代码 1 ACC Benchmark Problem 18代码 2 NASA HiMAT 18二、多变量回路成形设计19三、模型降阶201、Hankel 奇异值202、加性误差方法和乘性误差方法 223、modreal 函数 264、ncfmr 函数285、参考文献 30四、鲁棒性分析 301、不确定性建模302、鲁棒性分析343、MIMO 系统的鲁棒性分析 384、最坏情况下增益分析43Matlab 鲁棒控制工具箱(Robust Control Toolbox)鲁棒控制工具箱提供了一。

    3、系列的函数和工具以支持带有不确定元素的多输入多输出控制系统的设计。在该工具箱的帮助下,你可以建立带有不确定参数和动态特性的 LTI 模型,也可以分析 MIMO 系统的稳定性裕度和最坏情况下的性能。该工具箱提供了一系列的控制器分析和综合函数,能够分析最坏情况下的性能及确定最坏情况下的参数值。利用模型降阶函数能够对复杂模型进行简化。同时提供了先进的鲁棒控制方法,如H2、H、LMI、 分析等。一、引言1、工具箱函数简介1)不确定元素ucomplex创建不确定复数参量ucomplexm创建不确定复数矩阵udyn创建未定义结构的不确定动态系统对象ultidyn创建线性时不变不确定性对象ureal创建不确。

    4、定实数参量2)不确定矩阵和系统diag对不确定矩阵和系统对角化randatom创建随机不确定性 atom 对象randumat创建随机不确定性矩阵randuss创建随机不确定性状态空间模型ufrd创建不确定性频域响应数据对象(ufrd) ,或者将其它模型转换为 ufrd 对象umat创建不确定性矩阵uss定义不确定性状态空间模型,或者将 LTI 对象转换为不确定性状态空间模型rss创建随机稳定连续时间状态空间模型3)不确定模型的控制actual2normalized 对于给定的 atom 对象,计算其与标准值间的归一化距离gridureal将 ureal 对象均匀网格化isuncertain判。

    5、断是否为不确定性系统lftdata将不确定对象分解为固定的规范型和固定的不确定性部分normalized2actual 将正规化坐标系中的 atom 值转换为实际值repmat复制和命名不确定矩阵simplify简化不确定对象的表达式squeeze将 umat 对象去掉一维usample产生随机不确定对象usubs替换不确定对象中的不确定参数uss/ssbal将不确定系统中的状态/不确定性标量化4)不确定模型间的互连iconnect创建空白的互连对象icsignal创建 icsignal 对象imp2exp将线性关系转换为输入-输出关系stack将不确定矩阵、模型或者数组压入堆中sysic互连。

    6、确定与不确定矩阵或系统5)模型降阶balancmr利用均方根法求降阶模型bstmr利用 Schur 法求随机模型的降阶模型hankelmr为降阶前的最小 Hankel 测度hankelsv计算稳定/不稳定系统、连续/离散系统的 Hankel奇异值imp2ss将脉冲响应模型转换为近似状态空间模型modreal模态形式的实现ncfmr归一化的互质降阶模型reduce利用 Hankel 奇异值法降阶schurmr利用 Schur 法求降阶模型slowfast将状态空间模型按照快-慢原则分解stabsep将状态空间模型按照稳定/不稳定原则分解6)鲁棒性和最坏情况分析cpmargin计算包含反馈控制器的。

    7、闭环系统的稳定性裕度gapmetric计算两个系统间的 gap、nugap 距离上限loopmargin分析反馈回路loosens分析包含反馈控制器的闭环系统的灵敏度mussv计算所构造的奇异值()的界限mussvextract从 mussv 创建的数据结构中提出 muinfo 对象ncfmargin计算反馈回路的归一化稳定性裕度popov执行 Popov 鲁棒性检验robopt创建可供 robuststab 和 robustperf 选择的对象robustperf计算不确定多变量系统的鲁棒性能裕度robuststab计算不确定多变量系统的鲁棒稳定性裕度wcgain计算不确定系统的最坏情况下的。

    8、增益界限wcgopt创建可供 wcgain、wcsens 和 wcmargin 使用的对象wcmargin计算最坏情况下反馈系统的增益/幅值裕度wcnorm计算最坏情况下不确定矩阵的范数wcsens计算最坏情况下反馈回路的灵敏度和补灵敏度函数7)参数依赖系统的鲁棒性分析aff2pol将仿射参数依赖系统(Parameter-Dependent Systems,P-系统)转换为多胞模型decay多胞模型或者 P-系统的二次衰减速率ispsys是否为 P-系统pdlstab评估多胞模型或者 P-系统的鲁棒稳定性pdsimulP-系统沿参数变化轨迹的时域响应polydec计算多胞坐标psinfo多胞模。

    9、型或者 P-系统的设置参数psys设置线性的多胞或者参数依赖系统pvec设置不确定性向量或者时变参数pvinfo参数向量的参数quadperf计算多胞模型或者 P-系统的二次型 H指标guadstab评估多胞模型或者 P-系统的二次型稳定性8)控制器综合augw为加权混合灵敏度回路成形设计创建增广系统模型h2hinfsyn极点配置约束下的混合 H2/H设计h2syn针对 LTI 模型设计 H2 控制器hinfsyn针对 LTI 模型设计 H最优控制器loopsynH回路成形控制器设计ltrsynLQG 回路传递函数恢复控制器设计mkfilter创建 Bessel,Butterworth,Che。

    10、byshev,RC 滤波器mixsynH混合灵敏度控制器设计ncfsynH归一化互质因子控制器设计sigma画出 LTI 反馈回路的奇异值makeweightH混合灵敏度中的权重(mixsyn,augw)9) 综合cmsclsyn常值矩阵 综合dksyn利用 综合 D-K 迭代法进行鲁棒控制器设计dkitopt创建供 dksyn 使用的对象drawmag鼠标交互操作函数fitfrd针对状态空间模型,合理化 D 标度的频域响应fitmagfrd针对稳定、最小相位的状态空间模型,合理化标量幅值数据genphase针对单输入单输出、实有理、最小相位传递函数,合理化的幅值响应数据10)采样系统sdhi。

    11、nfnorm计算采样系统的 L2 范数sdhinfsyn采样系统的 H控制器设计sdlsim带有反馈回路的采样系统的时域响应11)增益调度hinfgs增益调度 H控制器设计12)频域响应模型frd/loglogfrd 对象的 log-log 度量frd/semilogxfrd 对象的半对数(semilog)度量frd/rcondfrd 对象的互逆条件判断frd/schurfrd 对象的 Schur 分解frd/svdfrd 对象的奇异值分解13)公用函数bilin多变量频域双线性变换(s 域、z 域)dmplot对增益和相位裕度进行说明mktito将 LTI 系统分解为两输入-两输出系统sec。

    12、tf状态空间模型的双线性变换skewdec创建反对称矩阵symdec创建对称矩阵14)LMI 函数getlmisLMI 系统的内部描述lmiedit用 matlab 语言编辑或显示 LMI 系统lmiterm增加新项给现有的 LMI 对象lmivar在现有的 LMI 系统中设定矩阵变量newlmi增加新的 LMI 对象给现有的 LMI 系统setlmis初始化 LMI 系统15)LMI 特征dec2mat从决策变量向量中提取出矩阵值decinfo描述矩阵变量和决策变量中的联系decnbrLMI 系统中的决策变量个数lmiinfo现有 LMI 对象的信息lminbrLMI 系统中的 LMI 对象。

    13、的个数mat2dec从矩阵中提取决策变量向量matnbrLMI 系统中矩阵变量的个数16)LMI 求解defcx为 mincx 对象设定 cTx 对象feasp求解给定的 LMI 系统gevpLMI 约束下的广义特征值mincxLMI 约束下最小化线性对象17)结果验证evallmi针对给定的决策变量评估 LMIshowlmi待评估 LMI 对象的左边项和右边项18)修改 LMI 对象dellmi从现有 LMI 系统中移除 LMI 对象delmvar从带求解的 LMI 问题中移除矩阵变量setmvar举例矩阵变量和待评估的 LMI 项2、不确定性建模鲁棒控制的核心是对不确定 LTI 系统的建模。

    14、。系统的不确定性来源于系统参数不能精确获得,或者变化范围很大,比如系统零极点位置未知、增益未知。也可能存在结构未知。利用鲁棒控制工具箱可以利用 matlab 对象构造不确定 LTI 系统。例 1:ACC Bechmark Problem考虑如图 1 所示的 Bechmark Problem,两辆卡车由弹簧连接,不考虑摩擦力。图 1 ACC Benchmark Problem图 1 的结构框图见图 2 所示,图 2 中的一些传递函数为其中,参数 m1,m2,k 具有 20%的不确定性,即m1 = 10.2,m2 = 10.2,k = 10.2图 2 “ACC Benchmark“ Two-Car。

    15、t System Block Diagram y1 = P(s) u1最里面的虚线框传递函数矩阵为其中,输入为 u1, u2, 输出为 y1, y2。利用 matlab 对不确定系统 P 建模如下:% Create the uncertain real parameters m1, m2, m2 = ureal(m2,1,percent,20);k = ureal(k,1,percent,20);s = zpk(s); % create the Laplace variable sG1 = ss(1/s2)/m1; % Cart 1G2 = ss(1/s2)/m2; % Cart 2% Now。

    16、 build F and PF = 0;G1*1 -1+1;-1*0,G2; P = lft(F,k) % close the loop with the spring k系统 P 为 SISO、不确定、状态空间模型,具有 4 个状态和 3 个不确定参数,m1,m2 和 k,利用下面的命令得到标称模型:zpk(P.nominal)得到返回结果:Zero/pole/gain:1-s2 (s2 + 2)如果不确定系统 P 与一 LTI 控制器 C 连接,连接形式见图 3 所示。图 3 控制器连接得到闭环控制系统 y1 = T(s) u1 。针对三个不确定参数 m1,m2 和k 进行五次蒙特卡洛仿真,观察 00.1s 内的控制结果,程序如下:% Create the uncertain real parameters m1, m2, m2 = ureal(m2,1,percent,20);k = ureal(k,1,percent,20);s = z。

    展开全文
  • 利用matlab实现H-infinity鲁棒控制,学习鲁棒控制matlab编程的很好教程 利用matlab实现H-infinity鲁棒控制,学习鲁棒控制matlab编程的很好教程
  • 利用matlab实现H-infinity鲁棒控制

    热门讨论 2011-12-08 09:58:10
    利用matlab实现H-infinity鲁棒控制,学习鲁棒控制matlab编程的很好教程
  • MATLAB7.8鲁棒控制宝典

    2009-08-16 16:30:07
    MATLAB7.8鲁棒控制宝典MATLAB7.8鲁棒控制宝典MATLAB7.8鲁棒控制宝典MATLAB7.8鲁棒控制宝典
  • MATLAB7.8鲁棒控制

    2017-09-15 20:20:50
    MATLAB 鲁棒控制工具包的英文使用手册
  • Matlab 鲁棒控制宝典

    2011-03-17 15:18:04
    Matlab 鲁棒控制宝典 对于学习鲁棒控制的仿真工具
  • 基于MATLAB鲁棒控制工具箱,设计出计算机硬盘磁头的H无穷鲁棒控制器,具有良好的性能。
  • MATLAB鲁棒控制设计

    2015-05-01 16:34:52
    这是一本关于鲁棒控制的书,主要内容是关于如何利用MATLAB 进行相关鲁棒控制的设计
  • 【matlab】单摆鲁棒滑模控制matlab实现从简到繁

    千次阅读 多人点赞 2020-07-01 09:30:55
    这是前几周现代鲁棒控制课程一位同学的大作业,ppt做的很详细,但是并没有分享代码,我就根据ppt里的单摆模型以及所涉及到的鲁棒滑模控制方法和思路,自己搭了一套仿真程序,非常便捷,需要切换控制方法时只需要把...

    前言

    这是前几周现代鲁棒控制课程一位同学的大作业,ppt做的很详细,但是并没有分享代码,我就根据ppt里的单摆模型以及所涉及到的鲁棒滑模控制方法和思路,自己搭了一套仿真程序,非常便捷,需要切换控制方法时只需要把目标代码取消注释,便可以跑出相应结果,便于新手对鲁棒滑膜控制进行学习。

    鲁棒滑模控制

    知识点部分引用截图:

    定义部分

    在这里插入图片描述
    在这里插入图片描述

    基本设计过程

    在这里插入图片描述
    在这里插入图片描述

    仿真

    基本模型

    在这里插入图片描述

    %% 单摆相关参数
    theta = -1.00;                                                           %   攻角deg   x1
    omegaz =  2.00;                                                          %   俯仰角速度,deg/s   x2
    del_theta = 0.00;                                                           %   攻角微分deg   
    del_omegaz =  0.00;                                                          %   俯仰角速度微分,deg/s
    g = 9.78;                                                                   %重力加速度
    J = 1.2;                                                                   %   转动惯量kg/m^2
    L = 1.74;                                                                     %   摆长m
    V_s = 0.18;                                                                     %   摩擦系数m/s^2
    
        %二阶系统非线性微分方程
        del_theta = omegaz;
        del_omegaz = - 0.5 *g * sin(theta) / L - V_s * omegaz / J + u / J;
        f = - 0.5 *g * sin(theta) / L - V_s * omegaz / J;
    

    滑模控制

    在这里插入图片描述

        method = '滑模控制';
        s = del_theta + c * theta;                                                              %   滑模面
        u = - ep * sign(s) - f - c * omegaz;        %滑模控制基于趋近律
        u = - f - c * omegaz;        %滑模控制基于等效控制原理
    

    在这里插入图片描述

    终端滑模控制

    在这里插入图片描述

        method = '终端滑模控制';
        s = omegaz + alpha * theta^(q/p);                                                              %   终端滑模面
        u = - ep * sign(s)- f - alpha * beta * abs(theta)^(beta - 1) * omegaz;        %终端滑模控制基于趋近律
        u = - f - alpha * beta * abs(theta)^(beta - 1) * omegaz;        %终端滑模控制基于等效控制原理
    

    在这里插入图片描述

    快速终端滑模控制

    在这里插入图片描述

        method = '快速终端滑模控制';
        s = omegaz + k1 * theta^(a1) + k2 * theta^(a2);                                                              %   快速终端滑模面
        u = - f - k1 * a1 * abs(theta)^(a1 - 1) * omegaz - k2 * a2 * abs(theta)^(a2 - 1) * omegaz;        %快速终端滑模控制基于等效控制原理
    
    

    在这里插入图片描述

    非奇异终端滑模控制

    在这里插入图片描述

        method = '非奇异终端滑模控制';
        s = theta + alpha * omegaz^(p/q);                                                              %   非奇异终端滑模面
        u = - f - q/(alpha * p) * omegaz ^ (2-p/q);        %非奇异终端滑模控制基于等效控制原理
    
    

    在这里插入图片描述

    非奇异快速终端滑模控制

    在这里插入图片描述

        method = '非奇异快速终端滑模控制';
        s = theta + k3 * sign(theta)^(a3) + k4 * sign(omegaz)^(a4);                                                              %   非奇异快速终端滑模面
        u = (- omegaz - k3 * a3 * abs(theta)^(a3 - 1) * omegaz)/(k4 * a4 * abs(omegaz)^(a4 - 1))- f ;        %非奇异快速终端滑模控制基于等效控制原理
    
    

    在这里插入图片描述
    注:控制器中基于趋近律和基于等效控制原理的区别为是否带有滑模面的符号函数,可以根据前两个控制器的代码观察得出。

    整体代码

    % 单摆滑模控制测试仿真
    %根据现代鲁棒控制桑豪ppt
    % Jun 24 2020 Wed  Jonny Su
    clc;
    close all;
    clear all;
    cd ('D:\OneDrive - 徐州开放大学\NPU\program\Morphing\Robust');
    %% 单摆相关参数
    theta = -1.00;                                                           %   攻角deg   x1
    omegaz =  2.00;                                                          %   俯仰角速度,deg/s   x2
    del_theta = 0.00;                                                           %   攻角微分deg   
    del_omegaz =  0.00;                                                          %   俯仰角速度微分,deg/s
    g = 9.78;                                                                   %重力加速度
    J = 1.2;                                                                   %   转动惯量kg/m^2
    L = 1.74;                                                                     %   摆长m
    V_s = 0.18;                                                                     %   摩擦系数m/s^2
    
    %% 控制参数
    
    %   滑模面
    c = 0.3;
    ep = 0.5;
    u = 0;
    
    %   终端滑模面&非奇异终端滑模面 
    % alpha = 0,9;      %什么神仙bug
    alpha = 0.9;
    p = 9;
    q = 7;
    
    %   快速终端滑模面
    k1 = 1.1;
    k2 = 0.9;
    a1 = 9/7;
    a2 = 7/9;
    
    %   非奇异快速终端滑模面
    k3 = 1.1;
    k4 = 0.9;
    a3 = 3;
    a4 = 9/7;
    beta = q/p;  %两个奇数
    
    %% Simulation parameters
    
    step = 0.01;               %步长
    t = 0;                      %时间
    n = 1;                      %步数
    
    %% 二阶系统仿真
    
    while (t < 50)              %仿真时间50s
        %二阶系统非线性微分方程
        del_theta = omegaz;
        del_omegaz = - 0.5 *g * sin(theta) / L - V_s * omegaz / J + u / J;
        f = - 0.5 *g * sin(theta) / L - V_s * omegaz / J;
        %% 控制器设计
    
        %滑模控制
        method = '滑模控制';
        s = del_theta + c * theta;                                                              %   滑模面
        u = - ep * sign(s) - f - c * omegaz;        %滑模控制基于趋近律
    %     u = - f - c * omegaz;        %滑模控制基于等效控制原理
    
        %终端滑模控制
    %     method = '终端滑模控制';
    %     s = omegaz + alpha * theta^(q/p);                                                              %   终端滑模面
    %     u = - ep * sign(s)- f - alpha * beta * abs(theta)^(beta - 1) * omegaz;        %终端滑模控制基于趋近律
    %     u = - f - alpha * beta * abs(theta)^(beta - 1) * omegaz;        %终端滑模控制基于等效控制原理
    
        %快速终端滑模控制
    %     method = '快速终端滑模控制';
    %     s = omegaz + k1 * theta^(a1) + k2 * theta^(a2);                                                              %   快速终端滑模面
    %     u = - f - k1 * a1 * abs(theta)^(a1 - 1) * omegaz - k2 * a2 * abs(theta)^(a2 - 1) * omegaz;        %快速终端滑模控制基于等效控制原理
    
        %非奇异终端滑模控制
    %     method = '非奇异终端滑模控制';
    %     s = theta + alpha * omegaz^(p/q);                                                              %   非奇异终端滑模面
    %     u = - f - q/(alpha * p) * omegaz ^ (2-p/q);        %非奇异终端滑模控制基于等效控制原理
    
        %非奇异快速终端滑模控制
    %     method = '非奇异快速终端滑模控制';
    %     s = theta + k3 * sign(theta)^(a3) + k4 * sign(omegaz)^(a4);                                                              %   非奇异快速终端滑模面
    %     u = (- omegaz - k3 * a3 * abs(theta)^(a3 - 1) * omegaz)/(k4 * a4 * abs(omegaz)^(a4 - 1))- f ;        %非奇异快速终端滑模控制基于等效控制原理
    
    %% 状态更新 
        states_old = [theta;omegaz];      %弹道倾角 俯仰角速度
        del = [del_theta;del_omegaz];                 %微分量
        states_new = states_old + del * step;           %更新 赋值
        theta = states_new(1);
        omegaz = states_new(2);
        %   保存数据
        Vehicle_states(n,:) = [theta;omegaz]; %
        Del_states(n,:) = [del_theta;del_omegaz];         %
        Time(n) = t;   %时间记录
        Control_states(n,:) =  [u];            %控制变量
        %  时间更新
        t = t + step;  %仿真步长
        n = n + 1;  %计数+1
    end
    
    
    %% 绘图检验
    figure;
    % 速度
    plot(Time,Vehicle_states(:,1),Time,Vehicle_states(:,2),'linewidth',1.5);
    %axis([0 100 1400 1600]) ;
    legend('$\theta(^\circ)$','$\omega_z(^\circ/s)$','FontName','Times New Roman','FontSize',14,'Interpreter','latex')
    grid on;
    title(['控制方法为 ',method,' 时的响应曲线']);
    xlabel('$T(s)$','FontName','Times New Roman','FontSize',14,'Interpreter','latex');
    % ylabel('$\theta(^\circ)$','FontName','Times New Roman','FontSize',14,'Interpreter','latex');
    % set(gca,'FontName','Times New Roman','FontSize',14,'linewidth',1.5);
    
    figure;
    plot(Time,Control_states(:,1),'linewidth',1.5);
    %axis([0 100 18500 21500]) ;
    grid on;
    title(['控制方法为 ',method,' 时的输入信号']);
    xlabel('$T(s)$','FontName','Times New Roman','FontSize',14,'Interpreter','latex');
    ylabel('$input$','FontName','Times New Roman','FontSize',14,'Interpreter','latex');
    % set(gca,'FontName','Times New Roman','FontSize',14,'linewidth',1.5);
    

    以上就是单摆鲁棒滑模控制matlab实现的全部内容,欢迎讨论交流。

    欢迎访问我的个人网站 http://www.josu.top/

    展开全文
  • 基于MATLAB上肢康复机械臂鲁棒控制研究
  • 案例来源于《现代鲁棒控制理论与应用》(梅生伟等) 程序已经调试通过,对于利用matlab鲁棒控制工具箱很有启发。
  • 前言:对于模型准确的对象,我们可以设计控制器直接进行控制,但通常实际情况下总是存在着种种不确定因素,如参数变化,未建模动态变化等,鲁棒控制就是在模型不精确和其他变化因素的条件下,使系统仍能保持预期的...

    鲁棒跟踪逆推控制器设计

    前言:对于模型准确的对象,我们可以设计控制器直接进行控制,但通常实际情况下总是存在着种种不确定因素,如参数变化,未建模动态变化等,鲁棒控制就是在模型不精确和其他变化因素的条件下,使系统仍能保持预期的性能。在这里我只针对未建模动态变化即仅针对存在外部扰动的情况进行讨论,在这种情况下对2R型平面机器人进行控制器的设计。
      对于存在外部扰动的平面2R机器人的动力学方程:M(q)q¨+c(q,q˙)+G(q)+d=τ M\left( q \right) \ddot{q}+c\left( q,\dot{q} \right) +G\left( q \right) +d=\tau M(q)M\left( q \right) 是对称正定的质量矩阵,c(q,q˙)c\left( q,\dot{q} \right) 是包含科氏力和向心力的矢量,G(q)G\left( q \right) 是重力矩矢量,dd 是外部扰动,τ\tau 是关节力矩。

    鲁棒跟踪backstepping控制器设计(matlab实现):

    function [sys,x0,str,ts] = RobustControler(t,x,u,flag)
    switch flag,
      case 0,
        [sys,x0,str,ts]=mdlInitializeSizes;
      case 1,
        sys=mdlDerivatives(t,x,u);
      case {2,4,9},
        sys=[];
      case 3,
        sys=mdlOutputs(t,x,u);
      otherwise
        DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
    end
    function [sys,x0,str,ts]=mdlInitializeSizes   
    sizes = simsizes;
    sizes.NumContStates  = 0; 
    sizes.NumDiscStates  = 0;  
    sizes.NumOutputs     = 6; 
    sizes.NumInputs      = 4;  
    sizes.DirFeedthrough = 1;   
    sizes.NumSampleTimes = 0;   
                               
    sys = simsizes(sizes);
    x0  = [];            
    str = [];                   
    ts  = [];                  
     
    function sys=mdlOutputs(t,x,u)   
    th1 = u(1);
    th2 = u(2);
    q = [th1;th2];
    dth1 = u(3);
    dth2 = u(4);
    dq = [dth1;dth2];
    
    %跟踪轨迹x1d,dx1d,ddx1d
    q1d = 0.5*sin(t) + 0.1*sin(3*t) - 0.2*sin(4*t);
    q2d = 0.1*sin(2*t) + 0.2*sin(3*t) - 0.1*sin(4*t);
    x1d = [q1d; q2d];
    dq1d = 0.5*cos(t) + 0.3*cos(3*t) - 0.8*cos(4*t);
    dq2d = 0.2*cos(2*t) + 0.6*cos(3*t) - 0.4*cos(4*t);
    dx1d = [dq1d;dq2d];
    ddq1d = -0.5*sin(t) - 0.9*sin(3*t) + 3.2*sin(4*t);
    ddq2d = -0.4*sin(2*t) - 1.8*sin(3*t) + 1.6*sin(4*t);
    ddx1d = [ddq1d;ddq2d];
    
    %系统参数
    g = 9.81;
    m1 = 1;
    m2 = 2;
    l1 = 1;
    l2 = 2;
    d = [th1*dth1*sin(th2)+dth1; th2*dth2*cos(th1)+dth2]; %外部干扰矩阵d
    %质量矩阵M
    M = [l2^2*m2+2*l1*l2*m2*cos(th2)+l1^2*(m1+m2) l2^2*m2+l1*l2*m2*cos(th2);
         l2^2*m2+l1*l2*m2*cos(th2) l2^2*m2];
    %离心力和哥氏力矢量
    C = [-m2*l1*l2*sin(th2)*dth2^2-2*m2*l1*l2*sin(th2)*dth1*dth2; m2*l1*l2*sin(th2)*dth1^2];
    %重力矢量
    G = [m2*l2*g*cos(th1+th2)+(m1+m2)*l1*g*cos(th1); m2*l2*g*cos(th1+th2)];
    
    %跟踪误差
    z1 = q - x1d;
    L1 = [2 0;0 2];
    K1 = [3 0 ;0 3];
    A1 = K1;
    %取虚拟控制x2d
    x2d = dx1d - L1*A1*z1;
    z2 = dq - x2d;
    f2 = -inv(M)*G - inv(M)*C;
    xite2 = 2;
    f2_k = f2 - (L1*K1*dx1d+ddx1d+(-L1*K1)*dq);
    L2 = [4 0;0 4];
    K2 = [5 0;0 5];
    A2 = K2 + inv(L2)*(xite2*(d*d'))*inv(L2);
    ut = -M*(f2_k + L2*inv(L1)*z1 + L2*A2*z2);
    
    e1 = th1 - q1d;
    e2 = th2 - q2d;
    de1 = dth1 - dq1d;
    de2 = dth2 - dq2d;
    
    sys(1) = ut(1);
    sys(2) = ut(2);
    sys(3) = e1;
    sys(4) = e2;
    sys(5) = de1;
    sys(6) = de2;
    

    2R型开链机器人动力学模型建立

    function [sys,x0,str,ts] = RobustPlant(t,x,u,flag)
    switch flag,
      case 0, 
        [sys,x0,str,ts]=mdlInitializeSizes;
      case 1, 
        sys=mdlDerivatives(t,x,u);
      case {2,4,9}, 
        sys=[];
      case 3, 
        sys=mdlOutputs(t,x,u);
      otherwise
        DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
    end
    function [sys,x0,str,ts]=mdlInitializeSizes   %系统的初始化
    sizes = simsizes;
    sizes.NumContStates  = 4;   
    sizes.NumDiscStates  = 0;   
    sizes.NumOutputs     = 4;  
    sizes.NumInputs      = 2;   
    sizes.DirFeedthrough = 0;  
    sizes.NumSampleTimes = 0;   
                                
    sys = simsizes(sizes);
    x0  = [0.5 -0.5 0 0];            
    str = [];                   
    ts  = [];                   
    
    function sys=mdlDerivatives(t,x,u)  
    th1 = x(1);
    th2 = x(2);
    dth1 = x(3);
    dth2 = x(4);
    tao1 = u(1);
    tao2 = u(2);
    tao = [tao1;tao2];
    
    %系统参数
    g = 9.81;
    m1 = 1;
    m2 = 2;
    l1 = 1;
    l2 = 2;
    d = [th1*dth1*sin(th2)+dth1; th2*dth2*cos(th1)+dth2]; %外部干扰矩阵d
    
    %质量矩阵M
    M = [l2^2*m2+2*l1*l2*m2*cos(th2)+l1^2*(m1+m2) l2^2*m2+l1*l2*m2*cos(th2);
         l2^2*m2+l1*l2*m2*cos(th2) l2^2*m2];
    %离心力和哥氏力矢量
    C = [-m2*l1*l2*sin(th2)*dth2^2-2*m2*l1*l2*sin(th2)*dth1*dth2; m2*l1*l2*sin(th2)*dth1^2];
    %重力矢量
    G = [m2*l2*g*cos(th1+th2)+(m1+m2)*l1*g*cos(th1); m2*l2*g*cos(th1+th2)];
    some = inv(M) * (tao-d-G-C);
    
    sys(1) = x(3);   
    sys(2) = x(4);   
    sys(3) = some(1);   
    sys(4) = some(2);  
        
    function sys=mdlOutputs(t,x,u)   %产生(传递)系统输出
    sys(1)=x(1);   %q1
    sys(2)=x(2);   %q2
    sys(3)=x(3);   %dq1
    sys(4)=x(4);   %dq2
    
    

    第一、二关节角度跟踪误差

    第一、二关节角速度跟踪误差

      总结:从仿真结果可以看出角度和角速度在2s内跟踪上了期望轨迹,之后曲线存在轻微波动,后期可以通过调节矩阵L1,K1,L2,K2的参数来降低跟踪误差,总体鲁棒控制跟踪效果良好。

    展开全文
  • 鲁棒控制工具箱提供了一系列的函数和工具以支持带有不确定元素的多输入多输出控制系统的设计。在该工具箱的帮助下,你可以建立带有不确定参数和动态特性的LTI模型,也可以分析MIMO系统的稳定性裕度和最坏情况下的...
  • MATLAB鲁棒控制器实现

    千次阅读 2018-05-25 12:02:22
    % 基于LMI算法鲁棒控制器设计 setlmis([]); %新建LMI不等式 C1=[1000 0 0 0; 0 200 0 0; 0 0 10 0; 0 0 0 1];% 矩阵C1的选择,可修改,影响控制器的精度 X = lmivar(1,[4 1]); % 定义实对称矩阵X 4*4 W=lmivar(2,...
  • 适合控制过程中用到的鲁棒性,鲁棒控制matlab中的仿真

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 370
精华内容 148
关键字:

鲁棒控制matlab

matlab 订阅