H infinity, Robust Control, [a b2;c1 d12] does not have full column rank at s=0 error
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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
0 comentarios
Respuestas (1)
Jamie
el 25 de Nov. de 2011
Editada: Jamie
el 8 de Jul. de 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 comentarios
Adeel
el 26 de Oct. de 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
el 28 de Oct. de 2013
Editada: Jamie
el 28 de Oct. de 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.
Ver también
Categorías
Más información sobre H-Infinity Synthesis en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!