Visual walkthrough — Mechanization equations — integrating IMU to get position, velocity, attitude
Before any equation, let us agree on the two words the whole subject rests on.
Step 1 — The proof mass: what "specific force" looks like
WHAT. Inside every accelerometer is a tiny weight (a proof mass) held by springs. We read the spring stretch.
WHY start here. Everything downstream is built on one fact — the accelerometer reports the spring squeeze, never gravity. If you get this wrong, every later integral is poisoned. So we look at the mass in three situations and read its spring.
PICTURE. Look at the three panels.

- Left (on a table): the table pushes up on the mass. The spring is compressed up. The reading points up with size . Even though nothing is moving, the accelerometer reports a force.
- Middle (free fall): nothing touches the mass except gravity, which pulls mass and case together. Spring relaxes → reading is zero, even though the box is accelerating downward fast.
- Right (thrust): an engine pushes the case forward; the mass lags, squeezing the spring backward. Reading points forward.
Step 2 — Three frames of reference (the stage the drama plays on)
WHAT. We name three coordinate systems ("frames"). A frame is just a set of three arrows fixed to something, that we measure vectors against.
WHY. The gyro talks in body axes, gravity lives in nav axes, and Earth spins in the inertial frame. We cannot add numbers measured in different frames — first we must translate. So we must name them.
PICTURE. The three sets of axes:

Step 3 — Turning the gyro rate into a spinning matrix
WHAT. The gyro gives an angular rate. We must convert "how fast am I turning" into "how is my orientation matrix changing".
WHY a matrix and not just three angles? Rotations do not add like ordinary numbers — turning right-then-up is different from up-then-right. Orientation lives on a curved space, so we track the whole matrix and ask how each of its columns moves.
PICTURE. A single body vector carried around by rotation:

Watch the red arrow . Spinning at angular rate (green), the tip of moves along a circle. Its velocity is perpendicular to both and — exactly what a cross product produces:
- — how fast the arrow's tip moves (the blue tangent).
- — cross product: gives a vector perpendicular to the plane of and , with length . That is why we pick the cross product: it is the one operation whose output is the sideways swing of a spinning arrow.
Each column of is a fixed body axis seen from nav, so each column obeys this. Stacking all three columns:
See Direction Cosine Matrix and Quaternions for why the matrix stays a valid rotation, and Strapdown vs Gimbaled INS for why we integrate in software instead of on a spinning platform.
Step 4 — Why the raw gyro rate is not what we want
WHAT. The gyro measures rotation versus the stars (), but Step 3 needs rotation versus the nav frame (). We must subtract off the frame's own motion.
WHY. The NED frame is itself turning for two reasons: the Earth spins under you, and "down" tilts as you travel over the round planet. If we ignore these, a perfectly still IMU at the equator would appear to slowly roll.
PICTURE. The nav frame quietly rotating:

- — raw gyro (body vs inertial).
- — Earth's spin, , seen in nav axes.
- — transport rate: the tilt of "down" as you fly. See Radii of Curvature of the Earth Ellipsoid.
- — we rotate those nav-frame rates into body axes so they can be subtracted from the body-frame gyro. Why ? Because you can only subtract vectors written in the same frame.
Step 5 — Building velocity: rotate the felt force, then heal it
WHAT. Now we have . We rotate the felt force into nav axes and fix two things: gravity (which the accelerometer missed) and the fact that our frame is rotating.
WHY. Newton's law is clean only in the inertial frame. Rewriting it in the rotating nav frame adds correction terms — nothing new is happening physically, we are just describing it from a spinning viewpoint.
PICTURE. The force assembly line:

Step 6 — Static sanity check (the degenerate case)
WHAT. Put the box flat and still. Nothing should move.
WHY. A correct equation must give zero motion for zero motion. This is the acid test.
PICTURE. The two Down-axis arrows cancelling:

In NED, "Down" is . The table push registers as (support is up, so specific force is up = negative Down). Gyros read , velocity is so Coriolis vanishes:
- Blue arrow: rotated felt force (points up).
- Green arrow: (points down).
- They cancel exactly → the vehicle stays put. Attitude also holds because .
Step 7 — Position on a curved Earth
WHAT. Turn velocity into changing latitude, longitude, height.
WHY divide by a radius? An arc length equals radius times angle, so angle rate = arc-length rate ÷ radius. Moving north 1 km changes your latitude by more if the Earth is small, less if it is huge — hence the division.
PICTURE. North speed becoming latitude change on a circle:

The one-picture summary

Two raw feelings enter on the left; three integrations flow rightward; gravity and Earth-rotation corrections are injected exactly where they are needed.
Recall Feynman retelling — say it in plain words
An IMU only knows two things: how fast it is turning and how hard it is being pushed — and it is blind to gravity because gravity tugs it as a whole. So first we turn the turning-rate into an orientation, spinning our body-to-nav matrix by the cross product that any rotating arrow obeys. With orientation in hand we rotate the felt push into North-East-Down axes, then we glue gravity back on (the piece it could not feel) and gently correct for the fact that our ground itself is turning. That fixed-up acceleration is the real one, so we add it up to get velocity, and add velocity up — dividing by the Earth's radius so speeds become angle-changes — to get latitude, longitude and height. Test it on a still box: the table's upward push and gravity's downward pull cancel, nothing moves, and we sleep well knowing the recipe is honest.
Recall Which layer must be computed first, and why?
Attitude () — because the felt force is in body axes and cannot have gravity added until it is rotated into nav axes.