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) A,B A,B x(k) /+0-)./$/- C y(k) ˆ 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) A,B /+0-)./$/- A,B C y(k) ˆ 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) A,B A,B x(k) /+0-)./$/- C y(k) ˆ 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) A,B /+0-)./$/- A,[B L] ˆ x(k) ./$/-) -./&%$/- y(k) C ˆ y(k) 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 where L ∈ Rn×p is the observer gain Prof. Alberto Bemporad (University of Trento) Automatic Control 1 David G. Luenberger (1937-) Academic year 2010-2011 5 / 13 Lecture: State estimation and linear observers State observer Luenberger observer !"#$%&'$()*+,'-.. u(k) A,B A,[B L] x(k) /+0-)./$/- ˆ x(k) ./$/-) -./&%$/- y(k) C ˆ y(k) 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) dt = Ax̂(t) + Bu(t) + L[y(t) − Cx̂(t)] The dynamics of the state estimation error are Prof. Alberto Bemporad (University of Trento) Automatic Control 1 dx̃(t) dt = (A − LC)x̃(t) 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 » L=acker(A’,C’,P)’; » L=place(A’,C’,P)’; Prof. Alberto Bemporad (University of Trento) where P = [λ1 λ2 . . . λn ] = desired observer eigenvalues 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 A − LC = −1 1 Prof. Alberto Bemporad (University of Trento) 0 −1 − `1 `2 0 Automatic Control 1 1 2 = −1 1 − 21 `1 −1 − 12 `2 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) 1 −7 0 12 dt 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 B C D =[1.8097 -0.8187; 1 0]; = [0.5; 0]; =[0.1810 -0.1810]; = 0; » L=place(A’,C’,[.5 .7])’ State-space model in discrete-time −0.8187 A = 1.8097 , B = 0.5 0 1 0 C = [ 0.1810 −0.1810 ] , D = 0 Resulting observer gain L= » eig(A-L*C) ans = 0.7000 0.5000 Prof. Alberto Bemporad (University of Trento) −82.6341 −86.0031 Double-check observer poles: answer is ok ! 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 x=[-1;1]; % initial state xhat=[0;0]; % initial estimate 40 30 ^ x1(t) XX=x; XXhat=xhat; T=40; UU=.1*ones(1,T); % input signal 20 for k=0:T-1, u=UU(k+1); y=C*x+D*u; yhat=C*xhat+D*u; 10 0 −10 0 x1(t) x=A*x+B*u; xhat=A*xhat+B*u+L*(y-yhat); 10 20 time (s) 30 40 XX=[XX,x]; XXhat=[XXhat,xhat]; end response from initial conditions 0 x(0) = −1 1 , x̂(0) = 0 for u(k) ≡ 0.1 Prof. Alberto Bemporad (University of Trento) plot(0:T,[XX(1,:);XXhat(1,:)]); 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 estimator L2 estimator L3 60 40 MATLAB L1=place(A’,C’,[.5 .7])’; L2=place(A’,C’,[.75 .8])’; 20 L3=place(A’,C’,[.4 .5])’; 0 −20 0 10 20 time (s) 30 40 A fast observer often implies large estimation errors in the transient Comparison of different observer gains Response from initialconditions 0 x(0) = −1 1 , x̂(0) = 0 for u(k) ≡ 0.1 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 Luenberger observer observer gain errore di stima osservatore alla Luenberger guadagno dell’osservatore Translation is obvious otherwise. Prof. Alberto Bemporad (University of Trento) Automatic Control 1 Academic year 2010-2011 13 / 13