You are on page 1of 13

Lecture: State estimation and linear observers

Automatic Control 1
State estimation and linear observers

Prof. Alberto Bemporad

University of Trento

Academic year 2010-2011

Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 1 / 13
Lecture: State estimation and linear observers State estimation

State estimation

State estimation problem


At each time k construct an estimate x̂(k) of the state
x(k), by only measuring the output y(k) and input u(k)

Open-loop observer: Build an artificial copy of the system, fed in parallel by


with the same input signal u(k)
!"#$%&'$()*+,'-..

u(k) x(k) y(k)


A,B /+0-)./$/-
C

A,B ˆ
x(k)
./$/-)-./&%$/-

The “copy” is a numerical simulator x̂(k + 1) = Ax̂(k) + Bu(k) reproducing the


behavior of the real system
Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 2 / 13
Lecture: State estimation and linear observers State estimation

Open-loop observer

!"#$%&'$()*+,'-..

u(k) x(k) y(k)


A,B /+0-)./$/-
C

A,B ˆ
x(k)
./$/-)-./&%$/-

The dynamics of the real system and of the numerical copy are

x(k + 1) = Ax(k) + Bu(k) True process

x̂(k + 1) = Ax̂(k) + Bu(k) Numerical copy

The dynamics of the estimation error x̃(k) = x(k) − x̂(k) are

x̃(k + 1) = Ax(k) + Bu(k) − Ax̂(k) − Bu(k) = Ax̃(k)

and then x̃(k) = Ak (x(0) − x̂(0))


Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 3 / 13
Lecture: State estimation and linear observers State estimation

Open-loop observer

!"#$%&'$()*+,'-..

u(k) x(k) y(k)


A,B /+0-)./$/-
C

A,B ˆ
x(k)
./$/-)-./&%$/-

The estimation error is x̃(k) = Ak (x(0) − x̂(0)). This is not ideal, because
The dynamics of the estimation error are fixed by the eigenvalues of A and
cannot be modified
The estimation error vanishes asymptotically if and only if A is asymptotically
stable
Note that we are not exploiting y(k) to compute the state estimate x̂(k) !

Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 4 / 13
Lecture: State estimation and linear observers State observer

Luenberger observer

!"#$%&'$()*+,'-..

u(k) x(k) y(k)


A,B /+0-)./$/-
C

+
ˆ
x(k) ˆ -
y(k)
A,[B L] ./$/-)
C
-./&%$/-

./$/-),1.-+2-+

Luenberger observer: Correct the estimation equation with


a feedback from the estimation error y(k) − ŷ(k)

x̂(k + 1) = Ax̂(k) + Bu(k) + L(y(k) − Cx̂(k))


| {z }
feedback on estimation error David G.
Luenberger
where L ∈ Rn×p is the observer gain (1937-)
Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 5 / 13
Lecture: State estimation and linear observers State observer

Luenberger observer
!"#$%&'$()*+,'-..

u(k) x(k) y(k)


A,B /+0-)./$/-
C

+
ˆ
x(k) ˆ -
y(k)
A,[B L] ./$/-)
C
-./&%$/-

./$/-),1.-+2-+

The dynamics of the state estimation error x̃(k) = x(k) − x̂(k) is


x̃(k + 1) = Ax(k) + Bu(k) − Ax̂(k) − Bu(k) − L[y(k) − Cx̂(k)]
= (A − LC)x̃(k)
and then x̃(k) = (A − LC)k (x(0) − x̂(0))
Same idea for continuous-time systems ẋ(t) = Ax(t) + Bu(t)
dx̂(t)
= Ax̂(t) + Bu(t) + L[y(t) − Cx̂(t)]
dt
dx̃(t)
The dynamics of the state estimation error are dt
= (A − LC)x̃(t)
Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 6 / 13
Lecture: State estimation and linear observers State observer

Eigenvalue assignment of state observer

Theorem
If the pair (A, C) is observable, then the eigenvalues of
(A − LC) can be placed arbitrarily

Proof:
If the pair (A, C) is completely observable, the dual system (A0 , C0 , B0 , D0 ) is
completely reachable
Then we can design a compensator K for the dual system and place the
eigenvalues of (A0 + C0 K) arbitrarily
The eigenvalues of matrix (A0 + C0 K) = eigenvalues of its transpose (A + K 0 C)
Define L = −K 0 . The theorem is proved. ƒ

MATLAB
where P = [λ1 λ2 . . . λn ] = desired observer
» L=acker(A’,C’,P)’;
» L=place(A’,C’,P)’; eigenvalues

Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 7 / 13
Lecture: State estimation and linear observers Example of observer design

Example of observer design

We want to design a state observer for the continuous-time system in


state-space form
    
−1 0 2
 ẋ(t) = x(t) + u(t)
1 −1 0
0 12 x(t)
” —
y(t) =

We want to place the poles of the observer in {−4, −4}


It is easy to verify that the system is completely observable
h i
`
Let L = `12 be the unknown observer gain
Write the generic state estimation matrix

− 21 `1
– ™
`1
   
−1 0 ” 1
— −1
A − LC = − 0 =
1 −1 `2 2 1 −1 − 12 `2

Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 8 / 13
Lecture: State estimation and linear observers Example of observer design

Example of observer design (cont’d)

The characteristic polynomial of the observer is

1 1 1
det(λI − A + LC) = λ2 + (2 + `2 )λ + `2 + `1 + 1
2 2 2

Impose the polynomial equals the desired one (λ + 4)2 = λ2 + 8λ + 16


Solve the linear system of equations in `1 , `2 and get

`1 = 18, `2 = 12

The resulting Luenberger observer is

dx̂(t)
     
−1 −9 2 18
= x̂(t) + u(t) + y(t)
dt 1 −7 0 12

Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 9 / 13
Lecture: State estimation and linear observers Example of observer design

Example of observer design in MATLAB

MATLAB
» A =[1.8097 -0.8187; 1 0]; State-space model in discrete-time
» B = [0.5; 0];
A = 1.8097 −0.8187
, B = 0.5
   
» C =[0.1810 -0.1810]; 1 0 0
» D = 0; C = [ 0.1810 −0.1810 ] , D = 0

» L=place(A’,C’,[.5 .7])’ Resulting observer gain


” —
L= −82.6341
−86.0031

» eig(A-L*C) Double-check observer poles: answer is ok !


ans = 0.7000 0.5000

Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 10 / 13
Lecture: State estimation and linear observers Example of observer design

Example of observer design in MATLAB (cont’d)

MATLAB
40 x=[-1;1]; % initial state
^ xhat=[0;0]; % initial estimate
x1(t)
30 XX=x;
XXhat=xhat;
T=40;
20 UU=.1*ones(1,T); % input signal

for k=0:T-1,
10 u=UU(k+1);
y=C*x+D*u;
yhat=C*xhat+D*u;
0 x1(t)
x=A*x+B*u;
xhat=A*xhat+B*u+L*(y-yhat);
−10
0 10 20 30 40 XX=[XX,x];
time (s)
XXhat=[XXhat,xhat];
end
response
 from
 initial conditions plot(0:T,[XX(1,:);XXhat(1,:)]);
x(0) = −11 , x̂(0) = 0 for u(k) ≡ 0.1
0


Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 11 / 13
Lecture: State estimation and linear observers Example of observer design

Example of observer design in MATLAB (cont’d)

80
true state
estimator L1
60 estimator L2
estimator L3
MATLAB
40 L1=place(A’,C’,[.5 .7])’;

L2=place(A’,C’,[.75 .8])’;
20
L3=place(A’,C’,[.4 .5])’;

−20 A fast observer often implies large


0 10 20 30 40
time (s) estimation errors in the transient

Comparison of different observer gains


Response
 from
 initialconditions
x(0) = −11 , x̂(0) = 0 for u(k) ≡ 0.1
0


Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 12 / 13
Lecture: State estimation and linear observers Example of observer design

English-Italian Vocabulary

estimation error errore di stima


Luenberger observer osservatore alla Luenberger
observer gain guadagno dell’osservatore

Translation is obvious otherwise.

Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 13 / 13

You might also like