Observer (Luenberger Estimator) Calculator

Compute the Luenberger observer gain L that places a 2-state system's estimation-error poles at a target damping ratio and natural frequency.

👁️ Observer (Luenberger Estimator) Calculator
a₁
a₀
Observer damping ratio (ζ)0.7
0.12
Observer natural frequency (ωn)15 rad/s
rad/s
0.550
Gain l1
Gain l2
Open-loop poles
Observer poles
Response type
Step-by-step working

👁️ What is an Observer (Luenberger Estimator)?

A Luenberger observer, also called a state observer or estimator, is a dynamic system that reconstructs a plant's full internal state vector x from its measured input u and output y, even when most of that state cannot be measured by a physical sensor. It runs a real-time copy of the plant's model alongside a correction term, the observer gain L multiplied by the difference between the actual measured output and the observer's predicted output, that continuously nudges the estimate x_hat toward the true state x.

Control engineers reach for a Luenberger observer whenever a controller needs the full state vector but only a subset of it is directly measurable. A robotics engineer building a joint controller may only have a position sensor and needs an estimate of velocity for a full state feedback law. An aerospace engineer stabilizing an aircraft attitude mode may measure only angular rate from a gyroscope and needs an estimated angle for the control law. A power electronics engineer regulating a motor drive may measure only current and needs an estimated flux or speed to close the loop.

A common misconception is that an observer needs to know the control input's future values or the plant's exact disturbances to work. In reality, a Luenberger observer only needs the plant's known A, B, C matrices, the actual measured input u(t) and output y(t) at every instant, and a starting guess for the state, the correction term L(y minus y_hat) alone drives the estimation error to zero over time as long as the pair (A, C) is observable and L is chosen so A minus LC is stable.

This calculator takes a 2-state open-loop system's characteristic polynomial coefficients a1 and a0 (in observable canonical form, the dual of the controllable canonical form used across this site's control systems calculators), plus a target estimation-error damping ratio zeta and natural frequency omega_n, and returns the observer gain vector L, the open-loop poles, the resulting observer (estimation-error) poles, a damping classification, and a pole-map diagram showing exactly how the observer gain moves the error dynamics.

📐 Formula

l1  =  2ζωn − a1     l2  =  ωn² − a0
Open-loop system in observable canonical form: A = [[−a1, 1], [−a0, 0]], C = [1, 0]
Estimation error: e = x − x̂, obeying ė = (A − LC)e
Desired estimation-error characteristic polynomial: s² + 2ζωns + ωn² = 0
A − LC gives characteristic polynomial s² + (a1+l1)s + (a0+l2) = 0, matched term by term to the desired polynomial above
Example: a1 = 4, a0 = 13, ζ = 0.7, ωn = 15 → l1 = 17, l2 = 212, observer poles ≈ −10.5 ± 10.712j.

📖 How to Use This Calculator

Steps

1
Enter the open-loop coefficients. Type a1 and a0, the coefficients of the open-loop characteristic polynomial s^2 + a1*s + a0 in observable canonical form.
2
Enter the target observer damping ratio and natural frequency. Type the desired estimation-error damping ratio zeta and natural frequency omega_n, typically placed faster than the controller poles.
3
Read the observer gain and pole map. See the gain vector L, the open-loop and observer error poles, the damping classification, and the pole-map diagram.

💡 Example Calculations

Example 1 — Fast Underdamped Observer for a Stable Plant

a1 = 4, a0 = 13, ζ = 0.7, ωn = 15 rad/s

1
Open-loop poles: roots of s² + 4s + 13 = 0 → −2 ± 3j
2
l1 = 2(0.7)(15) − 4 = 21 − 4 = 17; l2 = 15² − 13 = 225 − 13 = 212
3
Observer poles: −(0.7)(15) ± j(15)√(1−0.7²) = −10.5 ± 10.712j (underdamped, roughly 5× faster than a ζ=0.7/ωn=5 controller)
L = [17, 212]T, observer poles ≈ −10.5 ± 10.712j
Try this example →

Example 2 — Estimating a Marginally Stable Plant

a1 = 0, a0 = 4, ζ = 0.6, ωn = 10 rad/s

1
Open-loop poles: roots of s² + 4 = 0 → ±2j (marginally stable, on the imaginary axis)
2
l1 = 2(0.6)(10) − 0 = 12 − 0 = 12; l2 = 10² − 4 = 100 − 4 = 96
3
Observer poles: −(0.6)(10) ± j(10)√(1−0.6²) = −6 ± 8j (underdamped, now stable)
L = [12, 96]T, observer poles ≈ −6 ± 8j, the estimation error decays even though the plant itself never decays on its own
Try this example →

Example 3 — Overdamped Observer

a1 = 6, a0 = 9, ζ = 1.3, ωn = 8 rad/s

1
Open-loop poles: roots of s² + 6s + 9 = 0 → −3, −3 (repeated real pole)
2
l1 = 2(1.3)(8) − 6 = 20.8 − 6 = 14.8; l2 = 8² − 9 = 64 − 9 = 55
3
Observer poles: roots of s² + 20.8s + 64 = 0 → −3.755, −17.045 (overdamped, since ζ is greater than 1)
L = [14.8, 55]T, observer poles ≈ −3.755, −17.045 (overdamped)
Try this example →

❓ Frequently Asked Questions

What is a Luenberger observer?+
A Luenberger observer (state observer or estimator) is a dynamic system that reconstructs a plant's internal state vector x from its measured input u and output y, when not every state can be measured directly. It runs a copy of the plant's model plus a correction term L(y minus y_hat) that drives the estimate toward the true state.
How do you calculate the observer gain L?+
For a system in observable canonical form with A = [[-a1,1],[-a0,0]] and C = [1,0], the estimation error e = x minus x_hat obeys e_dot = (A minus LC)e, which has characteristic polynomial s^2 + (a1+l1)s + (a0+l2) = 0. Matching this to the desired polynomial s^2 + 2*zeta*omega_n*s + omega_n^2 = 0 gives l1 = 2*zeta*omega_n minus a1 and l2 = omega_n^2 minus a0.
What is the desired estimation-error characteristic polynomial?+
For a standard second-order error response with damping ratio zeta and natural frequency omega_n, the desired characteristic polynomial of A minus LC is s^2 + 2*zeta*omega_n*s + omega_n^2 = 0, the same standard second-order form used to specify the controller's closed-loop poles in state feedback pole placement.
How fast should observer poles be compared to controller poles?+
Observer poles are usually placed 2 to 6 times faster (a larger natural frequency, keeping a similar damping ratio) than the state feedback controller's closed-loop poles. A slow observer lets estimation error linger and distort the controller's behavior, while an overly fast observer amplifies measurement noise.
What is the difference between a Luenberger observer and a Kalman filter?+
A Luenberger observer places the estimation-error poles at chosen locations using a deterministic pole-placement rule, with no explicit noise model. A Kalman filter instead chooses the gain that minimizes estimation-error variance given known process and measurement noise covariances, see the Kalman Filter Gain Calculator on this site for that stochastic approach.
Does designing an observer require the system to be observable?+
Yes. The estimation-error poles of A minus LC can only be placed at arbitrary locations if the pair (A, C) is observable, meaning the observability matrix has full rank. A system already given in observable canonical form, as used by this calculator, is observable by construction, so observer design always succeeds here.
Why do the eigenvalues of A minus LC equal the desired estimation-error poles?+
This is the defining property of successful observer design: once L is chosen so that A minus LC's characteristic polynomial exactly matches the desired s^2 + 2*zeta*omega_n*s + omega_n^2 polynomial, its eigenvalues (the estimation-error poles) are, by definition, the roots of that same polynomial, exactly minus zeta*omega_n plus or minus j*omega_n times the square root of (1 minus zeta squared) for the underdamped case.
What is the separation principle in observer-based control?+
The separation principle states that when a controller uses an observer's state estimate x_hat instead of the true state x, the combined closed-loop system's poles are exactly the union of the controller's poles (from A minus BK) and the observer's poles (from A minus LC), each of which can be designed completely independently of the other.
What happens if the observer poles are unstable?+
If any eigenvalue of A minus LC has a positive real part, the estimation error e = x minus x_hat grows without bound over time instead of decaying to zero, so the state estimate x_hat never converges to the true state x, making the estimate useless for feedback control regardless of how good the controller gain K is.
Is this observer design method related to Ackermann's formula?+
Yes. For this 2-state system already given in observable canonical form, direct coefficient matching (used here) and Ackermann's formula for observer design give the identical result. Ackermann's formula is the more general matrix expression needed for systems not already in canonical form or with more than two states.
Can a Luenberger observer estimate states that cannot be measured directly?+
Yes, that is its entire purpose. As long as the pair (A, C) is observable, the observer reconstructs every internal state variable, including ones with no physical sensor, purely from the measured output y and known input u, using only the plant model and the correction gain L.

What is a Luenberger observer?

A Luenberger observer (state observer or estimator) is a dynamic system that reconstructs a plant's internal state vector x from its measured input u and output y, when not every state can be measured directly. It runs a copy of the plant's model plus a correction term L(y minus y_hat) that drives the estimate toward the true state.

How do you calculate the observer gain L?

For a system in observable canonical form with A = [[-a1,1],[-a0,0]] and C = [1,0], the estimation error e = x minus x_hat obeys e_dot = (A minus LC)e, which has characteristic polynomial s^2 + (a1+l1)s + (a0+l2) = 0. Matching this to the desired polynomial s^2 + 2*zeta*omega_n*s + omega_n^2 = 0 gives l1 = 2*zeta*omega_n minus a1 and l2 = omega_n^2 minus a0.

What is the desired estimation-error characteristic polynomial?

For a standard second-order error response with damping ratio zeta and natural frequency omega_n, the desired characteristic polynomial of A minus LC is s^2 + 2*zeta*omega_n*s + omega_n^2 = 0, the same standard second-order form used to specify the controller's closed-loop poles in state feedback pole placement.

How fast should observer poles be compared to controller poles?

Observer poles are usually placed 2 to 6 times faster (a larger natural frequency, keeping a similar damping ratio) than the state feedback controller's closed-loop poles. A slow observer lets estimation error linger and distort the controller's behavior, while an overly fast observer amplifies measurement noise.

What is the difference between a Luenberger observer and a Kalman filter?

A Luenberger observer places the estimation-error poles at chosen locations using a deterministic pole-placement rule, with no explicit noise model. A Kalman filter instead chooses the gain that minimizes estimation-error variance given known process and measurement noise covariances, see the Kalman Filter Gain Calculator on this site for that stochastic approach.

Does designing an observer require the system to be observable?

Yes. The estimation-error poles of A minus LC can only be placed at arbitrary locations if the pair (A, C) is observable, meaning the observability matrix has full rank. A system already given in observable canonical form, as used by this calculator, is observable by construction, so observer design always succeeds here.

Why do the eigenvalues of A minus LC equal the desired estimation-error poles?

This is the defining property of successful observer design: once L is chosen so that A minus LC's characteristic polynomial exactly matches the desired s^2 + 2*zeta*omega_n*s + omega_n^2 polynomial, its eigenvalues (the estimation-error poles) are, by definition, the roots of that same polynomial, exactly minus zeta*omega_n plus or minus j*omega_n times the square root of (1 minus zeta squared) for the underdamped case.

What is the separation principle in observer-based control?

The separation principle states that when a controller uses an observer's state estimate x_hat instead of the true state x, the combined closed-loop system's poles are exactly the union of the controller's poles (from A minus BK) and the observer's poles (from A minus LC), each of which can be designed completely independently of the other.

What happens if the observer poles are unstable?

If any eigenvalue of A minus LC has a positive real part, the estimation error e = x minus x_hat grows without bound over time instead of decaying to zero, so the state estimate x_hat never converges to the true state x, making the estimate useless for feedback control regardless of how good the controller gain K is.

Is this observer design method related to Ackermann's formula?

Yes. For this 2-state system already given in observable canonical form, direct coefficient matching (used here) and Ackermann's formula for observer design give the identical result. Ackermann's formula is the more general matrix expression needed for systems not already in canonical form or with more than two states.

Can a Luenberger observer estimate states that cannot be measured directly?

Yes, that is its entire purpose. As long as the pair (A, C) is observable, the observer reconstructs every internal state variable, including ones with no physical sensor, purely from the measured output y and known input u, using only the plant model and the correction gain L.