H infinity, Robust Control, [a b2;c1 d12] does not have full column rank at s=0 error

10 vues (au cours des 30 derniers jours)
Özgür
Özgür le 25 Oct 2011
Modifié(e) : Jamie le 28 Oct 2013
Dear Friends,
I'm trying to find such a robust controller for inverted pendulum using Hinf method. But I'm getting rank error that I need help to solve it. error is presneted below. So what I have to change in model tol solve it.
[a b2;c1 d12] does not have full column rank at s=0
Error in ==> hinf_st at 13
fail = 0;
??? Output argument "r12" (and maybe others) not assigned during call to "C:\Program
Files\MATLAB\R2010b\toolbox\robust\rctobsolete\mutools\subs\hinf_st.m>hinf_st".
Error in ==> hinfsyn at 171
[p,r12,r21,fail,gmin] = hinf_st(p,nmeas,ncon,gmin,gmax,quiet);
Error in ==> hin_ltcp at 17
[K_hin,clp]=hinfsyn(hin_ic,nmeas,ncon,gmin,gmax,tol);
My perturbation system matrix is called hin_ic from disturbance to performance errors like below.
0.0e+000 1.0e+000 0.0e+000 0.0e+000 0.0e+000 0.0e+000 | 0.0e+000 0.0e+000
0.0e+000 -3.3e-002 -3.3e+000 0.0e+000 0.0e+000 0.0e+000 | 0.0e+000 3.3e-001
0.0e+000 0.0e+000 0.0e+000 1.0e+000 0.0e+000 0.0e+000 | 0.0e+000 0.0e+000
0.0e+000 3.3e-002 1.3e+001 0.0e+000 0.0e+000 0.0e+000 | 0.0e+000 -3.3e-001
0.0e+000 0.0e+000 4.2e-003 0.0e+000 -1.0e-003 0.0e+000 | 4.2e-003 0.0e+000
0.0e+000 0.0e+000 0.0e+000 0.0e+000 0.0e+000 -1.0e+002 | 0.0e+000 5.4e-001
-------------------------------------------------------------|--------------------
0.0e+000 0.0e+000 1.8e-005 0.0e+000 4.2e-003 0.0e+000 | 1.8e-005 0.0e+000
0.0e+000 0.0e+000 0.0e+000 0.0e+000 0.0e+000 5.4e-001 | 0.0e+000 -3.0e-003
0.0e+000 0.0e+000 -1.0e+000 0.0e+000 0.0e+000 0.0e+000 | -1.0e+000 0.0e+000

Réponses (1)

Jamie
Jamie le 25 Nov 2011
Modifié(e) : Jamie le 8 Juil 2013
Have you checked to see if you have any poles on the imaginary axis?
If so (as is likely the case) can this dependant state be truncated? These few lines may provide you with some answers
function [G_temp] = shift(TF_siso)
p = pole(TF_siso(1,1));
z = zero(TF_siso(1,1));
% Pole/s on the imaginary axis which violates the H infinity
% design. shift roots by .001
p = p - .001;
z = z - .001;
% construct poly from the roots
poly_p = poly(p);
poly_z = poly(z);
% symbolic representation
symbolic_tf = poly2sym(poly_z)/poly2sym(poly_p);
% Output
G_temp = sym2tf(symbolic_tf);
Cheers
  6 commentaires
Adeel
Adeel le 26 Oct 2013
Hello Jamie,
I am getting the same error. I have a system with 15 states, with the state space A matrix having following pole pair:
-0.0488 + 11.8217i
-0.0488 - 11.8217i
Although they do have negative real parts, do you think they might cause a problem (in terms of being "too close" to the imaginary axis?
Thank you.
Jamie
Jamie le 28 Oct 2013
Modifié(e) : Jamie le 28 Oct 2013
Hi Adeel,
No the poles you allude to dont lie on the imaginary axis. In the snipet of code I posted above the poles were shifted from 0 to 0.001 rad/s away from the imaginary axis. I just provided the snippet to emphasise a point but as you can see the poles in the example sit much closer to the imaginary axis than roots you list.

Connectez-vous pour commenter.

Catégories

En savoir plus sur H-Infinity Synthesis dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by