These are conceptual traps, not calculators. Each line is a question ::: answer reveal — try
to answer out loud before peeking. Every answer gives the reasoning, never a bare yes/no.
If any symbol feels unfamiliar, rebuild it from the parent: the TRIAD topic note. Prerequisites worth
opening: Cross Product and Right-Handed Frames, Rotation Matrices and SO(3).
Every trap below talks about the triad axes t^1,t^2,t^3
and the matrices Mr,Mb. Here is exactly what each symbol means, so the questions never sneak an
undefined thing past you. Look at the picture as you read each line.
Recall Why
detA=+1 (so A is a real rotation, not a reflection)
Two facts do the work. (1) The determinant-multiplication rule: det(XY)=detXdetY, and
det(MT)=detM. (2) Each triad matrix has det=+1: its columns are orthonormal so
det=±1, and building t^3=t^1×t^2 (in that
order) forces the right-handed sign +1. Then
detA=det(Mb)det(MrT)=det(Mb)det(Mr)=(+1)(+1)=+1.
Likewise AAT=MbMrTMrMbT=MbMbT=I, so A is a
proper rotation ✅.
Two unit vectors are enough to determine a full 3D attitude.
True, provided they are non-parallel. One direction leaves a spin degree of freedom free; a second independent direction locks that last angle, giving all 3 rotational degrees of freedom.
TRIAD uses both measurements symmetrically.
False. b^1 becomes an exact axis, but only the direction of b^1×b^2 survives — the precise angle of b^2 is discarded. Swapping slots 1 and 2 generally gives a different A.
The matrix A=MbMrT is guaranteed to be a proper rotation.
True, if you normalized every triad axis. Then Mb,Mr are orthonormal with det=+1, so AAT=I and detA=+1 — the defining properties of a rotation in Rotation Matrices and SO(3).
If sensor 2 is noisier than sensor 1, you should still put sensor 1 in slot 1.
True. Slot 1 is honored exactly, so put your most accurate sensor there; slot 2's angular noise is largely thrown away by the cross-product construction.
TRIAD finds the A that best fits both vectors in a least-squares sense.
False. That is Wahba's Problem / QUEST algorithm. TRIAD does no optimization — it trusts one vector completely and uses the other only for orientation of the plane.
The angle between b^1 and b^2 must equal the angle between r^1 and r^2 for TRIAD to return an answer.
False. Noise makes those angles differ, yet TRIAD still returns a valid rotation — precisely because it ignores b^2's angle and keeps only its direction.
t^3=t^1×t^2 could be replaced by t^2×t^1 with no consequence.
False. Reversing the cross product flips t^3's sign, making the frame left-handed (det=−1) — an improper rotation (a reflection), which is not a physical attitude.
Normalizing t^2 is optional if the inputs are already unit vectors.
False. Even for unit inputs, ∥r^1×r^2∥=sinθ=1 unless θ=90∘. Skipping the normalization breaks orthonormality and M−1=MT.
TRIAD works fine when the two reference vectors are the Sun and the geomagnetic field measured a second apart.
True in principle, as long as they are well separated in angle. Sun and field are typically non-parallel, which is why Sun Sensors and Magnetometers are a classic TRIAD pair.
"I'll compute A=MbMr−1 directly by inverting Mr numerically — same thing."
The result is the same only if Mr is orthonormal, in which case Mr−1=MrT exactly and transpose is cheaper and exactly stable. Numerical inversion of a matrix you know is orthonormal wastes effort and can introduce error.
"My cross product came out (0,0,0.02), I'll just normalize it to (0,0,1) and continue."
A near-zero cross product means the two vectors are nearly parallel (sinθ≈0.02). Normalizing amplifies the tiny noisy tail into a full unit vector, so the second axis — and the whole attitude about it — is dominated by noise.
"I built the reference triad with r^1,r^2 but the body triad with b^2,b^1 (swapped order)."
The recipe must be identical on both sides. Swapping the roles of the two vectors on only one side means Mr and Mb describe different physical triads, so A=MbMrT is meaningless.
"I set AMb=Mr and solved for A."
Backwards. Attitude A maps reference → body: Ar^i=b^i, so AMr=Mb. Solving your equation gives AT — the inverse rotation.
"The vectors don't need to be unit vectors; TRIAD only cares about direction."
The construction does rely on unit vectors: t^1=b^1 is copied directly into a column of an orthonormal matrix. A non-unit vector there breaks M−1=MT. Normalize the raw measurements first.
"I got detA=−1; close enough to a rotation."
detA=−1 is a reflection, not a rotation — it flips handedness. Almost always it means a cross-product sign was reversed or a frame was built left-handed. It is a hard error, not roundoff.
Why is the cross product, and not the average or the difference, used to build t^2?
The cross product is the one operation whose output is perpendicular to both inputs, guaranteeing orthogonality to t^1. See Cross Product and Right-Handed Frames. An average or difference stays in the plane and gives no new orthogonal axis.
Why does TRIAD "throw away" the angle of the second measurement?
Because t^2 depends only on the direction of b^1×b^2, not its magnitude — so a small angular error in b^2 merely tilts the plane slightly, and the exact angle never enters A. This is the deliberate noise-rejection choice.
Why do we need detA=+1 specifically, not just AAT=I?
AAT=I allows det=±1; the −1 case is a reflection that no rigid body can physically perform. Requiring det=+1 restricts A to genuine rotations, the group Rotation Matrices and SO(3).
Why is a single vector measurement insufficient for attitude?
A single direction pins down 2 of 3 rotational degrees of freedom — the body can still spin freely about that direction and no single measurement would change. The second vector removes that last spin ambiguity.
Why is separation near 90∘ best for the two vectors?
The cross-product magnitude is sinθ, which peaks at θ=90∘. A large, well-conditioned cross product means the plane's orientation is robust to noise; near 0∘ or 180∘ it collapses toward zero and noise dominates.
Why does TRIAD lose to QUEST algorithm / Davenport q-method when both sensors are comparably accurate?
TRIAD sacrifices one sensor's angle entirely. When both sensors carry useful information, an optimal least-squares fit (Wahba's Problem) uses all of it and yields a lower-error estimate; TRIAD is throwing away good data.
Why express attitude as a matrix here instead of a quaternion?
The triad construction is naturally column-by-column in matrix form. The result can always be converted to a quaternion afterward for propagation in Quaternion Attitude Kinematics or filtering in Kalman Filter — Attitude.
What happens when r^1 and r^2 are exactly parallel?
The cross product is the zero vector, sinθ=0, and t^2 is undefined (division by zero). Attitude about the shared axis is fundamentally undetermined — no method, not just TRIAD, can recover it.
What happens as the two vectors approach parallel but aren't quite?
TRIAD still returns an answer, but the tiny denominator sinθ amplifies measurement noise in t^2 (and hence in the whole spin angle) — the estimate degrades continuously and becomes untrustworthy well before true collinearity.
What if b^1 is perfect but b^2 is complete garbage (random direction)?
The axis t^1=b^1 is still exact, so the attitude about that axis remains anchored; but the spin angle about it, set by b^2's plane, is garbage. You get two good DOF and one ruined.
What if you have three vector measurements, not two?
Plain TRIAD uses only two — pick the best pair, or better, switch to QUEST algorithm / Davenport q-method, which optimally fuse all three rather than discarding data.
What is the estimate error when measurements are exactly noise-free?
Zero. In the noiseless case the reference and body triads are exact rotations of each other, so A=MbMrT reproduces the true attitude perfectly, satisfying Ar^i=b^i for both i.
What if both sensors have identical accuracy — does slot assignment matter?
Numerically the two orderings give different A's, but neither is "more correct." Since neither sensor deserves full trust, this is exactly the regime where you should abandon TRIAD for an optimal method that treats them fairly.
Recall One-line summary of the trap themes
Q1 Asymmetry (slot 1 exact, slot 2 direction-only). ::: TRIAD trusts one vector fully.
Q2 Fragility. ::: Dividing by sinθ blows up near parallel.
Q3 Validity. ::: Normalize everything; demand detA=+1, else it's a reflection.