control//state estimation//Kalman filter//colored noise

Noise with memory, and why it makes a filter arrogant. A Kalman filter assumes **white noise**: every reading brings fresh noise with no memory, \(\mathbb E[v_kv_j^{\mathsf T}]=0\) for \(k\neq j\), and the same for the process noise. **Colored noise** is noise with memory, where the error now says something about the error next. The name comes from light: white noise has the same energy at every frequency, colored noise concentrates it at low frequencies, and engineers really did name it pink, red and brown.


Noise with memory, and why it makes a filter arrogant. A Kalman filter assumes white noise: every reading brings fresh noise with no memory, E[vkvjT]=0\mathbb E[v_kv_j^{\mathsf T}]=0E[vk​vjT​]=0 for k≠jk\neq jk=j, and the same for the process noise. Colored noise is noise with memory, where the error now says something about the error next. The name comes from light: white noise has the same energy at every frequency, colored noise concentrates it at low frequencies, and engineers really did name it pink, red and brown.

It matters so much because it is the problem of plugging the same sensor in twice, spread over time (correlated measurements). If a GPS error changes slowly, a hundred readings in ten seconds share almost the same error. The filter believes it has received a hundred independent opinions and shrinks PPP as if it had a hundred votes, when it has one. The chain follows: overconfidence, a gain that falls towards zero, a filter that stops listening to the sensor exactly when the sensor starts saying something new, and divergence, pinned far from the truth inside a ridiculously narrow band.

naive inside ±2σ1 % naive claims σ0.04 m bias in state inside ±2σ100 % bias in state claims σ0.58 m An object at rest measured for 60 s through a sensor error with correlation time τ = 15 s. The filter that assumes white noise claims σ 0.04 m and holds the truth inside ±2σ 1 % of the time; the filter with the bias in its state claims σ 0.58 m and holds it 100 %.

Raise the correlation time and watch the naive filter's band close while the truth walks out of it. The augmented filter cannot fully separate position from bias with a single sensor, but it knows it and says so: its band stays wide. Honest before precise.

Drift is everywhere. GPS ionospheric and tropospheric delays change over minutes, and so does multipath for a receiver at rest; a gyroscope's bias wanders with temperature; a barometric altimeter drifts because the weather changes the pressure; a slightly deflated wheel makes the same scale error on every turn.

The good fix is to augment the state. When an error has predictable structure, it stops being noise and becomes state. Model the bias as a first-order Gauss–Markov process, bk=ϕ bk−1+ηkb_k=\phi,b_{k-1}+\eta_kbk​=ϕbk−1​+ηk​ with ϕ=e−Δt/τ\phi=e^{-\Delta t/\tau}ϕ=e−Δt/τ, put it in the state, x=[p,b]Tx=[p,b]^{\mathsf T}x=[p,b]T, with ϕ\phiϕ inside FFF and H=[1  1]H=[1;1]H=[11]. The filter now knows the error has memory. The cost is one dimension more and, with one sensor, limited observability.

The cheaper fixes: decimate (use one reading every two correlation times or so, losing data and gaining honesty); difference the readings, zk−ϕzk−1z_k-\phi z_{k-1}zk​−ϕzk−1​, which is white (Bryson and Henrikson); or inflate RRR until the filter stops being arrogant, which works more or less and nobody knows why.

It is detected in the innovations, which a healthy filter keeps white (innovation). For inertial sensors the standard characterization is the Allan variance, which separates white noise, bias instability and random walk by their signature over averaging time (autocorrelation).