Skip to content

Repository files navigation

The Schuler Pendulum

Why a pendulum tuned to 84.4 minutes cannot tell that its vehicle is accelerating — and why that one fact makes inertial navigation possible.

Six interactive modules that build the idea from first principles. Everything is simulated live from the equations of motion, not illustrated.

The pendulum lab: three pendulums on one accelerating vehicle

A held acceleration. The 1 m pendulum (amber) swings out to 5.8° and parks there for the whole manoeuvre — it is measuring acceleration, not gravity. The pendulum one Earth radius long (mint) does not move at all.

The idea in one equation

Hang a pendulum of length l from a pivot that rides along the surface of a spherical Earth of radius R. Let λ be the pivot's angular position about the Earth's centre and θ the rod's tilt away from the local vertical at the pivot. Projecting Newton's law perpendicular to the rod gives the exact equation of motion

l·θ̈ = (R·cos θ − l)·λ̈ + R·λ̇²·sin θ − g·sin θ

and for small tilts that collapses to

l·θ̈ + g·θ = (R − l)·λ̈

Everything the vehicle does sits on the right, multiplied by (R − l). Choose l = R and that term is identically zero: the pendulum becomes deaf to acceleration, at any amplitude and any frequency. What remains is an unforced oscillator with

ω = √(g/R) = 1.2407e-3 rad/s      T = 2π√(R/g) = 84.4 minutes

The picture that makes it click: a pendulum of length R has its bob at the centre of the Earth. Slide the pivot anywhere along the surface and the rod still runs from the surface to the centre, which is exactly what "local vertical" means. It never has to swing.

The geometric argument: the bob's hang point traces a circle that collapses at l = R

Module 2. Hold the rod vertical and the bob must sit at distance R − l from the centre, so as the vehicle drives it traces a circle of radius |R − l|. Following that circle requires sideways acceleration, which requires tilt. At l = R the circle collapses to a point that never moves.

How sharp is the null?

Sensitivity against length, and the frequency response

Module 3. Steady tilt per unit acceleration plunges through six decades at l = R. A 1 m pendulum and a 100 km pendulum are equally useless as vertical references — the curve only does anything interesting in the last decade before R.

The surprise is the tuning budget. Sensitivity goes as the fractional mistuning, so arcsecond-class performance needs the effective length correct to about 300 m out of 6371 km. That is why the idea is buildable: you never make the lever arm, you make a gain.

The same equation, inside a real navigator

The inertial navigator error loop

Module 4. Integrate the accelerometers and torque the platform at k·δv. The error dynamics come out as φ̈ + (g·k)·φ = a·(1/R − k) − b·k — the pendulum equation with the loop gain k standing in for 1/l.

Setting k = 1/R zeroes the acceleration term and fixes the natural period at 84.4 minutes: one condition, both prizes. That is the whole reason an inertial navigator works. Dead reckoning means integrating twice, so any constant error should grow without bound — and it does, as t² and t³, if the loop is open. Schuler tuning converts that runaway into a bounded 84.4-minute oscillation, leaving only gyro drift as a straight ramp.

84.4 minutes is not a coincidence

A grazing satellite, a gravity train and the Schuler pendulum, locked in step

Module 5. A satellite in zero-altitude circular orbit, a frictionless train through any straight tunnel, and the Schuler pendulum. Three unrelated systems, one period, and they never drift apart.

An Earth-sized gravitating ball hands you exactly two numbers, a length R and an acceleration g. There is only one way to combine them into a time, √(R/g), so any oscillator driven by the Earth's own gravity across the Earth's own size has to land within 2π of 84.4 minutes.

The derivation

Step-by-step derivation

Module 6. Ten steps from a weight on a stick to the Schuler condition, plus both limiting cases and an honest list of what a single-axis treatment leaves out.

Running it

npm install
npm run dev        # http://localhost:5173

Each module is directly linkable, on the live site too: #lab · #centre · #null · #ins · #84 · #math

Script What it does
npm run dev Vite dev server
npm test physics test suite
npm run typecheck tsc --build
npm run lint oxlint
npm run build production bundle
npm run screenshots regenerates the images above (needs the dev server running)

Every push to main runs lint, the physics tests and the build, then publishes to GitHub Pages. The deploy sets BASE_PATH=/schuler-pendulum/; everywhere else the app builds for the root, so dropping it on Vercel, Netlify or Cloudflare Pages needs no configuration at all.

The model

The simulations integrate the equations above directly with fixed-step RK4, choosing a step that resolves the shortest active pendulum. Nothing is precomputed or faked, and the plots store a min/max pair per sample so a 2-second swing replayed at 400× shows a true envelope rather than an aliased line.

Two idealisations of gravity give an identical answer for the component perpendicular to the rod, which is the only component that matters: a uniform field −g·r̂ along the local vertical at the pivot, and the interior field of a uniform-density Earth −(g/R)·B. Both yield g·sin θ, so the result does not hinge on which one you pick.

Deliberately left out, all of which module 6 discusses:

  • Earth rate. This is a single-axis, non-rotating-Earth treatment. A real navigator also torques for Ω⊕, and Coriolis coupling between the two horizontal channels splits the Schuler oscillation and adds a 24-hour beat.
  • The vertical channel. Along the vertical the same feedback is unstable, with errors growing as e^(ω·t). Altitude must come from elsewhere.
  • Ellipticity. The correct gain uses the local radii of curvature, which differ north–south and east–west by about 0.7 %.

Verification

src/lib/physics.test.ts checks the simulation against closed-form and textbook results rather than against itself:

  • The Schuler period is 84.4 min, and equals both a length-R pendulum's natural period and the period of a zero-altitude circular orbit.
  • A short pendulum settles at atan(a/g) — it is an accelerometer — and shifts further as v²/R softens gravity, matching an independent Newton solve of the steady state.
  • Steady tilt follows (1 − l/R)·a/g across lengths from 10⁻⁶ R to 2 R, including the sign flip past l = R.
  • A Schuler pendulum holds the vertical to better than 10⁻⁴ rad through 3 m/s² sustained acceleration and through a violent out-and-back journey.
  • 100 µg of accelerometer bias gives a bounded 637 m position error; 0.01 °/h of gyro drift gives a 0.309 m/s ramp (≈0.6 nmi/h); an initial tilt φ₀ gives a bounded R·φ₀ oscillation.
  • A tuned loop's position error is identical whether the vehicle is parked or manoeuvring hard.
  • With no levelling feedback the same initial tilt grows as g·φ₀·t²/2 instead.

Layout

src/
  lib/          physics, integrators and formatting, framework-free
    pendulum.ts   curved-Earth pendulum, exact EOM + RK4
    ins.ts        single-axis inertial navigator error model
    drive.ts      vehicle acceleration profiles
    series.ts     ring buffer storing min/max per sample, for honest envelopes
    physics.test.ts
  components/   Plot (streaming canvas), Chart (static XY), UI kit, KaTeX wrapper
  views/        one file per module
scripts/
  screenshots.mjs

src/lib has no React dependency, so PendulumWorld and InsWorld can be imported into a plain Node script if you would rather poke at the numbers directly.

Background

Max Schuler published the result in 1923 (Die Störung von Pendel- und Kreiselapparaten durch die Beschleunigung des Fahrzeuges, Physikalische Zeitschrift 24). Any modern text on inertial navigation covers Schuler tuning; Titterton & Weston, Strapdown Inertial Navigation Technology, is a good starting point for the full three-axis error model.

Licence

MIT

About

Why 84.4 minutes makes a pendulum immune to acceleration. An interactive, first-principles simulation of Schuler tuning and the error dynamics that make inertial navigation possible.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages