3.5.12 · D4Guidance, Navigation & Control (GNC)

Exercises — Attitude estimation — triad method (two vector measurements)

2,825 words13 min readBack to topic

Before we start, one reminder of every symbol we use, in plain words:

How to read the figures below. The three step-figures walk the geometry visually: first the cross-product construction of one triad (s01), then how a rotation carries the reference triad onto the body triad (s02), and finally the danger zone where the two vectors go parallel (s03). Refer back to them as you solve — the text points to specific arrows.

Figure — Attitude estimation — triad method (two vector measurements)

Look at s01: the magenta arrow becomes axis 1 unchanged; the violet arrow is (perpendicular to the plane of the two orange/magenta inputs); the navy arrow closes the right-handed set. Every exercise that "builds a triad" is doing exactly this picture with different numbers.


Level 1 — Recognition

L1.1

State, in one sentence each, why one vector measurement is not enough and why two is enough.

Recall Solution

One is not enough: a single known direction pins the two "aiming" angles but leaves the spacecraft free to spin about that direction — you cannot see that spin, so 1 of 3 rotational freedoms stays unknown. Two is enough: a second non-parallel direction is dragged around by that spin, so its position exposes the last angle — two non-parallel arrows lock all three rotational freedoms.

L1.2

Given and , compute the first two triad axes and .

Recall Solution

— we always keep the trusted (slot-1) vector as axis 1. Cross product: . Its length is , so normalizing changes nothing: This is literally the s01 picture with , .

L1.3

True or false: the box stores the triad axes as its rows.

Recall Solution

False. They are stored as columns: . This matters because must act column-by-column (); rows would break that reading.


Level 2 — Application

Refer to s02 while you work these: it shows the finished reference triad and the same triad after the rotation has carried it into the body frame — that is exactly what does, column by column.

L2.1

Reference: , . Body (true attitude = about , right-hand rule): , . Build both triads and find .

Recall Solution

Reference triad (as in the parent note): ; so ; . Body triad: ; so ; . Multiply : Sign check with the convention above: sends to — exactly ✅, and ✅. Counter-clockwise (looking down ), as promised.

L2.2

Reference: , . Body: , . Find and identify the rotation, stating its sign explicitly.

Recall Solution

Reference: ; so ; . Body: ; so ; . : Which sign? Under our right-hand rule, the positive -rotation is because sends toward -and-back with the sign pattern . Our has the opposite off-diagonal signs, so it is a clockwise turn about (equivalently about ). Verify directly: ✅, ✅. Lesson: the numbers alone don't tell you the turn direction — you must fix the convention first, then read the sign off the off-diagonal pattern.

L2.3

For , (a separation), compute and confirm it equals .

Recall Solution

. Length ✅. This is the geometric meaning of the cross-product length: it measures the separation angle.


Level 3 — Analysis

L3.1

Show that swapping the roles ( and ) generally gives a different when the data are noisy, but the same when they are noise-free. Explain why.

Recall Solution

Noise-free: if exactly for both , then both triads are exact rotated copies whichever vector we call "1"; TRIAD recovers either way, so the answer is identical. Noisy: TRIAD honors slot 1 exactly and throws away slot 2's angle. Put the noisy vector in slot 1 and its full error enters ; put it in slot 2 and only its plane survives. Different information is discarded, so the two estimates differ. Conclusion: the method is asymmetric — always make the accurate sensor slot 1.

L3.2

The cross product returns length . As the two reference vectors approach parallel (), what happens to , and why is TRIAD unreliable there?

Recall Solution

. We divide by this to normalize, so any tiny measurement wobble in the numerator gets amplified by , which blows up. Geometrically (see s03): two near-parallel arrows define their common plane very loosely, so the perpendicular jitters wildly. Best conditioning is near where is largest and most stable.

Look at s03: as the orange arrow swings toward the magenta one, the violet cross-product arrow shrinks toward zero length — that vanishing arrow is the quantity you must divide by, which is why the danger zone amplifies noise so badly.

L3.3

Prove that satisfies and (i.e. it is a genuine rotation, a member of Rotation Matrices and SO(3)).

Recall Solution

Both have orthonormal columns, so and . Then

=M_bM_r^{\mathsf T}M_rM_b^{\mathsf T}=M_b\,I\,M_b^{\mathsf T}=I.$$ For the determinant: each triad was closed with a right-handed cross product ($\hat{\mathbf t}_3=\hat{\mathbf t}_1\times\hat{\mathbf t}_2$), forcing $\det M_r=\det M_b=+1$. Since determinants multiply, $\det A=\det M_b\cdot\det M_r^{\mathsf T}=(+1)(+1)=+1$. ✅ A proper rotation.

Level 4 — Synthesis

L4.1

A sun sensor (Sun Sensors and Magnetometers) gives the accurate direction; a magnetometer gives a noisier one. Reference: sun , field . Measured (noise-free for this drill): , . Which vector goes in slot 1, and what is ?

Recall Solution

Put the accurate sun vector in slot 1 (most-trusted → slot 1): , ; , . Reference: ; so ; . Body: ; so ; . : Check: ✅, ✅. This is a valid rotation (), cyclically permuting the axes.

L4.2

TRIAD only uses two vectors. Wahba's Problem (solved by the QUEST algorithm or the Davenport q-method) optimally blends many weighted vectors. In one paragraph, state what TRIAD sacrifices and what it gains versus these methods.

Recall Solution

Sacrifices: TRIAD is suboptimal — it trusts one vector fully and discards slot 2's angle, so it does not minimize a weighted least-squares error over both measurements the way Wahba's cost function does, and it cannot fuse three or more sensors or apply per-sensor confidence weights. Gains: it is closed-form and cheap — just cross products, one normalization each, and a transpose-multiply, with no eigenvalue solve (which QUEST algorithm and the Davenport q-method both require). That makes TRIAD ideal for coarse acquisition, fast on-board sanity checks, or initializing an iterative estimator such as the Kalman Filter — Attitude. In short: TRIAD trades the statistically-optimal, multi-sensor answer of Wahba/QUEST/Davenport for speed and simplicity — perfect when you have exactly two vectors and one is clearly more trusted.

L4.3

From the of L4.1, is the corresponding quaternion (Quaternion Attitude Kinematics) unique? State the scalar part magnitude using with .

Recall Solution

. The rotation angle satisfies , so , giving . Then . The quaternion is not unique: and describe the same rotation (double cover), so and are both valid.


Level 5 — Mastery

Keep s03 in view for L5.1 — it shows the two reference arrows sliding toward parallel and the cross-product arrow collapsing to zero.

L5.1

Reference vectors are exactly collinear: . Show precisely where TRIAD breaks and describe which piece of the attitude becomes undetermined.

Recall Solution

, length . Normalizing requires dividing by undefined, so cannot be formed and TRIAD fails outright. Physically: a single direction fixes only 2 of 3 freedoms; the spin about that common axis is completely unobservable. No amount of algebra recovers it — you must add a genuinely independent second direction.

L5.2

Second body measurement is noisy: true separation is but arrives at from . With slot 1 exact, argue that the estimated first body axis carries zero contribution from this error, and only the plane tilts.

Recall Solution

By construction , which does not involve at all — so its estimate is untouched by the noise (zero contribution). The noisy enters only through the cross product , which is then normalized to length 1. Normalizing deletes the magnitude information; what remains is the plane's orientation, which the shift tilts slightly. Therefore first-order error appears only in the second and third axes (the plane), while axis 1 stays exact. That is the whole reason for assigning the accurate sensor to slot 1: its full precision passes straight through into the estimate, and the weaker sensor can only tilt the remaining plane — a small, bounded effect.

L5.3

Given the noise-free data , , find and its rotation angle from (state its sign).

Recall Solution

Reference (same as L2.1): . Body: ; , already unit, so ; . — this is (positive off-diagonal in the top row → counter-clockwise about ). . Then gives , so . ✅ Consistent — the body pair is the reference pair rotated about .


Recall One-line self-test before you close the page

Why and never ? ::: Because the rotation maps reference columns to body columns (), so using orthonormality — has no such meaning. Where does TRIAD literally divide by zero? ::: When (or the body pair), the cross product has length . Which sensor belongs in slot 1? ::: The more accurate one — it is honored exactly and its full precision passes into the estimate.