Before you can read the parent page, you must own every letter it writes. We build them in order, each from the one before, each anchored to a picture. Nothing here assumes you have seen a vector, a cross product, or a matrix.
Look at the blue arrow in the figure below. To write it down we drop it into a grid and read off how far it reaches along each axis. Those readings — ax along the horizontal, ay along the vertical, az out of the page — are the components. We stack them:
a=(ax,ay,az).
A unit vector is an arrow of length exactly 1 — it stores only direction, no size. We mark it with a hat: s^. Read s^ as "the direction s." The parent uses s^ for the spin axis, g^ for the gimbal axis — both are just pure directions.
Question: what does the hat in s^ tell you?
It has length 1 — it carries direction only, no magnitude.
Imagine the flywheel spinning fast. It resists being twisted — that stubbornness is stored angular momentum.
So h is an arrow that points along the spin axis, with length h=Iwωw telling you how much stubbornness is stored. In a CMG, h is held constant and only the arrow's directions^ is tilted.
Question: in a CMG, is it h or s^ that changes over time?
Only s^ (the direction). The length h stays constant.
Read the right side as "how fast the momentum arrow is changing." Since a CMG keeps ∣h∣ fixed, the only way h changes is by swinging its direction. Let us see why that swing is a cross product.
Question: why does keeping ∣h∣ constant force h˙ to be a pure rotation?
If the length can't change, the only way the arrow can move is to turn — the tip rides a circle, giving Ω×h.
A cluster has several CMGs. We need to line up "which way each one can push" side by side. That table is a matrix.
The parent's Jacobian A has one column per CMG: column i is the arrow ∂hi/∂δi, meaning "the direction CMG i's momentum moves when you nudge its gimbal." The curly ∂ is a derivative just like the dot, but with respect to the angle instead of time. See Jacobian & pseudo-inverse (Moore–Penrose) for the full machinery.
Rank tells you how many genuinely different directions those columns cover. Three independent columns → you can torque any 3-D direction. If the arrows collapse into one plane, they cover only 2 directions — rank drops to 2 — and one direction becomes unreachable. That collapse is precisely the rank loss the parent calls a singularity, with the unreachable line u^.
Question: what does it mean physically when A loses rank?
The push-arrows have flattened into a plane (or line), so at least one torque direction becomes impossible.
You command a torque and must solve backward for the gimbal rates δ˙. But A is not square (3 rows, often 4 columns), so it has no ordinary inverse — and worse, there are infinitely many gimbal-rate choices that all give the same torque (extra columns = extra freedom).
The danger: (AAT)−1 requires dividing by how strong the cluster is in each direction. Near a singularity one of those strengths shrinks toward zero, so the division explodes — tiny torque, insane gimbal rates. That is why the parent introduces the singularity-robust inverse, covered next.
Question: why can't we use an ordinary matrix inverse for A?
A isn't square (3 rows, n columns), so only a pseudo-inverse can "undo" it — and it chooses the smallest gimbal-rate solution.
The parent's rescue formula replaces (AAT)−1 with (AAT+λI)−1. Two symbols there are new.
Question: what job does λI do in the robust inverse?
It lifts every directional strength off zero so the inverse stays finite — capping gimbal rates near a singularity at the cost of a little torque error.