Ground Alignment — and how to derive a drift-test threshold instead of inheriting one
Once a vehicle has aligned on the pad, someone has to decide whether the IMU is healthy enough to fly. The check is brutally simple: take the aligned state, propagate it without any aiding, and watch how fast the solution walks away from a truth you already know. Then compare the growth rate against a threshold — and that threshold is the whole problem. Set it too high and a degraded IMU flies. Set it too low and you scrub healthy vehicles. This page derives the threshold from sensor physics, shows why an inherited one is usually wrong in a specific and predictable direction, and works through what actually sets the floor.
Symbols used on this page are defined in the Nomenclature → inertial navigation.
- Threshold too high → masked fault. A degraded IMU passes and flies. Because free-inertial position error from gyro bias grows as $t^3$, a fault that looks marginal over a one-hour static test becomes a very large miss distance over a flight.
- Threshold too low → false alarm. A healthy vehicle is scrubbed. The cost is not only schedule: repeated false alarms train crews to rationalise and re-run, which destroys the value of the test exactly when it eventually does catch something real.
Companion page: Fine alignment covers the estimator itself — states, observability and consider states. The error loop used throughout is derived in Schuler oscillation; the bench-test counterpart is IMU acceptance testing.
- Ground alignment (also static or self-alignment) is the phase: everything that happens while the vehicle is stationary. It contains two estimating stages — coarse align (levelling from gravity, closed form) then fine align (heading from Earth rate, a Kalman filter).
- The ground-align test — the subject of this page — is a check, not a stage. And yes: it is a free-inertial run. "Free inertial" means propagating the strapdown solution with no aiding measurements at all, which is exactly what this test does to the horizontal channels. The same free-inertial propagator is used in flight when GNSS is unavailable; here it is pointed at a known truth on purpose so that its drift can be measured.
- So the flow is: coarse → fine → (free-inertial test, in parallel) → flight. The test consumes the fine-align output and produces only a verdict.
1 · The test, precisely
The sequence is worth stating carefully because each step has a reason, and one of them is the source of most confusion about the vertical metric.
| Step | What happens | Why |
|---|---|---|
| 1. Initialise | A free-inertial propagator is seeded with the converged fine-alignment position, velocity and attitude, plus the current estimated sensor corrections. | The test measures degradation from a known-good aided state. Starting from anything else measures the starting error instead of the drift rate. |
| 2. Cut all aiding | No zero-velocity update, no position update, no GNSS. Pure strapdown integration of compensated $\Delta\boldsymbol\theta$ and $\Delta\mathbf v$. | Any aiding would suppress exactly the error growth being measured. |
| 3. Constrain the vertical only | Vertical velocity and position are reset to truth on a short period (tens of seconds). | The vertical channel is unstable (§5) and would diverge exponentially, swamping the horizontal signal. This reset is what makes the test last an hour instead of minutes. |
| 4. Let horizontal drift | North and East are left entirely free for the full test duration. | This is the measurement. |
| 5. Renormalise | The attitude quaternion is renormalised on a slow period. | Numerical hygiene over a long run; too often is wasted computation, never is drift. |
| 6. Score | Two cumulative statistics over the window: RMS velocity error per axis, and a least-squares radial position error rate. | One captures total error magnitude, the other captures the secular ramp. They are sensitive to different error sources — see §4. |
Because the vehicle is stationary and surveyed, truth is known exactly: position is the survey point, velocity is zero. So the error is simply $\mathbf e(t) = \mathbf x_{\text{nav}}(t) - \mathbf x_{\text{truth}}$, with no reference-system uncertainty to argue about. That is what makes this test worth doing at all.
1.1 What is initialised, and what each stage estimates
The three stages hand state to each other in a fixed order, and it is easy to lose track of which stage owns what. Consolidated:
| Coarse alignment | Fine alignment | Free-inertial drift test | |
|---|---|---|---|
| Initialised from | Surveyed position; gravity and Earth-rate vectors; optionally a surveyed mounting attitude | The coarse solution (attitude, position) and a priori sensor error statistics | The converged fine solution — position, velocity, attitude and sensor corrections |
| Method | Closed form — averaged specific force and angular rate | Error-state Kalman filter at low rate over a fast mechanization | Open-loop propagation. No filter, no estimation. |
| Determines | Roll and pitch (levelling). Heading only if a surveyed attitude is used. | Heading; refined tilt; gyro bias; accel bias on gravity-exposed axes | Nothing. It measures the quality of what fine alignment produced. |
| Measurements applied | None (it is an average, not an update) | Zero velocity; fixed position; throttled static azimuth pseudo-measurement | Vertical velocity and position reset only. Horizontal: none. |
| Ends when | A short average completes | Heading covariance is below requirement and has flattened | The fixed test window elapses |
The state vector of the fine-alignment filter, and which of its states are actually observable while stationary, is worked through in Fine alignment §2.1.
2 · The error loop that shapes every answer
All of the closed-form results below come from the same pair of coupled equations. A tilt error $\delta\theta$ mis-resolves gravity into the horizontal axes, producing a false acceleration $g\,\delta\theta$; the mechanization, believing it is moving, rotates its own local-level frame at the transport rate $\delta v/R$, which feeds back into tilt. Adding sensor errors:
$$ \delta\dot v = g\,\delta\theta + \alpha + \nu(t), \qquad \delta\dot\theta = -\frac{\delta v}{R} + \beta + n(t) $$with $\alpha$ accelerometer bias, $\beta$ gyro bias, and $\nu,n$ the white noises whose integrals are velocity random walk (VRW) and angle random walk (ARW). With the sensor terms set to zero this reduces to a harmonic oscillator:
$$ \delta\ddot\theta + \frac{g}{R}\,\delta\theta = 0, \qquad \omega_s = \sqrt{\frac{g}{R}} = 1.24\times10^{-3}\ \mathrm{rad/s} \quad\Longrightarrow\quad T_s = \frac{2\pi}{\omega_s} \approx 84.4\ \mathrm{min} $$Two facts about this that make the whole analysis tractable. First, $\omega_s$ depends only on $g$ and $R$, so it is identical for every stationary IMU on Earth — sensor grade changes the amplitude of the swing, never its frequency. Second, the tilt-to-velocity conversion factor is a fixed physical constant:
$$ R\,\omega_s = \sqrt{gR} \approx 7906\ \mathrm{m/s\ per\ radian\ of\ tilt} \qquad(\approx 0.038\ \mathrm{m/s\ per\ arcsecond}) $$That number is the exchange rate between an alignment error and the velocity error it produces, and it is worth memorising: it converts an arcsecond-level alignment specification directly into a velocity-error budget.
3 · Each error source, propagated
Solving the loop for each source in turn gives the closed forms below. The structural distinction is the one that matters: which terms have a non-zero time average, because only those produce a position ramp.
3.1 Initial tilt error
With $\delta v_0 = 0$ and an initial tilt $\delta\theta_0$, the homogeneous solution is a pure oscillation:
$$ \delta\theta(t) = \delta\theta_0\cos\omega_s t, \qquad \delta v(t) = R\omega_s\,\delta\theta_0\sin\omega_s t $$and its RMS over a window $T$ follows directly:
$$ \mathrm{RMS}[\delta v] = \sqrt{gR}\;\delta\theta_0 \sqrt{\tfrac12 - \frac{\sin 2\omega_s T}{4\omega_s T}} $$3.2 Accelerometer bias versus gyro bias — an asymmetry
Differentiating the velocity equation and substituting shows why these two behave completely differently:
$$ \delta\ddot v + \omega_s^2\,\delta v = g\beta $$The accelerometer bias $\alpha$ differentiated away. It survives only as an initial condition, $\delta\dot v|_0 = \alpha$ — a kick at $t=0$ that then contributes nothing to the dynamics. The gyro bias $\beta$ remains as a permanent forcing term, which gives the response a non-zero mean of $R\beta$. Integrating a non-zero mean is what produces a position ramp:
Gyro bias $\beta$ — ramps
$$ \delta v(t) = R\beta\,(1-\cos\omega_s t) $$ $$ \delta p(t) = R\beta\!\left(t - \frac{\sin\omega_s t}{\omega_s}\right) $$Velocity oscillates about $R\beta$; position has a secular ramp of slope $R\beta$. This is the only term that produces a radial-error rate.
Accel bias $\alpha$ — bounded
$$ \delta v(t) = \frac{\alpha}{\omega_s}\sin\omega_s t $$ $$ \delta p(t) = \frac{\alpha}{\omega_s^2}(1-\cos\omega_s t) $$Both oscillate about zero. No ramp, no radial-rate contribution — and on a fine-aligned static test, even this is cancelled (§3.4).
3.3 Random walk terms
With the biases zero and the white noises driving the loop, there is no deterministic response shape, so these require variance propagation rather than an RMS factor applied to a known waveform. With PSDs $Q_n$ (gyro) and $Q_\nu$ (accel):
$$ \sigma_{\delta v}^{\text{ARW}} = R\omega_s\sqrt{Q_n\!\left(\frac{t}{2} - \frac{\sin 2\omega_s t}{4\omega_s}\right)}, \qquad \sigma_{\delta v}^{\text{VRW}} = \sqrt{Q_\nu\!\left(\frac{t}{2} + \frac{\sin 2\omega_s t}{4\omega_s}\right)} $$Both grow as $\sqrt t$ and the Schuler loop restrains both identically — the sign of the $\sin$ term is the only difference. In practice the ARW term dominates by orders of magnitude, because the $R\omega_s$ factor converts gyro angle noise into velocity error with a gain of ~7900 m/s per radian while the accelerometer noise enters with unit gain.
3.4 What alignment removes — and why gyros end up dominating
The surviving accelerometer effect is second-order: the residual tilt, whatever it is, multiplies the vertical component of Earth rate to produce a small horizontal rate error. Similarly, gyro non-orthogonality produces bias-like terms on both horizontal axes, but the East one is absorbed as an azimuth error by the same mechanism that absorbs gyro East bias, leaving only the North term to matter.
The per-axis routing is worth tabulating, because it is asymmetric and the asymmetry is real:
| Error source | Path | Shows up in |
|---|---|---|
| Gyro East bias | Absorbed as an azimuth error by gyrocompassing itself | Neither — cancelled |
| Gyro Down (vertical) bias | Causes heading error → leaks Earth rate into the East axis → acts as an East-axis bias | North velocity |
| Gyro North bias | Direct tilt about North → gravity mis-resolution into East | East velocity |
| Gyro ARW | Random walk into tilt on both horizontal axes | Both, equally |
| Accel bias (residual tilt) | Residual tilt × vertical Earth rate → North-axis rate error | East velocity (small) |
| Gyro non-orthogonality | Bias on both horizontal axes; East part absorbed as azimuth | East velocity (small) |
| Accel VRW | Direct velocity random walk | Both (negligible) |
Root-sum-square the per-axis contributions and you have an analytical threshold derived from the sensor specification. Use the sim below to see which term dominates — that identification, not the total, is the engineering content, because it tells you what the test is actually sensitive to:
4 · The two metrics measure different things
The test reports RMS velocity error and a radial position error rate. These are not redundant, and the difference follows from §3.2:
- RMS velocity squares and averages the whole error signal, so every term contributes — oscillatory or not.
- Radial position error rate, fitted as a least-squares slope through the origin, responds only to terms with a non-zero time average. From §3.2 that is gyro bias alone.
For the gyro-bias-only case both are computable in closed form, and their ratio is a pure number. Over a full Schuler cycle:
$$ \mathrm{RMS}[\delta v] = \sqrt{\tfrac32}\,R\beta, \qquad \text{radial rate} \approx R\beta \qquad\Longrightarrow\qquad \frac{\mathrm{RMS}[\delta v]}{\text{radial rate}} = \sqrt{\tfrac32} \approx 1.225 $$with the rate obtained from the least-squares slope of the position error:
$$ \text{radial rate} \;=\; \frac{\displaystyle\int_0^T t\,\delta p(t)\,\mathrm dt}{\displaystyle\int_0^T t^2\,\mathrm dt}, \qquad \delta p(t) = R\beta\!\left(t - \frac{\sin\omega_s t}{\omega_s}\right) $$5 · Why the vertical threshold cannot be scaled from the horizontal
The vertical channel is not a third copy of the horizontal ones. Its feedback has the opposite sign: an altitude error makes the gravity model return weaker gravity, read as upward acceleration, which increases the altitude error. The loop is unstable:
$$ \delta\ddot h = \frac{2g}{R}\,\delta h, \qquad \tau = \sqrt{\frac{R}{2g}} \approx 570\ \mathrm{s} $$Which is why the test resets the vertical channel on a short period. The consequence is decisive: with a reset interval of tens of seconds, the vertical error never experiences the 84-minute Schuler response at all. It integrates vertical accelerometer bias over one reset interval and is then zeroed. For a bias $\alpha$ over reset interval $T_r$ the error is simply
$$ \delta v_D \approx \alpha\,T_r $$a number that, for a navigation-grade accelerometer over a 20-second window, is two to three orders of magnitude smaller than the horizontal metrics. So a vertical threshold set as a fixed fraction of the horizontal one — 80%, say — is not a sensor-derived limit at all. It is a round number, and it will pass essentially any accelerometer. Working it backwards to ask "what bias would this threshold actually catch?" is the quickest way to expose that.
6 · Analytical versus prescribed thresholds
A sensor is often delivered with acceptance thresholds stated as given criteria, with no derivation attached. Comparing those against an analytical budget is worth doing before adopting them, and the mismatches follow a pattern.
6.1 The test-geometry mismatch
The dominant failure mode is a threshold derived for a rotational test being applied to a static one. These tests do not exercise the same error terms:
A rotational test
Rotates the unit through many orientations, exercising every sensor axis in both directions. Scale factor, misalignment and accelerometer bias are all excited and visible, because rotation modulates a sensor-fixed error against the navigation frame.
A static test
One orientation, for the whole window. Scale factors see no input to scale (§3.4 and Fine alignment §2.1). Accelerometer bias is deliberately hidden — the alignment absorbed it into tilt.
So a rotational-test threshold is loose when applied to a static test: it was sized to accommodate error terms the static test cannot see. A healthy unit passes with large margin, which sounds comfortable but means the test has little power to detect a genuinely degraded unit. That is the real cost of an inherited threshold — not false failures, but missed detections.
6.2 Recognising a threshold that was not derived
Some quick checks that cost nothing and are frequently informative:
- Is it a round multiple of a catalogue figure? A threshold that equals exactly 3× a published navigation-accuracy number is a $3\sigma$ margin applied to a spec written for a completely different scenario, not an error-budget result.
- Do two thresholds sit at $\sqrt{3/2}$? Then one was derived from the other (§4), and both rest on a single assumption.
- Is one axis a clean fraction of another? A vertical limit at exactly 80% of the horizontal one is a choice, not a calculation — and §5 shows the physics does not support any such ratio.
- Invert it. Ask what sensor error the threshold corresponds to. If the answer is 100× the unit's own specification, the threshold is not testing the unit.
7 · Is it pad motion, or is it the IMU?
A launch vehicle on the pad is not truly static. It is a tall flexible structure that sways and twists under wind, and propellant loading changes its modal behaviour. So when a drift test fails, the first question is whether the vehicle moved or the sensors drifted. This matters because the two have completely different responses, and the answer is usually clear-cut.
7.1 Decomposing the error
On a truly static pad the navigation error is just $\mathbf e(t) = \mathbf x_{\text{nav}}(t) - \mathbf x_{\text{ref}}$. With real motion, split it into two independent pieces:
$$ \mathbf e(t) = \underbrace{\big[\mathbf x_{\text{nav}}(t) - \mathbf x(t)\big]}_{\text{sensor-driven error}} \;+\; \underbrace{\big[\mathbf x(t) - \mathbf x_{\text{ref}}\big]}_{\text{actual motion}} $$The first term is what the sensor error budget of §3 predicts. The second is genuine displacement, available from a structural model or measured pad instrumentation. The two are independent, so variances add — which means the total budget is the RSS of the sensor budget and the motion contribution, and the motion contribution enters as a fixed offset rather than as anything that grows.
7.2 The timescales are what separate them
This is the crux, and it is decisive:
| Structural sway | IMU error | |
|---|---|---|
| Period | Seconds — a few tenths of a hertz | 84.4 min (Schuler), or a secular ramp |
| Cycles in a one-hour window | Hundreds | Less than one |
| Mean over the window | ≈ 0 — it oscillates about a fixed point | Non-zero for gyro bias — it ramps |
| Effect on RMS velocity | A small constant floor | Grows with sensor error |
| Effect on radial rate | A tiny floor (§7.3), does not grow with $T$ | Proportional to gyro bias, grows with $T$ |
Hundreds of cycles of a zero-mean oscillation average to almost nothing over the window, whereas a gyro bias produces less than one full Schuler cycle and a monotonic position ramp. In practice the residual mean tilt attributable to sway is a small fraction of an arcsecond, and at the exchange rate of §2 that is a velocity contribution of a few hundredths of a metre per second — negligible against a budget dominated by gyro terms.
7.3 The subtle trap: a zero-mean wobble does not give a zero radial error
Radial position error is a magnitude, $\mathrm{RPE} = \sqrt{\delta p_N^2 + \delta p_E^2}$, and a magnitude is non-negative. So even though $\delta p_N$ and $\delta p_E$ are each zero-mean, the RPE is not. For two independent zero-mean Gaussians of equal standard deviation the magnitude is Rayleigh distributed:
$$ \mathbb E[\mathrm{RPE}] = \sigma\sqrt{\frac{\pi}{2}} \approx 1.2533\,\sigma $$Expressed via the combined horizontal sigma $\sigma_h = \sqrt{\sigma_N^2+\sigma_E^2}$, the circular-equivalent per-axis value is $s = \sigma_h/\sqrt2$, giving
$$ \mathbb E[\mathrm{RPE}] = \frac{\sigma_h}{\sqrt2}\sqrt{\frac{\pi}{2}} = \sigma_h\frac{\sqrt\pi}{2} \approx 0.8862\,\sigma_h $$Since pad motion makes RPE fluctuate about a roughly constant mean, feeding a constant $c$ through the least-squares rate definition of §4 gives a closed-form floor:
$$ \text{rate} = \frac{\int_0^T t\,c\,\mathrm dt}{\int_0^T t^2\,\mathrm dt} = \frac{3c}{2T} \qquad\Longrightarrow\qquad \text{sway floor} = \frac{3\,\mathbb E[\mathrm{RPE}]}{2T} \approx \frac{1.329\,\sigma_h}{T} $$Note the $1/T$: the floor shrinks as the window lengthens, while a gyro-bias ramp is independent of $T$. A longer test therefore improves the signal-to-floor ratio, which is another reason the window is an hour rather than a few minutes. The sim below contrasts the two directly — set the gyro bias to zero to see the pure sway floor, then raise it and watch the ramp take over:
The same reasoning applies to any radial or magnitude-valued metric, including horizontal position error in GNSS statistics and miss-distance in targeting. Whenever you take the norm of a zero-mean vector, expect a positive bias of order $\sigma$, and check whether the threshold you are comparing against was written with that in mind.
8 · Setting the threshold as a detection problem
Everything so far has been error propagation. The decision itself is a hypothesis test, and framing it that way makes the trade-off from the top of this page quantitative instead of rhetorical.
Two hypotheses, and the metric $m$ is the measured drift rate:
$$ H_0:\ \text{IMU healthy},\quad m \sim \mathcal N\big(\mu_0,\ \sigma_0^2\big) \qquad\qquad H_1:\ \text{IMU degraded},\quad m \sim \mathcal N\big(\mu_1,\ \sigma_1^2\big) $$The two error probabilities are then areas under those distributions on either side of the threshold $\gamma$ — the standard structure of any FDI decision function:
$$ P_{FA} = \Pr\{m>\gamma \mid H_0\} = Q\!\left(\frac{\gamma-\mu_0}{\sigma_0}\right) \qquad P_{MD} = \Pr\{m<\gamma \mid H_1\} = Q\!\left(\frac{\mu_1-\gamma}{\sigma_1}\right) $$The engineering content is in what each of those four parameters actually is for this test:
| Parameter | Physically | Where it comes from |
|---|---|---|
| $\mu_0$ | Drift rate of a healthy unit — not zero | The analytical budget of §3 at spec values, plus the pad-motion floor of §7. This is the number an inherited threshold usually gets wrong. |
| $\sigma_0$ | Run-to-run scatter of a healthy unit | Turn-on bias repeatability, ARW realisation, wind conditions on the day. Needs a population of good units to estimate — a single run cannot give it. |
| $\mu_1$ | Drift rate of the fault you care about | Requires defining the fault. "Gyro bias degraded by 10×" is a testable hypothesis; "IMU unhealthy" is not. |
| $\sigma_1$ | Scatter under the fault | Usually assumed similar to $\sigma_0$ unless the fault mechanism is itself noisy. |
- Lengthen the window. A gyro-bias ramp is independent of $T$, while the pad-motion floor falls as $1/T$ and noise-driven scatter falls as $1/\sqrt T$. A longer test increases separation directly — this is the strongest lever available and the reason the window is an hour rather than minutes.
- Use the metric that responds to the fault. The RPE rate is nearly a pure gyro-bias meter (§4), so for a gyro-bias fault it has far better separation than an RMS velocity metric that every error source contributes to.
- Reduce $\sigma_0$. Test in benign wind, or measure and subtract the pad-motion contribution rather than leaving it in the noise budget.
Two practical consequences that follow immediately from the structure above:
- A threshold with no stated $P_{FA}$ is not a threshold, it is a number. Without knowing the healthy distribution you cannot say what fraction of good vehicles it will scrub, which means you cannot defend it when it fires.
- Asymmetric costs justify an asymmetric threshold — say so explicitly. A masked gyro-bias fault risks the mission; a false alarm costs a day. That argues for accepting a higher $P_{FA}$ to drive $P_{MD}$ down, but only if the number is chosen deliberately and written down, rather than arrived at by inheritance.
The sim below makes the trade concrete. Slide the threshold and watch the two error probabilities move in opposite directions — you cannot reduce both. Then lengthen the window: the healthy distribution tightens while the fault signature stays put, so separation grows and both rates fall at once.
The same machinery — thresholds from false-alarm probability, and the geometry of detectability — is developed generally on FDI decision functions, including CUSUM for slow drifts, which is the natural tool if the concern is a bias that degrades gradually across many flights rather than one that is bad on a given day.
9 · A review checklist
If you are asked to sign off a drift-test threshold, these are the questions worth asking:
- What test geometry was the threshold derived for? If rotational and you are running static, it is loose and has reduced detection power (§6.1).
- Which error term dominates the analytical budget? If you cannot name it, the budget has not been built (§3.4).
- Does the vertical threshold correspond to any real accelerometer error? Invert it over the reset interval and check (§5).
- Are the thresholds mutually independent? Check the $\sqrt{3/2}$ ratio (§4).
- Has platform motion been bounded rather than assumed? Quantify the floor and show it is small; do not simply assert it (§7).
- Does the test detect the failure you actually care about? A threshold that a degraded unit still passes is documentation, not a test.
- What is the margin between analytical and operational limits, and who owns it? Both numbers should be written down, with the ratio explicit (§6.2).
10 · Further reading
All open literature; nothing on this page derives from any organisation's internal documentation.
- P. D. Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation Systems, 2nd ed., Artech House, 2013 — Ch. 5 for the error dynamics used throughout, Ch. 15 for alignment.
- D. H. Titterton and J. L. Weston, Strapdown Inertial Navigation Technology, 2nd ed., IET, 2004 — §10 on alignment, §12 on testing, including static and multi-position test design.
- P. G. Savage, Strapdown Analytics, 2nd ed., Strapdown Associates, 2007 — closed-form error propagation including the Schuler and vertical-channel solutions.
- IEEE Std 1293-2018 (accelerometer test) and IEEE Std 647-2006 (gyro test) — the standard specifications for what static and rotational tests measure, and how to report the results.
- IEEE Std 952-2020 — inertial sensor error model terminology used here.
- NASA/TP-2018-219822, Navigation Filter Best Practices — covariance consistency and the discipline of validating a filter against an independent check. Summarised here.
- N. A. Carlson, "Federated Filter for Fault-Tolerant Integrated Navigation Systems" — on independent monitors as a health-detection mechanism.
- On the Rayleigh result: any standard text on order statistics; e.g. A. Papoulis, Probability, Random Variables and Stochastic Processes, §6 on functions of random variables.