Physics Library
 An open source physics library
Encyclopedia | Forums | Docs | Random |  
Login
create new user
Username:
Password:
forget your password?
Main Menu
Sections

Meta

Talkback

Downloads

Information
Strapdown Inertial Navigation: Vectors, Coordinate Frames, and Direction Cosine Matrices (Topic)

Strapdown Inertial Navigation: Vectors, Coordinate Frames, and Direction Cosine Matrices

A strapdown inertial navigator spends much of its life transforming the components of physical vectors from one coordinate frame to another. Gyroscopes and accelerometers report measurements in the body frame, while gravity models, Earth rotation, velocity, and position are most naturally expressed in Earth-fixed or local navigation frames. Before any time integration can be trusted, the coordinate transformations themselves must be unambiguous.

This article develops the direction cosine matrix from first principles. The central distinction is simple but fundamental:

|------------------------------------------------------------------|
a physical vector is not the same object as a column  of coordinates.|
--------------------------------------------------------------------
(1)

The geometric vector is independent of coordinates. A coordinate column is the set of scalar projections of that vector onto a particular basis. Changing frames therefore changes the numbers used to describe the vector without changing the vector itself. In this series that change of coordinates is represented by a passive direction cosine matrix (DCM).

For the body and navigation frames,

|------------|
|vn =  Cnb vb,|
-------------
(2)

where the subscript identifies the frame in which the coordinates begin and the superscript identifies the frame in which they end. The same convention will be used for specific force, gravity, Earth rate, transport rate, and every other vector quantity in the navigation equations.

PIC

Figure. One geometric vector v can have different coordinate columns in two rotated orthonormal frames. The vector itself has not moved; only the basis used to report its components has changed.

The treatment follows the coordinate and attitude conventions commonly used in inertial-navigation texts such as Titterton and Weston [1], Groves [2], and Jekeli [3]. Rotation-matrix and attitude-representation issues are also discussed in the broader attitude literature, for example Shuster [4] and Markley and Crassidis [5].

1 Learning objectives

After completing this entry, the reader should be able to:

  1. distinguish a geometric vector from its coordinate representation;
  2. define a coordinate frame as an ordered orthonormal basis;
  3. recover vector components by projection onto basis vectors;
  4. derive the passive DCM Cbn directly from basis-vector dot products;
  5. interpret each DCM entry as a direction cosine;
  6. prove that a DCM is orthogonal and that (Cbn)−1 = (C bn)T = C nb;
  7. explain why a proper DCM has determinant +1;
  8. compose coordinate transformations correctly and explain why matrix order matters;
  9. distinguish passive coordinate transformation from active rotation of a physical vector;
  10. define the skew-symmetric cross-product matrix [a]×;
  11. prove the identity
      n  b      n  b    b
[Cb a ]× = C b [a ]×C n;

  12. transform a body-frame velocity or specific-force vector into NED coordinates;
  13. identify numerical invariants that can be used to test an implemented attitude matrix.

2 The geometric vector comes first

Consider a velocity vector v. Its geometric meaning is independent of any coordinate system: it has a magnitude and a direction in physical space. To perform numerical calculations, however, we select an ordered basis

     { b   b  b}
ℬ  =  e1,e 2,e 3 ,
(3)

and write

v =  vb1eb1 + vb2eb2 + vb3eb3.
(4)

The coordinate column is

|------------|
|     ⌊ vb⌋  |
| b   ⌈  1b⌉  |
|v  =   v2b  .|
--------v3---|
(5)

The superscript b does not create a new physical vector. It records which basis was used to obtain the three scalar components.

If the same physical vector is resolved in the navigation basis

𝒩  = {en1,en2,en3} ,
(6)

then

v = vnen + vnen +  vnen,
     1 1    2  2    3 3
(7)

with a generally different coordinate column

     ⌊   ⌋
       vn1
vn = ⌈ vn⌉ .
        2n
       v3
(8)

The fundamental coordinate problem is therefore:

|-------b-----------------------n--|
-given-v-,-how-do-we--compute--v-?-|
(9)

3 A coordinate frame is an ordered orthonormal basis

For the attitude transformations used in conventional strapdown navigation, the coordinate axes are mutually perpendicular unit vectors. Thus

ebi ⋅ ebj = δij,
(10)

and similarly

en⋅ en = δij,
 i   j
(11)

where δij is the Kronecker delta.

The order of the basis vectors matters. For the body frame we will commonly use

(xb,yb,zb) = (forward,right,down ),
(12)

while the local navigation frame is

(xn,yn,zn) = (N, E, D ).
(13)

Both are right-handed frames. In particular,

e1 × e2 = e3.
(14)

This handedness condition will later distinguish a physical rotation matrix, whose determinant is +1, from a general orthogonal matrix that could also represent a reflection.

4 Components are obtained by projection

Because the basis is orthonormal, the coefficient multiplying a basis vector is obtained by taking a dot product with that basis vector. Starting from

      3
    ∑    n  n
v =     vj e j,
     j=1
(15)

take the dot product with ein:

ein ⋅ v = e in ⋅∑ j=13v jne jn (16)
= ∑ j=13v jn( n   n)
 ei ⋅ ej (17)
= ∑ j=13v jnδ ij (18)
= vin. (19)

Therefore

|------------|
|vn = en ⋅ v.|
--i----i-----
(20)

This projection formula is the entire geometric foundation of the DCM.

5 Deriving the direction cosine matrix

Write the physical vector in body coordinates:

     ∑3
v =     vbjebj.
     j=1
(21)

The ith navigation-frame component is

vin = e in ⋅ v (22)
= ein ⋅∑ j=13v jbe jb (23)
= ∑ j=13( n   b)
 ei ⋅ ejvjb. (24)

Define

|----------------|
|(Cn )ij = en ⋅ eb.
---b-------i---j-
(25)

Then the three component equations combine into

|------------|
|vn =  Cnvb. |
--------b----
(26)

Thus

      ⌊                      ⌋
       en1 ⋅ eb1 en1 ⋅ eb2 en1 ⋅ eb3
Cnb =  ⌈en2 ⋅ eb1 en2 ⋅ eb2 en2 ⋅ eb3⌉ .
       en ⋅ eb en ⋅ eb en ⋅ eb
        3   1   3   2   3   3
(27)

For unit vectors,

 n   b
ei ⋅ ej = cos𝜃ij,
(28)

where 𝜃ij is the angle between the corresponding axes. This is why the matrix is called a direction cosine matrix.

PIC

Figure. Every DCM element is a projection of one frame axis onto another. The entire coordinate transformation follows directly from those nine dot products.

6 Matrix form using basis matrices

A compact derivation is useful because it makes several later proofs immediate. Represent both orthonormal bases in any common orthonormal ambient basis and place their basis vectors into column matrices:

     ⌊           ⌋
       |   |   |
B  = ⌈ eb1 eb2 eb3⌉,
       |   |   |
(29)

and

     ⌊ |   |   | ⌋
     ⌈  n   n   n⌉
N =   e 1  e2  e3  .
       |   |   |
(30)

Because both bases are orthonormal,

BT B  = I,     N TN  = I.
(31)

If v denotes the physical vector expressed in the common ambient coordinates, then

v-=  Bvb
(32)

and

vn =  N Tv.
(33)

Therefore

vn = N T Bvb.
(34)

Comparing with the definition of the DCM gives

|------------|
|  n     T   |
-Cb-=--N--B.-
(35)

This expression makes the row-column interpretation transparent:

  • column j of Cbn is the jth body axis expressed in navigation coordinates;
  • row i of Cbn contains the projections of all body axes onto the ith navigation axis.

In particular,

      ⌊                   ⌋
          |      |      |
Cn  = ⌈ (eb)n  (eb )n  (eb)n⌉ .
  b       1      2     3
          |      |      |
(36)

That column interpretation is extremely useful when building a DCM from known reference directions.

7 Orthogonality of a DCM

A proper attitude transformation preserves lengths and angles. We can prove this algebraically from the basis construction.

Using

Cnb =  N TB,
(37)

its transpose is

(Cnb )T = BT N.
(38)

Then

(Cbn)T C bn = BT NNT B. (39)

Since N is an orthogonal basis matrix,

N N T = I,
(40)

so

(Cbn)T C bn = BT B (41)
= I. (42)

Thus

|--------------|
|(Cnb )T Cnb =  I.|
---------------
(43)

A square matrix satisfying this relationship is orthogonal. Therefore

|----------------|
(Cn )−1 = (Cn )T.|
---b---------b----
(44)

The reverse coordinate transformation is consequently

|------------|
|Cb = (Cn )T.|
--n------b----
(45)

This is one of the most useful identities in strapdown software. A separate general matrix inversion should never be required to reverse a valid DCM transformation.

8 A DCM preserves vector length

Let

 n     n  b
v  =  Cb v .
(46)

Then

∥vn∥2 = (vn)T vn (47)
= (vb)T (C bn)T C bnvb (48)
= (vb)T vb (49)
= ∥vb∥2. (50)

Hence

|--n------b---|
∥v--∥-=-∥v-∥.--
(51)

This is exactly what we expect: changing coordinates cannot change the physical speed, acceleration magnitude, gravity magnitude, or angular-rate magnitude.

The same proof shows that dot products are preserved. If

an =  Cnb ab,    cn = Cnb cb,
(52)

then

(an)T cn = (ab)T (C bn)T C bncb (53)
= (ab)T cb. (54)

Thus angles between vectors are also unchanged by a passive coordinate transformation.

9 Why the determinant is +1

Orthogonality alone implies

       2
det (C )  = 1,
(55)

so

det(C ) = ±1.
(56)

A determinant of −1 corresponds to an improper orthogonal transformation such as a reflection. A physical attitude transformation between two right-handed Cartesian frames is a proper rotation and therefore satisfies

|-----n--------|
-det(C-b )-=-+1.-
(57)

The set of all such matrices is the special orthogonal group

         {       3×3 |  T                 }
SO (3) =  C  ∈ ℝ    | C  C = I, detC =  1  .
(58)

The notation SO(3) becomes increasingly useful when discussing finite rotations, quaternions, rotation vectors, and numerical attitude propagation.

10 Composing coordinate transformations

Suppose a vector is known in frame a and we want its components in frame n, but an intermediate frame b is convenient. First transform from a to b:

vb = Cbava.
(59)

Then transform from b to n:

vn =  Cnb vb.
(60)

Substitution gives

 n     n  b a
v  = C b C av .
(61)

Therefore

|-n-----n--b-|
-Ca-=--Cb C-a.
(62)

PIC

Figure. Coordinate transformations compose in the same order in which the coordinate maps are applied, but matrix multiplication acts from right to left on the coordinate column.

This rule is an important defense against frame-order errors. The adjacent frame labels cancel visually:

 n  b       n
Cb Ca −→  C a.
(63)

The notation behaves somewhat like dimensional analysis: if the neighboring frame labels do not match, the multiplication is probably not the transformation intended.

11 A two-dimensional derivation fixes the sign convention

Before using a three-dimensional attitude matrix, it is useful to derive a planar example. Let frame b be obtained from frame n by a positive right-handed rotation ψ about the common positive third axis. Then the body axes expressed in navigation coordinates are

        [      ]
(eb1)n =   cosψ  ,
          sin ψ
(64)

and

       [       ]
  bn     − sin ψ
(e 2)  =    cosψ   .
(65)

Placing those vectors into the columns of the DCM gives

|-----[--------------]--|
| n    cos ψ  − sinψ    |
C b =  sinψ    cosψ   . |
-------------------------
(66)

Its transpose is

      [              ]
Cbn =   cosψ    sin ψ  .
       − sinψ   cosψ
(67)

Notice that both matrices are familiar “rotation matrices.” The notation tells us which coordinate map is actually being performed.

12 Passive transformation versus active rotation

The same numerical matrix can appear in two conceptually different operations.

In a passive transformation, the physical vector is fixed and the basis changes:

 n     n  b
v  =  Cb v .
(68)

In an active rotation, the basis is fixed and the physical vector itself is rotated:

vnew = Rvold.
(69)

PIC

Figure. Passive and active rotations can use matrices with identical numerical entries while representing different geometric operations. In strapdown mechanization, frame superscripts and subscripts are used to keep the passive coordinate interpretation explicit.

This distinction is a frequent source of sign and transpose errors. Statements such as “rotate by 30∘” are incomplete unless they specify whether a vector is being actively rotated or whether coordinates are being passively transformed into another frame.

For the convention used throughout this INS series,

|----------------------------------------------------------------------|
|Cn :   body -resolved components  − →  navigation -resolved components.  |
--b--------------------------------------------------------------------
(70)

13 A NED heading example

Consider a level vehicle whose body x axis points 30∘ east of north. With body axes forward-right-down and navigation axes north-east-down,

       ∘
ψ  = 30 .
(71)

The body axes expressed in NED coordinates give

      ⌊                 ⌋
  n     cosψ   − sin ψ  0
C b = ⌈ sin ψ   cos ψ   0⌉ .
          0      0     1
(72)

Suppose the vehicle velocity is purely forward in body coordinates:

     ⌊   ⌋
       10
vb = ⌈ 0 ⌉ m ∕s.
       0
(73)

Then

vn = C bnvb (74)
= ⌊                    ⌋
 cos30 ∘ −  sin 30∘  0
⌈sin30 ∘  cos 30∘   0⌉
    0        0      1⌊   ⌋
  10
⌈ 0 ⌉
  0 (75)
= ⌊     ⌋
 8.660
⌈5.000⌉
   0 m∕s. (76)

Thus the vehicle has approximately 8.66 m/s north velocity and 5.00 m/s east velocity.

PIC

Figure. A level vehicle heading 30∘ east of north. A purely forward body-frame vector becomes a combination of north and east components after multiplication by Cbn.

The same transformation is exactly what the strapdown navigator will apply to accelerometer specific force:

|----------|
fn =  Cnb fb.
------------
(77)

Attitude is therefore the bridge between rotational sensing and translational navigation.

14 Cross products in matrix form

Rotating-frame mechanics contains many cross products. It is convenient to represent the cross-product operation by a skew-symmetric matrix. For

     ⌊a ⌋
     ⌈ 1⌉
a =   a2  ,
      a3
(78)

define

|------⌊----------------⌋--|
|         0    − a3  a2    |
[a]  = ⌈  a     0   − a ⌉ .|
|  ×       3           1   |
---------−-a2--a1-----0-----
(79)

Then for any vector b,

|--------------|
[a]×b-=--a ×-b.-
(80)

The matrix is skew-symmetric:

   T
[a]× = − [a ]×.
(81)

This notation lets rotational kinematics be written compactly and will appear throughout INS02 and the attitude-propagation articles.

15 A DCM preserves cross products

A proper rotation preserves both metric geometry and handedness. Therefore

   (       )   (     )   (     )
Cnb  ab × cb =  Cnb ab ×  Cnb cb .
(82)

Using skew-matrix notation,

Cnb [ab]×cb = [Cnb ab]×Cnb cb.
(83)

Since this is true for every cb,

  n  b       n b    n
Cb [a ]× = [C b a ]×Cb .
(84)

Multiply on the right by

  b     n T
Cn =  (C b )
(85)

to obtain the identity

|----------------------|
-[Cnb ab]×-=-Cnb [ab]×Cbn.
(86)

This is not merely a matrix trick. It says that “take the cross product with a” is itself a geometric operation whose matrix representation must transform consistently when the coordinate basis changes.

16 Small rotations and the first-order DCM

Although full attitude propagation is postponed to later articles, one first-order result is useful now. Suppose frame b differs from frame n by a small right-handed rotation vector

      ⌊    ⌋
        δ𝜃1
δ𝜃n = ⌈ δ𝜃2⌉ .
        δ𝜃3
(87)

To first order, the body axes are obtained by rotating the navigation axes through the small vector. The corresponding passive transformation from body coordinates to navigation coordinates is

|----------------|
Cnb ≈ I + [δ𝜃n]×.|
------------------
(88)

The inverse map is therefore

Cbn ≈ I − [δ𝜃n]×.
(89)

Terms quadratic in the small angles have been neglected. This approximation will become central when deriving attitude-error dynamics and when connecting gyro bias to navigation error.

As a quick check, take a small positive yaw δψ about Down:

        ⌊            ⌋
          0   − δ ψ 0
[δ𝜃 ]× =  ⌈δψ    0    0⌉ .
          0    0    0
(90)

Then

      ⌊            ⌋
        1   − δψ  0
Cnb ≈  ⌈δψ    1    0⌉ ,
        0    0    1
(91)

which is exactly the first-order expansion of the planar DCM derived earlier.

17 Why a DCM contains nine numbers but only three degrees of freedom

A general 3 × 3 matrix contains nine independent scalar entries. A DCM cannot vary freely because it must satisfy

  T
C  C =  I.
(92)

The three columns must each have unit length, providing three constraints, and each pair of distinct columns must be orthogonal, providing three additional constraints. Thus six independent constraints reduce the nine entries to

9 − 6 = 3
(93)

independent rotational degrees of freedom.

This is why attitude can also be parameterized using three Euler Angles locally. Quaternions use four scalars but impose one unit-norm constraint, again leaving three physical degrees of freedom. Different attitude representations package the same three-dimensional rotational geometry in different numerical forms [4, 5].

The DCM is particularly useful for derivation because the action on vectors is direct and frame meaning remains visible. Quaternions will become especially useful for numerical propagation because they avoid some singularities and preserve attitude efficiently with only four stored numbers.

18 The DCM inside the strapdown mechanization

INS00 introduced the translational chain

 b       n b      n      n
f  −→  C b f − → a  −→  v  −→  r.
(94)

We can now interpret the first transformation exactly. The accelerometers measure the components of the specific-force vector along the body axes:

     ⌊  ⌋
 b    fx
f =  ⌈fy⌉  .
      fz  b
(95)

The vector itself exists physically independent of coordinates. Multiplication by the attitude DCM produces the components of the same specific-force vector along North, East, and Down:

|----------|
|n     n b |
f--=--Cb f-.
(96)

No force has been created by this multiplication. No physical vector has been rotated. The navigation computer has simply re-expressed the accelerometer-measured vector in the coordinate basis required by the velocity equation.

The same logic applies to angular velocity. If Earth rate is available in Earth-frame coordinates and must be used in navigation coordinates, an appropriate DCM changes only the component representation. Much of strapdown navigation can be understood as disciplined bookkeeping of this type, coupled to physical differential equations.

19 Useful implementation checks

Because a DCM has strong geometric structure, several inexpensive tests can catch implementation errors.

19.1 Orthogonality check

Compute

        T
EC  = C  C −  I.
(97)

For a valid numerically propagated DCM, the entries of EC should remain close to zero. A convenient scalar diagnostic is the Frobenius norm

∥EC ∥F .
(98)

Growth in this quantity indicates loss of orthogonality through numerical integration or coding error.

19.2 Determinant check

A proper attitude matrix should satisfy

detC ≈  1.
(99)

A value near −1 indicates an axis reflection or handedness error, not a valid attitude.

19.3 Norm-preservation check

For a test vector,

∥Cv  ∥ ≈ ∥v∥.
(100)

A large difference indicates that the transformation is not orthogonal.

19.4 Round-trip check

Transform a vector from b to n and back:

^vb = CbnCnb vb.
(101)

The result should satisfy

^vb ≈ vb.
(102)

This is an especially useful unit test because it simultaneously checks frame ordering and transpose logic.

20 Common mistakes

20.1 Treating the coordinate column as the physical vector

The numbers in vb and vn differ even though the geometric vector is the same. Statements such as “the vector changed after multiplication by the DCM” should therefore be avoided when discussing a passive transformation.

20.2 Reading the frame labels backward

In this series,

  n
C b
(103)

means

|------------------------------|
b-coordinates-→--n-coordinates.-
(104)

Remembering this rule is more reliable than memorizing signs in particular matrices.

20.3 Using a transpose without stating why

The transpose reverses a DCM because the matrix is orthogonal:

Cbn = (Cnb )T.
(105)

This is a geometric property, not an arbitrary convention.

20.4 Multiplying transformations in the wrong order

If

 b     b a
v =  Cav
(106)

and

vn =  Cnb vb,
(107)

then

Cna =  Cnb Cba,
(108)

not the reverse product.

20.5 Mixing active and passive descriptions

A matrix that actively rotates a vector by +𝜃 can have the same numerical entries as a passive change of coordinates between frames separated by +𝜃. The physical interpretation must be carried by explicit frame notation.

20.6 Ignoring handedness

An orthogonal matrix with determinant −1 preserves lengths but includes a reflection. It is not a proper attitude DCM between two right-handed frames.

21 Where INS02 begins

Everything in this article concerns coordinate geometry at an instant of time. The frames may have different orientations, but we have not yet asked how a vector derivative changes when the basis itself rotates.

That is the central question of INS02.

If a vector a is observed from an inertial frame and from a rotating frame, the derivatives are related by the transport theorem

(   )     (   )
  da-       da-
  dt   =    dt   +  ωir × a.
      i         r
(109)

INS02 will derive this result directly from the time derivatives of rotating basis vectors and then apply it twice to position. Coriolis, centrifugal, and Euler acceleration will emerge from that derivation rather than being introduced as memorized correction terms.

The DCM and skew-matrix identities developed here provide the algebraic language required for that derivation.

22 Summary

A physical vector exists independently of coordinates. In an orthonormal frame, its coordinate components are obtained by projection onto the basis vectors:

vn = en ⋅ v.
 i    i
(110)

The passive direction cosine matrix from frame b to frame n is therefore

|----------------|
|(Cnb )ij = eni ⋅ ebj,
-----------------
(111)

and transforms coordinates according to

|------------|
|vn =  Cnb vb.|
-------------
(112)

A DCM is a proper orthogonal matrix:

|------------------------------|
|(Cnb )T Cnb =  I,    det Cnb =  1,|
-------------------------------
(113)

so

|------------|
|Cb = (Cn )T.|
--n------b----
(114)

Coordinate transformations compose as

|------------|
|Cn =  CnCb .|
--a-----b--a--
(115)

For rotational dynamics, the cross-product matrix

[a ]×b  = a × b
(116)

obeys

|----------------------|
|  n  b      n  b    b |
-[Cb a-]×-=-C-b [a-]×C-n.
(117)

These results establish the coordinate language needed to derive rotating-frame kinematics in INS02 and, ultimately, the full strapdown attitude and velocity equations.

References

[1]   David H. Titterton and John L. Weston, Strapdown Inertial Navigation Technology, 2nd ed., Institution of Electrical Engineers, 2004.

[2]   Paul D. Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation Systems, 2nd ed., Artech House, 2013.

[3]   Christopher Jekeli, Inertial Navigation Systems with Geodetic Applications, Walter de Gruyter, 2001.

[4]   Malcolm D. Shuster, “A Survey of Attitude Representations,” The Journal of the Astronautical Sciences, Vol. 41, No. 4, pp. 439–517, 1993.

[5]   F. Landis Markley and John L. Crassidis, Fundamentals of Spacecraft Attitude Determination and Control, Springer, 2014.


"Strapdown Inertial Navigation: Vectors, Coordinate Frames, and Direction Cosine Matrices" is owned by bloftin.
(view preamble)
View style:
Other names:  INS01
Keywords:  strapdown inertial navigation, vector, coordinate frame, basis vector, direction cosine matrix, DCM, attitude, passive transformation, active rotation, orthogonal matrix, skew-symmetric matrix, cross product, NED, body frame

Attachments:
Strapdown Inertial Navigation Examples: Vectors, Frames, and Direction Cosine Matrices (Example) by bloftin

Cross-references: algebraic, theorem, norm, differential equations, type, computer, INS00, Euler Angles, degrees of freedom, unit, metric, kinematics, skew-symmetric matrix, cross products, mechanics, operations, matrix multiplication, quaternions, acceleration, speed, square matrix, formula, unit vectors, magnitude, coordinate system, identity, matrix, determinant, direction cosine, dot products, representation, force, scalar, vector, direction cosine matrix, position, velocity, vectors
There are 2 references to this object.

This is version 1 of Strapdown Inertial Navigation: Vectors, Coordinate Frames, and Direction Cosine Matrices, born on 2026-09-29.
Object id is 1344, canonical name is StrapdownInertialNavigationVectorsCoordinateFramesAndDirectionCosineMatrices.
Accessed 5 times total.

Classification:
Physics Classification: 06.30.Gv (Velocity, acceleration, and rotation)
Pending Errata and Addenda
None.
Discussion
Style: Expand: Order:

No messages.

Interact
rate | post | correct | update request | add example | add (any)