Filter löschen
Filter löschen

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

5 Ansichten (letzte 30 Tage)
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

Antworten (1)

Jamie
Jamie am 25 Nov. 2011
Bearbeitet: Jamie am 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 Kommentare
Adeel
Adeel am 26 Okt. 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 am 28 Okt. 2013
Bearbeitet: Jamie am 28 Okt. 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.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by