Schuler oscillation in strapdown INS
An inertial navigator's horizontal error does not simply grow — it oscillates, with a period of 84.4 minutes that depends on nothing but $g$ and the Earth's radius. This is the Schuler oscillation, and it is the single most characteristic behaviour of an inertial system. Understanding it explains why horizontal error is bounded while vertical error diverges, why alignment takes minutes, and why you cannot damp it without an external reference.
Symbols used on this page are defined in the Nomenclature → inertial navigation.
1 · Where the 84.4 minutes comes from
Schuler's original insight (1923) concerned a pendulum. A simple pendulum of length $\ell$ has period
$$ T=2\pi\sqrt{\frac{\ell}{g}} $$Now ask: what length makes the pendulum's bob stay pointing at the Earth's centre even while the pivot accelerates horizontally? The answer is a pendulum whose length equals the Earth's radius — its bob would sit at the centre of the Earth. Such a pendulum is insensitive to horizontal acceleration of its support, which is precisely the property you want from a vertical reference carried on a moving vehicle. Its period is
$$ \boxed{\;T_S=2\pi\sqrt{\frac{R_e}{g}}=2\pi\sqrt{\frac{6.371\times10^{6}}{9.80665}}\approx 5064\ \text{s}\approx 84.4\ \text{min}\;} $$ $$ \omega_S=\sqrt{\frac{g}{R_e}}=1.2405\times10^{-3}\ \text{rad/s} $$An inertial navigator has no physical pendulum — but it contains a mathematical one. The computation that maintains the local-level frame behaves exactly like a Schuler pendulum, so the same period appears in the error dynamics of every terrestrial INS, gimballed or strapdown.
2 · The feedback loop, derived
Consider one horizontal channel (say north) of a local-level mechanization. Two error couplings create the loop.
2.1 Tilt → velocity error: mis-resolved gravity
The accelerometers measure specific force $\mathbf f$; the navigator adds modelled gravity back to get acceleration. If the computed frame is tilted by $\delta\theta$ relative to true level, gravity is resolved along the wrong axes and a component leaks into the horizontal channel:
$$ \delta\dot{v}= -g\,\delta\theta \;+\; b_a $$This is the $-[\mathbf f\times]\delta\boldsymbol\theta$ term of the general error model, specialised to a near-stationary vehicle where $\|\mathbf f\|\approx g$. A 1 mrad tilt produces a false acceleration of $9.8\times10^{-3}$ m/s² — about $1000\ \mu g$, far larger than any decent accelerometer's bias.
2.2 Velocity error → tilt: the transport rate
Here is the part that makes it a loop rather than a ramp. A local-level frame must rotate as the vehicle travels over a curved Earth, at the transport rate
$$ \omega_{en}=\frac{v}{R_e} $$The navigator computes this rate from its own estimated velocity. If the velocity estimate is wrong by $\delta v$, the frame is rotated at the wrong rate, and the tilt error accumulates:
$$ \delta\dot\theta=\frac{\delta v}{R_e} \;+\; b_g $$2.3 Closing the loop
Differentiate the first equation and substitute the second:
$$ \delta\ddot v=-g\,\delta\dot\theta=-g\left(\frac{\delta v}{R_e}+b_g\right) $$ $$ \boxed{\;\delta\ddot v+\underbrace{\frac{g}{R_e}}_{\omega_S^2}\delta v=-g\,b_g\;} $$A second-order undamped harmonic oscillator with natural frequency $\omega_S=\sqrt{g/R_e}$, forced by gyro bias. In state-space form, with $\mathbf x=[\delta v,\ \delta\theta]^\top$:
$$ \dot{\mathbf x}=\begin{bmatrix}0 & -g\\[2pt] \dfrac{1}{R_e} & 0\end{bmatrix}\mathbf x +\begin{bmatrix}b_a\\ b_g\end{bmatrix} $$whose eigenvalues are the crux of the matter:
$$ \lambda=\pm j\sqrt{\frac{g}{R_e}}=\pm j\,\omega_S $$Purely imaginary — marginally stable. No damping, no growth. The error neither dies away nor diverges: it oscillates forever, which is the defining signature of the horizontal channel.
3 · Solutions, and what each error source looks like
With initial errors $\delta v_0,\delta\theta_0$ and constant biases, the solution is
$$ \delta v(t)=\underbrace{\delta v_0\cos\omega_S t}_{\text{initial velocity error}} \;\underbrace{-\;\delta\theta_0\sqrt{gR_e}\,\sin\omega_S t}_{\text{initial tilt}} \;\underbrace{-\;\frac{b_g}{\omega_S}\big(1-\cos\omega_S t\big)R_e\omega_S}_{\text{gyro bias}} \;+\;\underbrace{\frac{b_a}{\omega_S}\sin\omega_S t}_{\text{accel bias}} $$and the tilt error is
$$ \delta\theta(t)=\underbrace{\delta\theta_0\cos\omega_S t}_{\text{decays into velocity and back}} +\underbrace{\frac{\delta v_0}{\sqrt{gR_e}}\sin\omega_S t}_{} +\underbrace{\frac{b_a}{g}\big(1-\cos\omega_S t\big)}_{\text{oscillates about } b_a/g} $$Read off the amplitudes — these are the numbers worth remembering:
| Error source | Velocity-error amplitude | Tilt-error behaviour | Example magnitude |
|---|---|---|---|
| Initial tilt $\delta\theta_0$ | $\delta\theta_0\sqrt{gR_e}$ | oscillates, mean zero | 1 mrad → 7.9 m/s peak velocity error |
| Initial velocity $\delta v_0$ | $\delta v_0$ | amplitude $\delta v_0/\sqrt{gR_e}$ | 1 m/s → 0.13 mrad tilt swing |
| Accel bias $b_a$ | $b_a/\omega_S$ | offset $b_a/g$ plus oscillation | 100 µg → 0.79 m/s amplitude, 0.1 mrad offset |
| Gyro bias $b_g$ | $b_gR_e$ | oscillates about $-b_g/\omega_S$… | 0.01°/h → 0.31 m/s; position error ramps |
3.1 Why accel bias produces an offset, not just oscillation
Setting $\delta\dot v=0$ in the first coupling equation gives the equilibrium the system oscillates about:
$$ 0=-g\,\delta\theta_{eq}+b_a \quad\Longrightarrow\quad \delta\theta_{eq}=\frac{b_a}{g} $$The navigator settles into a tilt that exactly cancels the accelerometer bias — it tilts the computed frame until mis-resolved gravity offsets the false acceleration, which is why the error is bounded rather than divergent. This is the same $b_a/g$ that sets the coarse-alignment accuracy floor, and it is a nice illustration that the two results are the same physics seen from different ends.
4 · The three natural frequencies of a terrestrial INS
Schuler is one of three modes present in the full error dynamics, and they are commonly confused:
| Mode | Frequency | Period | Origin |
|---|---|---|---|
| Schuler | $\omega_S=\sqrt{g/R_e}$ | 84.4 min | gravity/transport-rate loop (this page) |
| Earth rate | $\omega_{ie}=7.292\times10^{-5}$ | 24 h | Earth rotation coupling into the horizontal channels |
| Foucault | $\omega_{ie}\sin L$ | $24/\sin L$ h | modulation of the Schuler oscillation's plane |
The Foucault effect appears as a slow amplitude modulation that swaps error between the north and east channels — the Schuler oscillation's plane precesses, exactly like a Foucault pendulum. With all three present the horizontal error is an 84-minute oscillation whose envelope is modulated over many hours, which is what INS error plots from long flights actually look like.
4.1 The vertical channel is a different animal — and it diverges
Repeating the derivation for the vertical channel flips a crucial sign. An altitude error changes modelled gravity, and it changes it in the direction that reinforces the error: go up, modelled gravity decreases, so the navigator under-corrects and believes it is going up faster still. Using $\partial g/\partial r\approx-2g/R_e$:
$$ \delta\ddot h=-\frac{\partial g}{\partial h}\delta h=+\frac{2g}{R_e}\delta h \quad\Longrightarrow\quad \lambda=\pm\sqrt{2}\,\omega_S\ \ (\textbf{real}) $$ $$ \delta h(t)\sim e^{+\sqrt2\,\omega_S t},\qquad \tau=\frac{1}{\sqrt2\,\omega_S}\approx 570\ \text{s} $$5 · Suppressing the oscillation
Because the eigenvalues are purely imaginary, any damping must come from adding a term proportional to the error — which means you must have some way of observing the error. That constraint organises all the methods, and it is the reason "internal" schemes cannot truly win.
5.1 Internal (undamped → damped) mechanisation, and why it is a trade not a fix
You can feed the navigator's own velocity back into the level-frame computation with a gain, which is the classic "damped INS" of marine systems:
$$ \delta\ddot v+\underbrace{2\zeta\omega_S}_{\text{added damping}}\delta\dot v+\omega_S^2\,\delta v=-g\,b_g $$ $$ \lambda=-\zeta\omega_S\pm j\omega_S\sqrt{1-\zeta^2} $$The oscillation now decays with time constant $1/(\zeta\omega_S)$. But look at the steady state:
$$ \delta v_{ss}=-\frac{g\,b_g}{\omega_S^2}=-b_g R_e $$The steady-state error is unchanged — damping removed the oscillation but not the bias-driven offset, and it now settles there permanently instead of swinging through zero twice per period. Worse, the damping loop uses the navigator's own velocity, which contains the error you are trying to remove:
5.2 External velocity aiding — the only genuine fix
With an independent velocity measurement $\mathbf v_{ext}$ (GNSS, Doppler radar, water-speed log, odometer), the residual is a true observation of the error rather than a rearrangement of it:
$$ \delta\mathbf z=\hat{\mathbf v}-\mathbf v_{ext}=\delta\mathbf v+\text{noise} $$Feeding this through a Kalman gain both damps the loop and drives the steady-state error to zero, because the measurement carries information the navigator did not have:
$$ \dot{\mathbf x}=(A-KH)\mathbf x+\dots,\qquad \text{eigenvalues of } (A-KH) \text{ placed by } K $$Special cases worth naming: zero-velocity updates (ZUPT) are this measurement with $\mathbf v_{ext}=0$ — which is exactly the fine-alignment mechanism, and why alignment convergence is governed by the Schuler period. Periodic stops on a land vehicle, or a ship's water-speed log, are the same idea applied intermittently.
5.3 The full menu of suppression methods
| Method | Mechanism | Removes oscillation? | Removes bias offset? | Cost / caveat |
|---|---|---|---|---|
| External velocity aiding (GNSS, Doppler, log) | true error observation → Kalman gain | yes | yes | needs an external sensor; the reference standard |
| ZUPT / periodic stops | $\mathbf v_{ext}=0$, exactly known | yes | yes (bias becomes observable) | requires stopping; not possible in flight |
| Position aiding | observes the integral of $\delta v$ | yes | yes | slower to damp than velocity aiding |
| Internal (2nd/3rd-order) damping | own-velocity feedback | yes | no | destroys Schuler tuning → manoeuvre sensitivity |
| Baro/radar altimeter | stabilises the vertical channel | n/a | n/a | mandatory — vertical is unstable (§4.1) |
| Bias estimation in the filter | removes the forcing term $-g\,b_g$ | indirectly | yes | needs observability, i.e. aiding or motion |
| Rotation / carouselling | modulates bias to zero mean | reduces amplitude | largely | mechanical complexity — see rotation |
| 84.4-min averaging | a whole period integrates to ~zero | in the mean only | no | only useful for post-flight analysis |
| Better sensors | shrinks the driving terms | no — same frequency | smaller | expensive; changes amplitude only |
6 · Does this apply to strapdown, or only gimballed systems?
It applies to both, and this is worth being precise about because the phrase "Schuler-tuned platform" comes from gimballed hardware and causes confusion.
| Gimballed | Strapdown | |
|---|---|---|
| Level frame is maintained by | physically torquing gimbals | numerically, in software |
| Transport-rate correction | gimbal torquing commands | terms in the attitude update |
| Schuler loop exists? | yes — physical | yes — mathematical, identical dynamics |
| Period | 84.4 min | 84.4 min |
| Where the error lives | platform misalignment | the computed $C^n_b$ |
In strapdown there is no platform to tilt, but the computed local-level frame plays exactly that role, and the same $g$ and $1/R_e$ couplings appear in the error-state matrix $A$. Even a system mechanised in ECI (as launch vehicles typically are, to avoid transport-rate terms entirely) exhibits the same behaviour when its errors are expressed in local-level coordinates, because the physics of the gravity-gradient coupling is frame-independent. What changes is whether the $g/R_e$ term appears explicitly in your mechanisation or emerges from the gravity-gradient block $G=\partial\mathbf g/\partial\mathbf r$.
7 · Practical implications
- Alignment duration is set by the Schuler period. Observing the oscillation is how the filter separates tilt from accel bias; you need a meaningful fraction of 84.4 min to do it well, which is why minutes-long fine alignment is physics rather than conservatism.
- Never test an INS for exactly one Schuler period. The error returns near zero at $t=T_S$, so a test that ends there will report a suspiciously excellent result. Test for a non-integer number of periods, or report the peak rather than the endpoint.
- Interpret error plots correctly. An 84-minute ripple in flight data is expected behaviour, not a bug or a filter instability. Conversely, its absence in an unaided system suggests the analysis or the simulation is wrong.
- Short-flight vehicles never see a full cycle. A 10-minute launch trajectory covers only ~12% of a Schuler period, so the oscillation appears as the familiar growing $t^2$ error — the first quarter-cycle of a sinusoid looks like a parabola. The polynomial error laws and the Schuler solution are the same result at different timescales.
- Sanity-check with $\sqrt{gR_e}\approx7900$ m/s. Residual tilt in mrad times 7.9 gives peak velocity error in m/s — a fast, reliable order-of-magnitude check on any alignment requirement.
8 · Further reading
- Titterton & Weston, Strapdown Inertial Navigation Technology, 2nd ed. — error propagation, Schuler/Foucault modes, damped vs undamped mechanisations.
- Groves, Principles of GNSS, Inertial and Multisensor Integrated Navigation Systems — INS error dynamics in local-level frames and the vertical-channel instability.
- Britting, Inertial Navigation Systems Analysis — the classic rigorous treatment of the error equations and their modes.
- Farrell, Aided Navigation — how aiding places the eigenvalues of the damped error system.
- Schuler, M., "Die Störung von Pendel- und Kreiselapparaten durch die Beschleunigung des Fahrzeuges" (Physikalische Zeitschrift, 1923) — the original result.
Related: Gyro bias cancellation by rotation · IMU acceptance testing · Linear covariance analysis · IMU & inertial navigation · Ground alignment · back to Misc.