The same machine, the same balancing gains, but the controller no longer sees the state. It sees whichever sensors you leave plugged in, each noisy by an amount nobody told it, and a Kalman filter fills in the rest. You choose the sensors and how much the filter trusts them. During the scored run the machine is hidden; you watch the ghost, which is what the controller believes. Then the fog lifts.
The controller is the lab's balancing LQR, u = −K x̂, acting on an estimate from a steady-state Kalman filter of the model linearised at upright, run at 240 Hz on the sensors you leave in: the cart's position, the first joint's angle, the second's. The filter is built from two doubts, the model's (fixed) and the sensors' (the trust dial; nominal assumes 5 mm and 2 mrad, each step of the dial is a factor of ten). Gusts arrive on today's schedule and grow. Cost is ∫(10θ₁² + 10θ₂² + x² + ½(u/umax)²) dt over thirty seconds, plus five per second after a fall. Hidden today: how noisy each sensor really is. Par is the Kalman filter that knows today's noise exactly, on the sensors you chose. It can be beaten, because the gusts are not the Gaussian noise the filter was told about.
Unplug the camera and the machine still balances: the filter integrates the angles it does see through the model and keeps a belief about the cart, and the belief is wrong in one particular way, because nothing it sees depends on where the cart is. The ghost stands still while the machine drifts; that is what unobservable looks like. Unplug the first joint's encoder instead and it balances for a while, inferring the first angle from how the second one moves, until the gusts grow. Unplug the second joint's encoder and it falls within seconds: the second link is the fastest unstable thing in the machine and the cart barely feels it, so no filter is fast and quiet enough to reconstruct it. Observable is a yes or no; how well is a number, and the number is what the game is about. The trust dial is the other half: believe the sensors too much and their noise becomes the controller's command; believe the model too much and the estimate arrives late.
An observer runs the model alongside the machine and nudges its copy toward whatever it can measure. If the pair (A, C) is observable, a gain L exists that makes the copy's error decay however fast you like; the state the controller needs is then the copy's, not the machine's. Feedback from an estimate is how nearly every real controller works: velocities are estimated, not measured, and the angle of a link with no encoder is estimated from the ones that have one.
The catch is the same as everywhere in this series. Fast convergence means a large L, and a large L multiplies sensor noise and model error into the estimate. Luenberger's observer picks L by placing the error's poles; Kalman's picks it from the two noises. Both are the same equation with a different reason for the number.
Given how much to doubt the model (process noise Q) and how much to doubt each sensor (R), the Kalman filter is the linear estimator with the smallest error variance, and its gain follows from the same Riccati recursion that gives the LQR, run on the transposed problem. Here the recursion runs in your browser each time you touch a sensor or the dial, iterated until the gain stops changing, a few dozen to a few hundred steps. The trust dial scales R: one step is a factor of ten in assumed noise.
The filter is optimal for the noise it was told about. Today's gusts are impulses, not white noise, and the fixed Q is one guess, so the textbook filter with the true R is par and not a ceiling. Too much trust and the cart chases every millimetre of camera jitter; too little and the belief lags a gust by the time the machine has already fallen. The dial's sweet spot moves with the day's noise, which is hidden until the fog lifts.
The separation principle is the small miracle that makes output feedback tractable: with a linear model, the poles of the loop that feeds back an estimate are exactly the poles you designed for the controller plus the poles you designed for the estimator. Neither design needs to know about the other. Kalman's filter and the LQR together are LQG, the optimal output-feedback controller for a linear plant with Gaussian noise.
It is a statement about the model. On the real machine the two designs interfere through everything the model omits: saturation turns a noisy estimate into a chattering motor, and an estimator tuned for speed can undo a controller's margins. LQG has no guaranteed margins at all, which Doyle showed in one page in 1978, and it is why the game lets you feel the coupling rather than trust the theorem.
Nothing in the angles depends on where the cart is, so from the encoders alone the cart's position is unobservable: the observability matrix drops rank, the filter's belief about x is never corrected, and the ghost stands centred while the machine wanders. The game warns you when your sensor set has this hole. Everything else is observable in the yes-or-no sense: from the camera alone, in principle, all six states can be reconstructed.
In practice the second joint's angle appears in the cart's acceleration only through the first joint's, twice removed, and its unstable mode is the fastest in the machine. Reconstructing it needs a fast filter, a fast filter needs a large gain, and a large gain turns the camera's millimetres and the model's small lies into radians per second. Observable, yes; knowable in time, no. Ask instead how much information a sensor carries about the mode you most need, which is what the Gramian measures, and which is why the encoder on the second joint is the one you should never unplug.