Drake
Drake C++ Documentation

A Spatial Mass Matrix (also called Spatial Inertia) M represents the mass, center of mass location, and inertia in a single 6×6 symmetric, mass-weighted positive definite matrix that logically consists of four 3×3 submatrices.

            Spatial mass matrix
           ---------- ----------
        0 |          |          |
        1 |  I(=mG)  |   m c×   |
        2 |          |          |
           ---------- ----------
        3 |          |          |
        4 |  -m c×   |    mE    |
        5 |          |          |
           ---------- ----------
               Symbol: M

The symbols in the figure have the following meanings, assuming we have a spatial inertia M for a body B, taken about a point P. For numerical computation, the quantities must be expressed in a specified frame we'll denote as F here.

Symbol Meaning
m mass, a nonnegative scalar
I 3×3 inertia matrix, taken about P, expressed in F
G 3×3 unit inertia (gyration matrix) about P, exp. in F
c position vector from P to B's center of mass, exp. in F
3×3 cross product matrix of c
E 3×3 identity matrix

In practice the 36-element spatial inertia has only 10 independent elements, so we can represent it more compactly. Also, inertia is most effectively represented as mass times a unit inertia, which permits numerically robust representation of shape distribution for very small or zero masses.

Spatial inertia for a rigid body B is taken about a point P, and expressed in some frame F. Often P=Bcm (B's center of mass) or P=Bo (B's origin), and F=B (the body frame) or F=W (the world frame). We always document these clearly and use the decorated symbol \( [M^{B/P}]_F \) = M_BP_F to mean spatial inertia of body B about point P, expressed in frame F. For example, M_BBcm_W (= \([M^{B/B_{cm}}]_W\)) is the spatial inertia of body B taken about its center of mass (the "central inertia") and expressed in the world frame. We allow the body name and frame to be dropped if it is obvious from the "about" point, so M_Bcm ( \(M^{B_{cm}}\)) is the central spatial inertia of body B, expressed in B. Inertia can be taken about any point. For example M_BWo_W ( \([M^{B/Wo}]_W\)) is body B's spatial inertia taken about the World frame origin, and expressed in World.

Given M_BP_F ( \([M^{B/P}]_F\)), its top left submatrix is I_BP_F ( \([I^{B/P}]_F\)) and position vector c = p_PBcm_F ( \([^Pp^{B_{cm}}]_F\)), that is, the position vector of the center of mass measured from point P and expressed in F. Note that if the "taken about" point is Bcm, then c=0.