Professional Documents
Culture Documents
Symmetric Root Locus LQR Design State Estimation: Selection of 'Optimal' Poles For SISO Pole Placement Design: SRL
Symmetric Root Locus LQR Design State Estimation: Selection of 'Optimal' Poles For SISO Pole Placement Design: SRL
Lecture 5
L5:2
For a single-input system, we might select one particular output (y = Cx) to constrain in a cost function: = Ax + Bu y r=0 + u x J = (y 2 (t ) + u 2 (t ) )dt y = Cx 0 Plant transfer function: x K Y ( s) N (s) 1 = C(sI A ) B = , say D( s) U (s)
J will be minimised by the control law u = Kx the eigenvalues of the closed-loop system are the left half-plane roots of the 2n-degree polynomial equation Ref: Kailath, Linear Systems, 1980
c ( s ) c ( s ) = D ( s ) D( s ) + N ( s ) N ( s ) = 0
L5:3
c ( s ) c ( s ) = D ( s ) D( s ) + N ( s ) N ( s ) = 0
Hence we can see the effects of the output-weighting factor on the closed-loop poles by plotting a root locus for N ( s ) N ( s) 1+ =0 D( s ) D( s)
This symmetric root locus (SRL) will be a 180 (0) locus if the open-loop pole-zero excess is even (odd)
Hence if branches of the 180 SRL lie on the imaginary axis, plot the 0 locus instead
The SRL thus provides a basis for specifying CLPs in a SISO pole-placement design
L5:4
Example:
y ]
Sample period: T = 0.4 s
Open-loop TF:
L5:5
1.5
0.5
Imag Axis
-0.5
-1
-1.5
-2 -2 -1.5
-1
-0.5
0 Real Axis
0.5
1.5
L5:6
1.5
0.5
s i x A g a m I
-0.5
rho = 1.3414 clp = 1.3120 + 0.2387i 1.3120 - 0.2387i 0.9934 + 0.5065i 0.9934 - 0.5065i 0.7989 + 0.4074i 0.7989 - 0.4074i 0.7378 + 0.1342i 0.7378 - 0.1342i
-1
-1.5
-2 -2 -0.5
-1.5
-1
0 Real Axis
0.5
1.5
dclp=clp(find(abs(clp)<1)) dclp = 0.7989 + 0.4074i 0.7989 - 0.4074i 0.7378 + 0.1342i 2 0.7378 - 0.1342i
L5:7
Gp = ss(A, B, C, D,'InputName','force u','OutputName','disp d'); set(Gp, 'StateName', {'d', 'ddot', 'y', 'ydot'}) T = 0.4; % sample period Gpd = c2d(Gp, T); % discrete ss model
% Plot symmetric root locus and get desired CL poles [rho, dclp] = srl(Gpd); % MCG-written function
% State-feedback control gains Phi = Gpd.a; Gam = Gpd.b; K = acker(Phi, Gam, dclp);
% Closed-loop regulator system Gdu = [Gpd; 1]; % get d and u as outputs Gdux = augstate(Gdu); % augment plant outputs with states Gcl = feedback(Gdux, K, [1], [3:6]); % feed-back 4 states to u Gcl = Gcl(1:2,1); % suppress state outputs Gcl.outputn={'disp d'; 'ctrl u'};
L5:8
0.5
To: disp d
-0.5
Amplitude
0.5
To: ctrl u
-0.5 5 10 15 20 25
Time (sec.)
% Discrete model T = 0.4; Gpd = c2d(Gp, T); Phi = Gpd.a; Gam = Gpd.b;
% Weight displacements but not velocities % Get trial diagonal elements for Q Q11 = input('Enter controller Q11: '); Q22 = input('Enter controller Q22: '); Qc = diag([Q11 0 Q22 0]);
L5:10
0.5
To: disp d
-0.5
0.5
Amplitude
To: disp y
-0.5
To: force u
-2 2 4 6 8 10 12
Time (sec.)
L5:11
q1
x(k)
y(k)
Plant:
Plant
y ( k ) = Cx(k )
Control law: u ( k ) = Kx (k | k 1)
u(k)
q1
C
y (k )
Estimator
Estimator:
x (k | k 1)
Lp
x ( k + 1 | k ) = x (k | k 1) + u(k ) + L p [y (k ) Cx (k | k 1)]
Feedback compensator
L5:12
Plant:
Characteristic polynomial:
L ( z ) = det[zI + L p C]
n chosen coefficients
For MIMO systems, Matlabs place function uses the extra DoF to give a robust solution
k m b
d
States: x = [d
y ]
A previous controller design K = [0.46 0.25 0.57 0.97] to place poles at z = 0.9 j 0.05, 0.8 j 0.4 (corresponding to [, n] = [0.88, 0.29], [0.23, 1.19]) Try placing estimator poles 5-times faster: dcls = 1/T*log(dclz); % controller s-poles deps = 5*dcls; depz = exp(T*deps); % estimator z-poles
L5:14
Discretised plant model: T = 0.4; Gpd = c2d(Gp,T); Phi = Gpd.a; C = Gpd.c; Estimator gains: Lp = place(Phi',C',depz)
Regulator: H = reg(Gpd, K, Lp) Feedback: Gcl = feedback(Gpd, H, +1) Check response to initial condition d(0) = 1 Experiment with estimator pole selection, etc. (Matlab script flex_predict.m)
k M m
L5:15
To: disp d
0.5
d(k)
0.4
0.2
y(k)
Amplitude
To: disp y
-0.2
u(k)
To: force u
-1 5 10 Time (sec.) 15 20
esponse of states and predictive estimates to prediction x 1(0) = 1 Actual states compared with
L5:16
3 x 2=ddot x 2hat
estimates
2 0
x 1=d x 1hat
0 -5 0
-1 10 1 x 3=y x 3hat
5 Time (s)
5 Time (s)
10
0.4
0.2
0.5
x 4=ydot x 4hat
0 0
-0.2
-0.4
5 Time (s)
10
-0.5
5 Time (s)
10
Current estimators
L5:17
Using the previous prediction estimator, the control at instant k is based on sensor data up to the previous sampling instant: u(k ) = Kx (k | k 1)
We know that delays (latency) in a feedback loop are de-stabilising Hence, if we were able to quickly update the state estimate at instant k, based on the current measurement, it would be worthwhile: x (k | k ) = x (k | k 1) + L c [y (k ) Cx (k | k 1)] This measurement update is performed on the model prediction (a time update):
x (k | k 1) = x (k 1 | k 1) + u(k 1) We need to organise the calculations so that the measurement update can be performed rapidly
L5:18
u(k)
q1 p
x(k)
y(k)
Plant:
Plant
x (k | k 1)
Estimator:
q1
x (k | k )
y (k ) + C
Time update: x ( k + 1 | k ) = x ( k | k ) + u ( k )
Lc
L5:19
and x (k | k ) = x (k | k 1) + L c [y (k ) Cx (k | k 1)]
x ( k ) u ( k ) = [ L c C]~ x p (k )
L5:20
For the current estimator we have the prediction error ~ x p (k + 1) = x (k + 1 | k ) x(k + 1) = [ L C]~ x (k )
c p
The two error equations have the same eigenvalues (both are outputs from the same dynamic system) hence can use either as a basis for calculating Lc x p (k + 1) = [ L p C]~ x p (k ) For the prediction estimator: ~
L5:21
Given x ( k + 1 | k ) = x ( k | k ) + u ( k )
and x (k | k ) = x (k | k 1) + L c [y (k ) Cx (k | k 1)]
we can show that the state equations for the estimator, with input y(k) and output u(k), are
u(k ) = K [I L c C]x (k | k 1) KL c y (k )
x (k + 1 | k ) = [ K ][I L c C]x (k | k 1) + [ K ]L c y (k )
L5:22
To: disp d
0.5
0.4
current estimator
0.2
Amplitude
To: disp y
-0.2
prediction estimator
To: force u
-1 5 10 Time (sec.) 15 20