Guidance, Navigation and Control · Theory · M6
M6-T4 — INS Error Dynamics and the Schuler Oscillation
An inertial system errs differently from the way integration alone would suggest: the horizontal errors oscillate with a period set only by the radius of the Earth, and the vertical error explodes.
The errors of an INS are not the plain integrals of the sensor errors. The tilt of the platform is coupled back to the position error through the curvature of the Earth, and gravity is coupled to the height. The first coupling makes the horizontal errors oscillate with a period of 84.4 minutes, whatever the sensors or the vehicle. The second makes the vertical error grow exponentially. This lesson derives both from a three-line error model, checks them by simulation, and says what they mean for a 60 s hop on Hopper.
Learning objectives
After this lesson, you should be able to:
- Write the error equations of one horizontal channel and the vertical channel.
- Derive the Schuler frequency and the position response to an accelerometer and a gyro bias.
- Derive the exponential growth of the vertical channel and its time constant.
- State the time scales on which the Schuler effect does and does not matter.
The intuition
UAV M2-T8: Dead reckoning and inertial drift states that inertial position error grows with time. This lesson shows the shape of the growth and its causes, for one channel, with equations small enough to solve in closed form and check against a simulation.
Why the horizontal error does not grow without bound
Suppose the computer thinks it has moved a little farther east than it has. It then also thinks it has travelled over a curved Earth, so the local vertical it computes has turned by the position error divided by the radius of the Earth. The platform is tilted by that angle relative to the true local level. A tilt makes the gravity vector leak into the horizontal accelerometer, and the leakage is a restoring force: it pulls the computed position back. A mass on a spring is the picture, and the spring constant is . The frequency is rad/s, a period of 84.4 minutes, the period of a pendulum whose length equals the radius of the Earth. This is the Schuler oscillation.
What the sensor errors do to it
An accelerometer bias is a constant force on that spring, so the error oscillates about a displaced centre with amplitude : 0.1 mg gives a peak error of 1.27 km (at 42 min) and a return to zero at 84 min. A gyro bias is a constant tilt rate: it makes the error grow steadily at on average (1.1 km per hour for 0.01°/h) with the oscillation riding on it. In both cases, over times much shorter than the period, the coupling has not yet acted, and the errors follow the polynomial growth of the next lesson: for the accelerometer, for the gyro.
The vertical channel has no restoring force
Gravity falls with height, so a computed height that is too high gives a computed gravity that is too small, a smaller restoring pull than needed and a net upward acceleration: positive feedback. The vertical channel is unstable, with a growth rate per second: an e-folding every 9.5 minutes, a doubling every 6.6. A 0.1 mg bias gives 1.8 m after 60 s, 194 m after 10 min and 88 km after an hour. Every inertial system needs a barometer or a radar altimeter to hold the vertical channel.
The Schuler coupling makes horizontal inertial errors oscillate with an 84-minute period set by the Earth's radius alone. The vertical channel has positive feedback and diverges with a time constant of 9.5 minutes. On a 60 s hop neither matters, and the errors are the simple polynomials.
Definitions
- Schuler frequency
- = 1.24×10⁻³ rad/s, period = 84.4 min.
- Position error , velocity error , tilt
- The errors of one horizontal channel. The tilt is the angle between the computed and the true local vertical.
- Accelerometer bias , gyro bias
- The two sensor errors that drive the channel.
- Vertical channel
- The height and vertical velocity errors; coupled to gravity variation with height, not to a tilt.
Derivation: the Schuler frequency, and the responses
Eliminate the tilt from the horizontal channel.
Differentiate the position error and use the velocity equation.
Differentiate again and substitute the tilt rate. The accelerometer bias is constant and drops out.
Write the equation for . It is a harmonic oscillator with frequency , driven by the gyro bias.
The frequency of the free oscillation. Period = 5063 s = 84.4 min, whatever the vehicle.
The responses to the two biases
The solution for an accelerometer bias from zero initial errors. For it becomes : the coupling has not acted.
The solution for a gyro bias: a steady drift at with an oscillation of amplitude . For short times it becomes .
The vertical channel has the characteristic equation , with a positive real root: e-folding time 9.5 min, doubling time 6.6 min.
The coupling between position error, tilt and gravity turns the horizontal channel into an undamped oscillator with the Schuler frequency, and the vertical channel into an unstable first-order growth. Both come from the same g/R, with different signs.
A worked example
One channel simulated with the three-equation error model and compared with the closed forms.
- Frequencies. The Schuler frequency is 1.241×10⁻³ rad/s, a period of 84.4 min. The vertical growth rate is 1.755×10⁻³ s⁻¹, an e-folding of 9.5 min and a doubling of 6.6 min.
- Accelerometer bias of 0.1 mg. Position error 1.76 m at 60 s (simulated and closed form agree, the parabola gives 1.77), 168.6 m at 600 s (the parabola gives 176.6), 1274 m at half a period (the parabola 3140), and back to 0.01 m at one period.
- Gyro bias of 0.01°/h. Position error 0.02 m at 60 s, 16.7 m at 600 s, 1353 m at one hour and 1564 m at 5060 s. The long-time drift is = 1112 m per hour: a nautical mile per hour needs 0.0167°/h.
- Vertical, 0.1 mg bias. Height error 1.8 m at 60 s (the parabola 1.8), 193 m at 600 s (177), 3438 m at 1800 s (1589) and 88 km at 3600 s (6.4 km): the exponent takes over after about ten minutes.
- Reading for Hopper. A hop lasts about a minute, 1/84 of a Schuler period. Over that time the errors are the parabola and the cubic to 0.1%, and the Schuler and vertical-channel instabilities have not started.
import math
import gnckit as g
Re, G0 = 6371000.0, 9.81
ws = math.sqrt(G0 / Re)
print(f'Schuler frequency sqrt(g/R) = {ws:.3e} rad/s, period {2 * math.pi / ws / 60:.1f} min')
wv = math.sqrt(2 * G0 / Re)
print(f'vertical channel: growth rate sqrt(2g/R) = {wv:.3e} per s, e-folding {1 / wv / 60:.1f} min, doubling {math.log(2) / wv / 60:.1f} min')
# one horizontal channel error equations: d(dx)' = dv, dv' = -g psi + ba, psi' = dv / R + eps
def run(ba, eps, T, dt=0.5):
def f(t, s):
dx, dv, psi = s
return [dv, -G0 * psi + ba, dv / Re + eps]
return g.integrate(f, [0.0, 0.0, 0.0], T, dt)
mg = 1e-3 * G0
ba = 0.1 * mg
print('accelerometer bias 0.1 mg: position error over time')
for T in (60.0, 600.0, 2530.0, 5060.0):
ts, xs = run(ba, 0.0, T)
an = ba / ws ** 2 * (1 - math.cos(ws * T))
print(f' t = {T:6.0f} s: simulated {xs[-1][0]:10.2f} m, formula (b/w^2)(1 - cos wt) = {an:10.2f} m, early-time 0.5 b t^2 = {0.5 * ba * T * T:10.2f} m')
eps = 0.01 * math.pi / 180 / 3600
print('gyro bias 0.01 deg/h:')
for T in (60.0, 600.0, 3600.0, 5060.0):
ts, xs = run(0.0, eps, T)
an = eps * Re * (T - math.sin(ws * T) / ws)
print(f' t = {T:6.0f} s: simulated {xs[-1][0]:10.2f} m, formula eps R (t - sin(wt)/w) = {an:10.2f} m, early-time g eps t^3 / 6 = {G0 * eps * T ** 3 / 6:10.2f} m')
print(f' the long-time drift is eps R = {eps * Re * 3600:.1f} m per hour: a nautical mile per hour corresponds to {1852 / 3600 / Re / (math.pi / 180) * 3600:.4f} deg/h')
# vertical channel with a 0.1 mg accelerometer bias
def runv(ba, T, dt=0.5):
def f(t, s):
return [s[1], 2 * G0 / Re * s[0] + ba]
return g.integrate(f, [0.0, 0.0], T, dt)
for T in (60.0, 600.0, 1800.0, 3600.0):
ts, xs = runv(ba, T)
print(f'vertical channel, accelerometer bias 0.1 mg, t = {T:5.0f} s: height error {xs[-1][0]:10.1f} m (0.5 b t^2 = {0.5 * ba * T * T:9.1f} m)')Schuler frequency sqrt(g/R) = 1.241e-03 rad/s, period 84.4 min vertical channel: growth rate sqrt(2g/R) = 1.755e-03 per s, e-folding 9.5 min, doubling 6.6 min accelerometer bias 0.1 mg: position error over time t = 60 s: simulated 1.76 m, formula (b/w^2)(1 - cos wt) = 1.76 m, early-time 0.5 b t^2 = 1.77 m t = 600 s: simulated 168.57 m, formula (b/w^2)(1 - cos wt) = 168.57 m, early-time 0.5 b t^2 = 176.58 m t = 2530 s: simulated 1274.20 m, formula (b/w^2)(1 - cos wt) = 1274.20 m, early-time 0.5 b t^2 = 3139.64 m t = 5060 s: simulated 0.01 m, formula (b/w^2)(1 - cos wt) = 0.01 m, early-time 0.5 b t^2 = 12558.57 m gyro bias 0.01 deg/h: t = 60 s: simulated -0.02 m, formula eps R (t - sin(wt)/w) = 0.02 m, early-time g eps t^3 / 6 = 0.02 m t = 600 s: simulated -16.65 m, formula eps R (t - sin(wt)/w) = 16.65 m, early-time g eps t^3 / 6 = 17.12 m t = 3600 s: simulated -1353.42 m, formula eps R (t - sin(wt)/w) = 1353.42 m, early-time g eps t^3 / 6 = 3698.28 m t = 5060 s: simulated -1563.98 m, formula eps R (t - sin(wt)/w) = 1563.98 m, early-time g eps t^3 / 6 = 10269.38 m the long-time drift is eps R = 1111.9 m per hour: a nautical mile per hour corresponds to 0.0167 deg/h vertical channel, accelerometer bias 0.1 mg, t = 60 s: height error 1.8 m (0.5 b t^2 = 1.8 m) vertical channel, accelerometer bias 0.1 mg, t = 600 s: height error 193.5 m (0.5 b t^2 = 176.6 m) vertical channel, accelerometer bias 0.1 mg, t = 1800 s: height error 3437.8 m (0.5 b t^2 = 1589.2 m) vertical channel, accelerometer bias 0.1 mg, t = 3600 s: height error 87953.5 m (0.5 b t^2 = 6356.9 m)
In robotics
The Schuler tuning and the vertical instability decide how an INS is built and aided.
- Long flights. For aircraft and ships the 84-minute oscillation is the dominant feature of the free-inertial error: the position error of a good gyro is a drift of with a Schuler ripple, and the typical specification is "1 nautical mile per hour" (0.0167°/h).
- Short flights. For a hop, a launch or a drone mission of minutes the Schuler effect does not act, and the polynomial laws (next lesson) are what size the sensors.
- Vertical aiding. A barometric or radar altimeter is always blended with the vertical channel. The simplest form is a third-order feedback loop whose gains are chosen to damp the exponential, as used in classical INS.
- Alignment error. An initial tilt of starts the oscillation with an amplitude of the same form, which is why alignment accuracy matters as much as sensor bias.
- Aided systems. When a position fix is available the filter of module 7 estimates the tilt and bias states and cancels the oscillation. The Schuler dynamics are part of the model the filter uses.
The lab M6-L2: Mechanize and Watch It Drift reproduces these curves from a planar mechanization. The next two lessons align the system and budget the errors.
Common misconceptions
“Inertial position error grows as t² for ever.”
Only for times short against 84 minutes. After that the Schuler coupling bounds the effect of an accelerometer bias and turns the gyro-bias growth into a linear drift.
“The Schuler period depends on the vehicle or the sensor.”
It depends only on gravity and the Earth radius: 84.4 min for any vehicle on the Earth's surface. A tuned system on the Moon would have a period of about 108 min.
“The horizontal oscillation means the errors cancel themselves.”
The position error returns to zero for an accelerometer bias, but the velocity, tilt and gyro-bias terms do not, and the gyro-bias drift grows without bound. The oscillation is a coupling, not a cure.
“The vertical channel is just like the horizontal ones.”
It has the opposite sign of the feedback, since gravity decreases with height. It is unstable with a time constant of 9.5 min and must be aided by an altimeter, which no horizontal channel needs.
“A better accelerometer fixes the drift.”
For flights longer than about ten minutes the gyro bias dominates: it gives a drift of that no accelerometer improvement touches.
Key takeaways
- One horizontal channel: , , .
- It oscillates at : period 84.4 min for any vehicle.
- An accelerometer bias gives (peak 1.27 km for 0.1 mg); a gyro bias gives a drift (1.1 km/h for 0.01°/h).
- For times much shorter than the period the errors reduce to and .
- The vertical channel is unstable: , e-folding 9.5 min; it needs an altimeter.
- On a 60 s hop none of the Schuler and vertical effects have started.
References and further reading
Each source is marked free or paid. Free to read does not mean free to reuse: the course resources page lists every source with its licence.
- P. D. Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation Systems, 2nd edition, Artech House, 2013, chapter 5 on inertial error propagation. Paid.
- D. H. Titterton and J. L. Weston, Strapdown Inertial Navigation Technology, 2nd edition, IET, 2004, the error-model chapters. Paid.
- M. Schuler, "Die Störung von Pendel- und Kreiselapparaten durch die Beschleunigung des Fahrzeuges", Physikalische Zeitschrift 24, 1923, the original paper (in German). Free to read in scanned journal archives.
- MIT 16.30 Feedback Control Systems (OpenCourseWare) , for the oscillator and feedback background used here. Free; licence CC BY-NC-SA 4.0.
Knowledge check
Three questions. Write an answer, then reveal the explanation. Your answers stay in your browser.
Question 1
An INS has a constant accelerometer bias of 0.1 mg. What is the largest horizontal position error and when does it occur?
Explanation
The error is (b/ωs²)(1 − cos ωs t), whose maximum is 2b/ωs² at half a period. With b = 0.1 × 9.81 × 10⁻³ = 9.81×10⁻⁴ m/s² and ωs² = g/R = 1.54×10⁻⁶ s⁻², b/ωs² = 637 m, so the maximum is 1274 m at 42.2 minutes. It then returns to zero at 84.4 minutes. Without the coupling the error would be 3.1 km at the same time.
Question 2
Why does the Schuler period not depend on the sensor grade or the vehicle?
Explanation
The oscillation comes from the loop in which a position error tilts the computed vertical by δx/R and the tilt turns gravity into a restoring acceleration g times the tilt. Only g and R appear in that loop, so ωs = √(g/R) for every system on the Earth's surface, whatever sensors it uses. The sensor grade sets the size of the driving errors and thus the amplitude, but not the frequency.
Question 3
A 60 s hop uses an inertial system with a 0.1 mg bias. Is the vertical channel instability a problem?
Explanation
No. The vertical error is 1.8 m at 60 s against 1.77 m for a plain double integration of the bias, a 1% difference, because the exponential has a time constant of 9.5 minutes and exp(1.755×10⁻³ × 60) is only 1.11. The instability matters for flights of tens of minutes, and Hopper's hop is too short, though a barometer or radar altimeter would still be used at landing for accuracy.
What’s next
Related content
Nothing below is required to finish this lesson.
- BeforeM6-T3: Strapdown Mechanization
Write the attitude, velocity and position updates in the local-level frame, including gravity, Earth rate and transport rate, and say when coning and sculling corrections matter.
- LabM6-L2: Mechanize and Watch It Drift
Write a planar strapdown mechanization, inject a known accelerometer bias and gyro bias, and match the growth of the position error to the error equations.
Other courses on this site treat neighbouring topics from their own angle:
- UAV M2-T7: Inertial Navigation Systems
- UAV M2-T8: Dead reckoning and inertial drift
- UAV M3-T7: IMU noise and bias modelling
- UAV M3-T8: IMU preintegration
- UAV M1-T8: IMU, barometer, magnetometer and GNSS
- Probability M2-T4: Distributions of Real Sensor Noise
- Probability M5-T4: Identifying Noise Parameters from Data
- Linear Algebra M10-T6: Small-Angle Approximations
This course leaves the following to the pages that already teach them:
Get notified when the next lesson and new labs are released.
One email per new lesson or lab.