3.5.36 · D3Guidance, Navigation & Control (GNC)

Worked examples — LQG — LQR + Kalman filter, separation principle

2,206 words10 min readBack to topic

Before any number: three tiny reminders so no symbol is unearned.


The scenario matrix

Every cell below is hit by at least one worked example. Read it as a checklist.

# Case class What makes it special Hit by
A Stable scalar plant () drift already helps Ex 1
B Unstable scalar plant () control must stabilize Ex 2
C Cheap control limit () gain blows up, fast poles Ex 3
D Expensive control limit () gain minimal, mirror trick Ex 3
E Zero state penalty () on stable plant degenerate: do nothing Ex 4
F Kalman: clean vs noisy sensor ( small/large) trust sensor vs model Ex 5
G 2×2 plant, full separation, poles = union matrix case, no coupling Ex 6
H Real-world word problem (spacecraft rate damping) translate physics matrices Ex 7
I Exam twist: uncontrollable / degenerate Riccati has no stabilizing Ex 8

Ex 1 — Cell A: stable scalar plant

Forecast: the plant already decays on its own (). Will the optimal controller push hard or barely nudge? Guess the sign of the pole before reading.

  1. Write CARE for scalars. With scalars everything commutes, so and . Why this step? CARE is the optimality condition from the HJB equation; solving it is the whole LQR problem.
  2. Take the positive root (the value function must be a bowl, so ): Why this step? Of the two algebraic roots only gives a real cost-to-go and a stabilizing gain.
  3. Gain and closed loop: , so Why this step? is the state-feedback law; is the pole of the controlled system.

Verify: the plant was already stable () and the optimum only made it more stable () — modest push because the plant helps itself. ✅ Units: dimensionless here (all matrices scalar).


Ex 2 — Cell B: unstable scalar plant

Forecast: an unstable plant with must be pulled below zero. Will exceed ? Guess.

  1. CARE: . Why this step? Same scalar CARE template; only changed.
  2. Positive root: . Why this step? Pick for the stabilizing solution.
  3. Gain: . Closed loop: . Why this step? The controller must overcome the drift and then some to reach a negative pole.

Verify: indeed , exactly as an unstable plant demands — the controller "cancels" the and adds of decay. ✅


Ex 3 — Cells C & D: cheap vs expensive control limits

Forecast: with free control we expect an infinitely aggressive pole; with priceless control we expect the mildest stabilizing pole. What is that mildest pole for an unstable ?

  1. General scalar CARE with kept: , so Why this step? Keeping symbolic lets us take clean limits instead of guessing.
  2. Cheap control : ; pole . Why this step? Free control means no reason to hold back — infinite gain, instantaneous correction. (Physically impossible, hence we never set .)
  3. Expensive control : ; pole . Why this step? This is the famous mirror-image result: the cheapest-effort stabilizer just reflects the unstable pole across the imaginary axis to .

Verify: at , take (matches parent Example 1); take . Limits bracket the parent's answer. ✅


Ex 4 — Cell E: degenerate on a stable plant

Forecast: says "state error is free." On an already-stable plant, is there any reason to spend control effort?

  1. CARE with : . Why this step? Same template with ; factor it.
  2. Choose : the roots are and . Only is admissible. Why this step? Cost-to-go cannot be negative; is rejected.
  3. Gain: , so . Closed loop . Why this step? With no state penalty and a stable plant, the optimal action is do nothing and let the plant decay for free.

Verify: : with a decaying plant and no penalties, the total cost really is zero. ✅


Ex 5 — Cell F: Kalman clean vs noisy sensor

Forecast: which sensor makes us lean on the measurement (big ) and which makes us trust the model (small )?

  1. FARE for scalars: , i.e. Why this step? FARE is the dual of CARE (swap , , , ).
  2. Clean sensor : . Then . Why this step? Tiny means the sensor is trustworthy — large pulls the estimate hard toward .
  3. Noisy sensor : . Then . Why this step? Huge means the sensor lies — small tells the filter to trust its model.

Verify: is roughly larger than — monotone with sensor quality, exactly as "large → small " predicts. ✅


Ex 6 — Cell G: 2×2 plant, separation gives union of poles

Forecast: because everything is diagonal, each axis is an independent scalar problem. Predict that the 4 poles are just two copies of a scalar answer, once per axis.

  1. Diagonal ⇒ two scalar CAREs. Axis 1: , , pole . Why this step? A diagonal system decouples the state-feedback problem into independent channels.
  2. Axis 2: , , pole . Why this step? Same, with .
  3. Estimator poles by duality: mirrors the CAREs, giving and estimator poles . Why this step? FARE = CARE here (symmetric numbers), so estimator poles equal controller poles.
  4. Union of poles. By the block-triangular structure the LQG poles are Why this step? The block in makes eigenvalues the union — the separation principle, applied.

Verify: all four poles are strictly negative → closed loop stable, and the set is exactly (controller poles) ∪ (estimator poles). ✅


Ex 7 — Cell H: real-world word problem (spacecraft rate damping)

Forecast: the axis already de-spins slowly (). Will the controller add strong or gentle damping given the heavy ?

  1. Translate physics to matrices: . Rate is the state; torque is the input. Why this step? GNC problems are just state-space in disguise — identify first.
  2. CARE: . Gain . Closed loop . Why this step? Heavy demands tight rate control, so we expect a fast pole — confirmed.
  3. FARE: . Kalman gain . Estimator pole . Why this step? Gyro noise () is comparable to process noise, so a moderate blends model and sensor.
  4. Assemble the controller: run , then command . Why this step? Separation lets us bolt the two pieces together directly.

Verify: controller pole (fast damping, as heavy demands) and estimator pole are both stable; units of are , matching a rate-damping gain. ✅


Ex 8 — Cell I: exam twist, degenerate/uncontrollable

Forecast: with the control does nothing. Can LQR possibly stabilize an unstable, uncontrollable plant?

  1. Plug into CARE: . Why this step? The quadratic term vanishes because ; we're left with a linear equation.
  2. Reject the root. is not a valid cost-to-go — there is no . Why this step? No admissible means the infinite-horizon cost is : the unstable mode is uncontrollable and cannot be regulated.
  3. Interpret: LQR requires stabilizable. With and , the diverging mode is untouchable, so for any input. Why this step? This is the standard exam gotcha: check stabilizability before trusting a Riccati solution.

Verify: the only algebraic root violates ; consistent with for an unstable uncontrollable mode. ✅


Recall Quick self-test

Scalar : what is ? ::: (Ex 2) Mirror-pole limit for : closed-loop pole? ::: (reflect ) (Ex 3) , : optimal control? ::: , do nothing (Ex 4) Huge sensor noise : is big or small? ::: small — trust the model (Ex 5) : does LQR have a solution? ::: no — uncontrollable unstable mode, (Ex 8)