Robot Observability: What Sensors Can Reveal
An estimator can track a number without having evidence that separates it from other numbers. Observability asks whether different hidden states can produce the same measurement history.
Why Does This Exist?
A range sensor reports 1.2 m. Is the robot at 1.0 m with a 0.2 m sensor offset, or at 0.8 m with a 0.4 m offset? Observability asks whether measurements over time can distinguish different initial states under a declared model. A filter cannot recover missing information merely by running longer.
A state is the set of quantities being estimated. A measurement is an observation predicted from that state. State estimation explains how to combine noisy evidence; this page asks whether that evidence separates the unknowns at all. System identification asks a related question about unknown model parameters. Here the motion law is known and a constant sensor bias is included in the state.
Think of It Like This
Measuring a table with a ruler whose zero is hidden
Every reading combines the table length and the ruler's unknown zero offset. Repeating the measurement with the same ruler gives more samples of the same combination. A second ruler with a calibrated zero can separate the length from the offset. Table length maps to position, the displaced zero to bias, and the calibrated ruler to an independent reference. The analogy stops at motion: a robot's dynamics can reveal hidden quantities over time even when a single snapshot cannot.
How It Actually Works
What does measurement history add?
For a discrete linear, time-invariant model, write
Here is an -component state at sample , a known input, the measurement, and the transition, input and measurement matrices. Subtracting the known input contribution from the output history leaves a linear map of the initial state. Its first blocks form
Full column rank means the initial state is uniquely recoverable in the ideal noiseless model. A nonzero vector satisfying is an invisible state difference. This construction and criterion follow MIT's observability notes, section 24.3. Rank concerns distinguishability, not measurement accuracy.
Work a position-and-bias ambiguity
Use a fixed corridor axis, positive toward increasing position. Let , where position and constant additive sensor bias are in metres; means transpose. A stipulated sensor measures . Assume exact known travel in metres, no process noise and no bias drift:
Candidate A is m; candidate B is m. Both give m. Move by m. Their next states are and m; both give m. Subtracting known travel gives m again.
Thus has rank one. The difference between candidates, m, lies in its null space: increasing position and decreasing bias equally leaves every output unchanged. Any sequence of known additive travel preserves this ambiguity. Motion alone doesn't help this particular model.
Add one independently calibrated position observation m at the initial time. The combined equations are and , so m. Their matrix has determinant and rank two. The diagram is state space, not a floor map: horizontal position and vertical bias both use 300 drawing units per metre, with the position axis cropped to start at 0.4 m. The descending line contains equivalent states. The dashed vertical reference selects the mint diamond at candidate B. It depicts noiseless equations; noisy readings would give regions rather than an exact intersection.
Why can one position sensor reveal velocity?
Change the model to , with velocity in m/s and sampling interval seconds. Constant velocity gives and . Now , so the two-row determinant is . Measurements at distinct times distinguish initial position and velocity: in the noiseless case.
Small still gives full rank, but differencing independent position noise of variance produces velocity-error variance . This follows by adding the two independent error variances before dividing by . Faster paired readings can therefore give a noisier two-sample velocity estimate. A longer history can improve estimation under the correct model, while acceleration invalidates constant velocity over a long interval.
For practical design, scale states into meaningful reference units before interpreting singular values. Metres and m/s are different coordinates; a raw numerical condition number changes when units change. Weight output errors by sensor noise, inspect weak directions, and evaluate the intended motion and available observations together. Add a reference or alter sensor geometry when an ambiguity matters; adding a sensor increases calibration and timing work.
Robot models are often nonlinear and depend on trajectory. The linear rank test above is exact for the stated linear model, not a global observability proof for a camera-IMU system. An arbitrary SLAM origin is a reference choice, while an unconstrained physical bias can affect predictions. Keep those two reasons for a free direction separate. Use the existing partial-observability lesson for policy decisions under hidden state; a longer policy history doesn't automatically identify an unobservable physical quantity.
Code
This standalone Python constructs indistinguishable histories and then resolves the initial state with the independent reference. It also checks the velocity-noise amplification just derived.
from math import isclose, sqrt
def history(position: float, bias: float, travel: list[float]) -> list[float]: readings = [position + bias] for step in travel: position += step readings.append(position + bias) return readings
a = history(0.8, 0.4, [0.2, -0.1, 0.3])b = history(1.0, 0.2, [0.2, -0.1, 0.3])assert all(isclose(x, y) for x, y in zip(a, b))reference = 1.0bias = a[0] - referenceassert isclose(bias, 0.2)print("same readings:", [round(z, 2) for z in a])print(f"reference resolves p={reference:.1f} m, b={bias:.1f} m")for h in (0.1, 1.0): sigma_v = sqrt(2) * 0.01 / h print(f"h={h:.1f} s: velocity noise sigma={sigma_v:.4f} m/s")Output readings are [1.2, 1.4, 1.3, 1.6]. The reference resolves p=1.0 m, b=0.2 m; velocity noise standard deviations are 0.1414 and 0.0141 m/s respectively. These are synthetic model checks, not sensor specifications.
Watch Out For
The filter returns a unique number for an ambiguous state
A prior, regularizer or fixed initial bias can select one point on the diagonal. That doesn't mean the measurements identified it. Perturb position and bias in opposite directions and compare predicted histories. Report the unsupported direction, retain appropriate uncertainty or add independent evidence.
Full rank is mistaken for a useful measurement design
Nearly dependent observations can technically separate states while amplifying noise severely. Check scaled, noise-weighted sensitivities over the actual observation window. A stationary calibration experiment can also miss weak directions that appear during operation; changing filter gain cannot create the absent reference.
The Quick Version
- Observability concerns whether measurement history distinguishes states under a particular dynamics model.
- Repeated measurements of position plus constant bias cannot separate those two quantities in the worked additive-motion model.
- An independent position reference resolves the example as position 1.0 m and bias 0.2 m.
- Full rank establishes ideal distinguishability; noise conditioning determines how usable that distinction is.
- A local linear test does not establish global observability of a nonlinear robot.