H infinity, Robust Control, [a b2;c1 d12] does not have full column rank at s=0 error
    6 views (last 30 days)
  
       Show older comments
    
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 Comments
Answers (1)
  Jamie
      
 on 25 Nov 2011
        
      Edited: Jamie
      
 on 8 Jul 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 Comments
  Adeel
 on 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
      
 on 28 Oct 2013
				
      Edited: Jamie
      
 on 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.
See Also
Categories
				Find more on H-Infinity Synthesis in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



