State Observers & the Separation Principle

A state observer runs a model beside the plant and corrects it with output prediction error. Observability or detectability determines whether its error can converge; the separation principle then allows linear state-feedback and observer poles to be designed independently under precise model assumptions.

Full-state feedback assumes xx is available. Usually only yy is measured, and differentiating noisy outputs is not a substitute for knowing state. A state observer combines the known input, a plant model, and the mismatch between predicted and measured output to reconstruct the state dynamically.

A model plus innovation #

For

x˙=Ax+Bu,y=Cx+Du,\dot x=Ax+Bu,\qquad y=Cx+Du,

a continuous full-order Luenberger observer is

x^˙=Ax^+Bu+L(y−y^),y^=Cx^+Du.\dot{\hat x}=A\hat x+Bu+L(y-\hat y),\qquad \hat y=C\hat x+Du.

The residual or innovation y−y^y-\hat y is the only signal that tells the model it is wrong. The gain LL maps that output error into state correction.

Observer-based state-feedback control Reference and estimated state enter the controller, control input drives both plant and observer, measured output enters the observer, and the observer returns estimated state to the controller. r state controller u = −Kx̂ + Nr uses estimated state plant ẋ = Ax + Bu y = Cx + Du y output observer model: A x̂ + Bu correction: L(y − ŷ) innovation drives estimation error u known u measured y estimated x̂ nominal poles separate into controller dynamics A − BK and observer-error dynamics A − LC
The controller uses estimated state. The observer receives the same known plant input and corrects its model with output innovation; unknown disturbances and measurement noise enter through different paths and prevent exact error dynamics.

Let e=x−x^e=x-\hat x. With the exact deterministic model and known input,

e˙=(A−LC)e.\dot e=(A-LC)e.

The plant input cancels because the plant and observer receive the same uu. If (C,A)(C,A) is observable, the eigenvalues of A−LCA-LC can be assigned arbitrarily. Detectability is enough for a convergent observer because any unobservable modes are then already stable.

Observer gain is dual pole placement #

Since (A−LC)T=AT−CTLT(A-LC)^T=A^T-C^TL^T, compute LTL^T as a state-feedback gain for the dual pair (AT,CT)(A^T,C^T). This transposition is algebraic duality, not a claim that sensors and actuators are physically interchangeable.

A common rule places observer poles faster than controller poles so estimation error decays before the regulated transient dominates. Faster is not free:

  • large LL injects measurement noise strongly into x^\hat x;
  • neglected sensor dynamics and sample delay become more important;
  • model mismatch creates persistent biased innovations;
  • finite precision and quantization can dominate weakly observable directions.

Choose bandwidth from the disturbance/noise spectrum and model validity, then verify the coupled implementation.

The separation principle #

Use estimated-state feedback

u=−Kx^.u=-K\hat x.

Because x^=x−e\hat x=x-e,

[x˙e˙]=[A−BKBK0A−LC][xe].\begin{bmatrix}\dot x\\\dot e\end{bmatrix} = \begin{bmatrix} A-BK&BK\\ 0&A-LC \end{bmatrix} \begin{bmatrix}x\\e\end{bmatrix}.

This block-upper-triangular matrix has eigenvalues equal to the union of the controller poles from A−BKA-BK and observer poles from A−LCA-LC. Therefore, for the nominal linear model, KK and LL may be designed independently. This is the separation principle.

Disturbances and noise explain residual behavior #

Suppose the plant is

x˙=Ax+Bu+Gw,y=Cx+Du+v,\dot x=Ax+Bu+Gw,\qquad y=Cx+Du+v,

while the observer omits ww and treats measurement as exact. Then

e˙=(A−LC)e+Gw−Lv.\dot e=(A-LC)e+Gw-Lv.

Increasing LL accelerates nominal error decay but also injects measurement noise more strongly. Unmodeled disturbance ww continually drives estimation error. A Luenberger observer assigns deterministic error dynamics; a Kalman filter chooses gain from declared process- and measurement-noise covariances to minimize an estimation-error criterion. They share an innovation architecture but answer different design questions.

An augmented observer can estimate a constant disturbance or sensor bias only if that added state is observable from the available measurements. Adding an integrator labelled “disturbance” does not create information.

Discrete observers need a timing convention #

For

xk+1=Adxk+Bduk,yk=Cdxk+Dduk,x_{k+1}=A_dx_k+B_du_k,\qquad y_k=C_dx_k+D_du_k,

one predictor-form observer is

x^k+1=Adx^k+Bduk+L(yk−Cdx^k−Dduk),\hat x_{k+1}=A_d\hat x_k+B_du_k+L(y_k-C_d\hat x_k-D_du_k),

with

ek+1=(Ad−LCd)ek.e_{k+1}=(A_d-LC_d)e_k.

Some implementations first correct x^k∣k−1\hat x_{k|k-1} with yky_k and then predict x^k+1∣k\hat x_{k+1|k}; others expose a delayed estimate based only on yk−1y_{k-1}. The associated gain matrices and closed-loop timing are not interchangeable. Document when measurement is sampled, when correction executes, and which estimate the controller uses.

Implementation checklist #

  1. Define every known input supplied to the observer; an actuator command is not the same as achieved actuator output under saturation or failure.
  2. Test observability or detectability with the actual sensor set and operating point.
  3. Scale the model and inspect weakly observable modes before placing poles.
  4. Choose observer bandwidth against noise, delay, unmodeled dynamics, and computation rate.
  5. Initialize x^\hat x from available measurements or a declared prior; test startup transients.
  6. Monitor innovations for bias, correlation, saturation, and model drift.
  7. Verify the combined controller-observer loop under constraints and representative disturbances.

An observer is a dynamic hypothesis about hidden state, continuously corrected by evidence. Its output is only as trustworthy as the model, input knowledge, sensor geometry, and innovation diagnostics.

Sources

  1. docsMathWorks: Form State Estimator Given Estimator Gain
  2. docsMathWorks: Form Regulator Given State-Feedback and Estimator Gains

Searches titles, aliases, headings, summaries, and full text.↑↓ move ↵ open esc close