非线性控制2.0——鲁棒控制之H无穷控制器设计
生活随笔
收集整理的這篇文章主要介紹了
非线性控制2.0——鲁棒控制之H无穷控制器设计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、基本概念
對于圖1所示系統,u為控制輸入,y為測量輸出,z為被調輸出,w為干擾輸入,由輸入u,w到輸出y,z的傳遞函數G成為增廣被控對象,控制器為k。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
二、H無窮控制器設計方法
1. 基于Riccati方程的H∞控制設計
2.基于LMI的H∞控制
?
三、設計實例——一級倒立擺
?
%基于LMI算法的倒立擺狀態反饋H∞控制器設計 %State Feedback H∞ controller design based lmi approach %by 2013/04/03 hemmingway <hemmingway@163.com>clc clear all %----------------------------------------------% %定義常數矩陣 A=[0 1 0 0;0 -0.0883 0.6293 0;0 0 0 1;0 -0.2357 27.8285 0] ; B1=[0 2.3566 0 104.2027]'; B2=[0 0.8832 0 2.3566]'; C1=[0.064 0 0 0;0 1e-3 0 0;0 0 0.11 0;0 0 0 0.01;0 0 0 0]; D12=[0 0 0 0 0.01]'; D11=[0 0 0 0 0]'; C2=[1 0 0 0;0 0 1 0]; D21=[0 0 0 0]'; D22=[0 0 0 0]';% setlmis([]); %建立一個LMI X=lmivar(1,[4,1]); %定義矩陣變量 W=lmivar(2,[1,4]); r1=lmivar(1,[1,1]);%%%%%%% lmiterm([1 1 1 X],A,1,'s'); lmiterm([1 1 1 W],B2,1,'s'); lmiterm([1 2 1 0],B1'); lmiterm([1 2 2 0],-1); lmiterm([1 3 1 X],C1,1); lmiterm([1 3 1 W],D12,1); lmiterm([1 3 2 0],D11); lmiterm([1 3 3 r1],-1,1);% lmiterm([-2 1 1 X],1,1);lmisys=getlmis;%%----------------------------solver--------------------------------------- n = decnbr(lmisys); c = zeros(n,1); for j=1:n[r1j]=defcx(lmisys,j,r1);c(j)=trace(r1j); end %c=mat2dec(lmisys,zeros(4,4),zeros(1,4),eye(1)) [copt,xopt]=mincx(lmisys,c, [0 0 0 0 0]);X=dec2mat(lmisys,xopt,X) W=dec2mat(lmisys,xopt,W)K=W*X^(-1); K=K/100 %%控制器,為什么要除以100? 因為D12矩陣哪里是0.001,不是傳統的1r1=dec2mat(lmisys,xopt,r1); gammar=r1^(1/2) %%gammar%----------------------------------simu------------------------------------ % w=0.0; n=1; Dt=0.01; t=-0.8; t0=t; x=[-0.2 0 0.3 0]'; for i=1:1500if t<0%t1=4*pi*t;t1=4*pi*t;x=[1.1*sin(t1); 1.2*cos(t1); 0.5*sin(t1)+1.0*cos(t1); 0];elseu=K*x; %%反饋控制Dx=A*x+B1*w+B2*u;x=x+Dx*Dt;endY(:,n)=x;t=t+Dt;n=n+1; endfigure(1) time = (1:n-1)*Dt+t0; xpos=Y(1,:); xangle=Y(3,:);subplot(2,1,1) plot((1:n-1)*Dt+t0,xpos,'k') axis([-0.8 10 -1.5 1.5]) grid on xlabel('time(s)') ylabel('Cart positon')subplot(2,1,2) plot((1:n-1)*Dt+t0,xangle,'k') axis([-0.8 10 -1.5 1.5]) grid on xlabel('time(s)') ylabel('Pendulum')LMI算法設計狀態反饋H∞控制器的一個例子
mincx
| 可以查看defcx命令的幫助,這個命令就是輔助mincx命令的,功能是定義求解最優的cost function。 如你給的例子,可以由以下代碼定義“c“: -------------------------------------------------------------------------------------------- n=decnbr(lmisys);? ?? ?? ?? ?? ?? ?? ? % lmisys 為矩陣不等式系統的名稱 c=zeros(1,n);? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???% 為變量c 預設存儲空間 for i=1:n ? ? [Mi]=defcx(lmisys,i,M); ? ? c(i)=trace(Mi); end? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? % 循環命令設置代價函數 c^T x 中的系數 c [copt,xopt]=mincx(lmisys,c,options); --------------------------------------------------------------------------------------------- 感覺附圖中的問題像是用錐補線性化算法(Cone Complement Linear)求解含有互逆矩陣M和X的矩陣不等式問題。如果是的話,附圖中的定理就不對了,錐補算法是通過最小化”trace(MX)“及約束(ii)來保證M和X互逆的。 |
?
總結
以上是生活随笔為你收集整理的非线性控制2.0——鲁棒控制之H无穷控制器设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [教程] ios 4 以上安装mobil
- 下一篇: Django 优秀资源大全