Hi,
I
am trying to design a full state feedback h-infinity controller. The
code is given below. I am not getting the controller values. please find
the mistake and correct me, i am hopeful for your optimiscic response.
clc
clear all
close all
yalmip 'clear'
X=sdpvar(4);
Y=sdpvar(4);
Ka=sdpvar(4,4,'full');
Kb=sdpvar(4,4,'full');
Kc=sdpvar(2,4,'full');
Kd=sdpvar(2,4,'full');
W=1.1;
ls=0.0286e-5; lm=0.0032e-2; lr=0.0286e-5;
a=[ls 0 lm 0; 0 ls 0 lm; lm 0 lr 0; 0 lm 0 lr];
b=inv(a);
lsi=3.1252; lmi=0.0279; w0=2*pi*50; delw=2*pi*.04*50; rs=0.01; rr=0.01;
A=[-rs/ls
w0 rs*lm/ls 0; -w0 -rs/ls 0 rs*lm/ls; -lsi*rs/ls
(w0*lsi-lmi*delw*lm/ls) (lsi*rs*lm/ls-rr)
(lmi*delw*lm^2/ls-lmi*delw*lm); (lmi*w0*lm/ls-w0*lsi) -rs*lsi/ls
(lmi*delw*lr-lmi*delw*lm^2/ls) (lsi*rs*lm/ls-lmi*rr)]
B1=[1 0 0 0; 0 1 0 0; lsi 0 0 0; 0 lsi 0 0]
B2=[0 0; 0 0; -lmi 0; 0 -lmi]
C1=[0 0 -1 0; 0 0 0 -1]
C2=eye(4)
D11=[0 0 1 0; 0 0 0 1]
D12=[0 0; 0 0]
D21=zeros(4)
D22=zeros(2)
Ny=null([B2' D12'], 'r')
ny12=zeros(4,6);ny21=zeros(4);ny22=eye(6);
n1=cat(1,Ny,ny21);n2=cat(1,ny12,ny22);
Ny1=cat(2,n1,n2);
% Nx=null([C2 D21], 'r')
Nx=eye(4)
F=[[Nx
zeros(4,6);zeros(6,4) eye(6)]'*[X*A+A'*X X*B1 C1';B1'*X -W*eye(4)
D11';C1 D11 -W*eye(2)]*[Nx zeros(4,6);zeros(6,4)
eye(6)]<0,Ny1'*[A*Y+Y*A' Y*C1' B1;C1*Y -W*eye(2) D11;B1' D11'
-W*eye(4)]*Ny1<0,[Y eye(4);eye(4) X]>0,X>0,Y>0]
sol=solvesdp(F)
X=double(X)
Y=double(Y)
W=double(W)
% X=vpa(X,8)
% % % E=eig(vpa(P))
% Y=vpa(Y,8)
X =[ 211711.94, 310.62937, -67712.046, -75.11958;
310.62937, 107.59296, -99.381282, -0.33541042;
-67712.046, -99.381282, 21666.755, 24.037673;
-75.11958, -0.33541042, 24.037673, 0.097628741]
Y =[ 108.77908, -0.11658389, 1.9857134, 0.026509699; -0.11658389, 106.85555, -0.093638681, 1.8558274;
1.9857134, -0.093638681, 2498468.2, 2.3378861;
0.026509699, 1.8558274, 2.3378861, 2498468.3]
W=vpa(W)
Rx=chol(X)
Ry=chol(Y)
% Rx=vpa(Rx)
% Ry=vpa(Ry)
Z=Ry*Rx';
[U,S,V]=svd(Z)
sigma2=S*S'
row2=sigma2-eye(4)
row=sqrt(row2)
T=((S)^(-1/2))*V'*Rx
X3=S
X2=T'*row
% p=[X*A+A'*X A'*X2 X*B1 C1'; X2'*A zeros(4) X2'*B1 zeros(4,2); B1'*X B1'*X2 -W*eye(4) D11'; C1 zeros(2,4) D11 -W*eye(2)]
%
q=[X*B2 X2; X2'*B2 X3; zeros(4,2) zeros(4); D12 zeros(2,4)]*[Kd Kc;Kb
Ka]*[C2 zeros(4) D21 zeros(4,2); zeros(4) eye(4) zeros(4) zeros(4,2)]
%
r=[C2 zeros(4) D21 zeros(4,2); zeros(4) eye(4) zeros(4)
zeros(4,2)]'*[Kd Kc;Kb Ka]'*[X*B2 X2; X2'*B2 X3; zeros(4,2) zeros(4);
D12 zeros(2,4)]'
% Fp=(plus(p,q))
Q=[X*A+A'*X A'*X2 X*B1 C1';
X2'*A zeros(4) X2'*B1 zeros(4,2);
B1'*X B1'*X2 -W*eye(4) D11';
C1 zeros(2,4) D11 -W*eye(2)];
R=[X*B2*Kd*C2+X2*Kb*C2 X*B2*Kc+X2*Ka X*B2*Kd*D21+X2*Kb*D21 zeros(4,2);
X2'*B2*Kd*C2+X2*Kb*C2 X2'*B2*Kc+X3*Ka X2'*B2*Kd*D21+X3*Kb*D21 zeros(4,2);
zeros(4) zeros(4) zeros(4) zeros(4,2);
D12*Kd*C2 D12*Kc D12*Kd*D21 zeros(2)];
S=[C2'*Kd'*(X*B2)'+C2'*Kb'*X2' C2'*Kd'*(X2'*B2)'+C2'*Kb'*X3' zeros(4) C2'*Kd'*D12';
Kc'*(X*B2)'+Ka'*X2' Kc'*(X2'*B2)'+Ka'*X3' zeros(4) Kc'*D12';
D21'*Kd'*(X*B2)'+D21'*Kb'*X2' D21'*Kd'*(X2'*B2)'+D21'*Kb'*X3' zeros(4) D21'*Kd'*D12';
zeros(2,4) zeros(2,4) zeros(2,4) zeros(2)];
Fp=[plus(Q,R,S)<0,Ka>0,Kb>0,Kc>0,Kd>0];
sol=solvesdp(r<0,Ka>0,Kb>0,Kc>0,Kd>0)
Ka=double(Ka)
Kb=double(Kb)
Kc=double(Kc)
Kd=double(Kd)