Drake
Drake C++ Documentation
Multibody Quantities

Quantities of interest in multibody dynamics have distinct types.

For example, a rotation matrix is denoted with R and a position vector with p. New quantities can be created by differentiation of an existing quantity (see Time Derivatives of Multibody Quantities).

Most quantities have a reference and target, either of which may be a frame, basis, or point, that specify how the quantity is defined. In computation, vectors are expressed in a specified basis (or frame) that associates a direction with each vector element. For example, the velocity of a point P moving in a reference frame F is a vector quantity with target point P and reference frame F. In typeset this symbol is written as $$^Fv^P$$. Here v is the quantity type, the left superscript F is the reference, and the right superscript P is the target. In computation, this vector is expressed in a particular basis. By default, the assumed expressed-in frame is the same as the reference frame, so in this case, the assumed expressed-in frame is frame F's basis. Alternately, to use a different expressed-in frame, say W, typeset with the bracket notation: $$[^Fv^P]_W$$.

Kane/monogram notation was developed decades ago for kinematics and dynamics. It explicitly communicates the quantity being measured and how it is expressed. The typeset symbol $$^Fv^P$$ is translated to monogram notation as v_FP. The quantity type always comes first, then an underscore, then left and right superscripts. By default, the symbol v_FP implies the vector is expressed in frame F. Alternately, to express in frame W, use the typeset $$[^Fv^P]_W$$ and monogram notation v_FP_W (add a final underscore and expressed-in frame W). We adhere to this pattern for all quantities and it is quite useful once you get familiar with it. As a second example, consider the position vector of point Bcm (body B's center of mass) from point Bo (the origin of frame B), expressed in B. In explicit typeset, this is $$[^{B_o}p^{B_{cm}}]_B$$ whereas in implicit typeset this is abbreviated $$^Bp^{B_{cm}}$$ (where the left-superscript B denotes Bo and the expressed-in frame is implied to be B). The corresponding monogram equivalents are p_BoBcm_B and p_BBcm, respectively.

Here are some more useful multibody quantities.

Quantity Symbol Typeset Monogram Meaningᵃ
Generic vector v v $$[v]_E$$ v_E Vector v expressed in frame E.
Rotation matrix R $$^BR^C$$ R_BC Frame C's orientation in frame B
Position vector p $$^Bp^C$$ p_BC Position vector from Bo (frame B's origin) to Co (frame C's origin), expressed in frame B (implied).
Position vector p $$[^Pp^Q]_E$$ p_PQ_E Position vector from point P to point Q, expressed in frame E.
Transform/pose X $$^BX^C$$ X_BC Frame C's rigid transform (pose) in frame B
General Transform T $$^BT^C$$ T_BC The relationship between two spaces – it may be affine, projective, isometric, etc. Every X_AB can be written as T_AB, but not every T_AB can be written as X_AB.
Angular velocity w $$^B\omega^C$$ w_BC Frame C's angular velocity in frame Bᵃ
Velocity v $$^Bv^Q$$ v_BQ Point Q's translational velocity in frame B
Relative velocity v $$^Bv^{Q/P}$$ v_B_PQ Point Q's translational velocity relative to point P in frame B
Spatial velocity V $$^BV^{C}$$ V_BC Frame C's spatial velocity in frame B (for point Co)ᵇ
Relative spatial velocity V $$^BV^{C/D}$$ V_B_DC Frame C's spatial velocity relative to frame D in frame B
Angular acceleration alpha $$^B\alpha^C$$ alpha_BC Frame C's angular acceleration in frame B
Acceleration a $$^Ba^Q$$ a_BQ Point Q's translational acceleration in frame B
Relative acceleration a $$^Ba^{Q/P}$$ a_B_PQ Point Q's translational acceleration relative to point P in frame B
Spatial acceleration A $$^BA^{C}$$ A_BC Frame C's spatial acceleration in frame B (for point Co)ᵇ
Relative spatial acceleration A $$^BA^{C/D}$$ A_B_DC Frame C's spatial acceleration relative to frame D in frame B
Torque t $$\tau^{B}$$ t_B Torque on a body (or frame) B
Force f $$f^{P}$$ f_P Force on a point P
Spatial force F $$F^{B}$$ F_B Spatial force (torque/force) on a body (or frame) Bᶜ
Inertia matrix I $$I^{B/Bo}$$ I_BBo Body B's inertia matrix about Bo
Spatial inertia M $$M^{B/Bo}$$ M_BBo Body B's spatial inertia about Boᵃ
Spatial momentum L $$^BL^{S/P}$$ L_BSP System S's spatial momentum about point P in frame B
Spatial momentum L $$^BL^{S/Scm}$$ L_BScm System S's spatial momentum about point Scm in frame B
Kinetic energy K $$^BK^S$$ K_BS System S's kinetic energy in frame B
Jacobian wrt qᵈ Jq $$[J_{q}^{{}^Pp^Q}]_E$$ Jq_p_PQ_E Point Q's position Jacobian from point P in frame E wrt q (in means both measured-in and expressed-in)
Jacobian wrt q̇ Jqdot $$J_{q̇}^{{}^Bv^Q}$$ Jqdot_v_BQ Point Q's translational velocity Jacobian in frame B wrt q̇
Jacobian wrt v Jv $$J_{v}^{{}^Bv^Q}$$ Jv_v_BQ Point Q's translational velocity Jacobian in frame B wrt v
Jacobian wrt v Jv $$J_{v}^{{}^B\omega^C}$$ Jv_w_BC Frame C's angular velocity Jacobian in frame B wrt v
Ez measure of vector v v $$[v]_{Ez}$$ v_Ez Ez scalar component of vector v, i.e., v • Ez, where Ez is frame E's z-direction unit vector.

ᵃ In code, a vector has an expressed-in-frame which appears after the quantity.
Example: w_BC_E is C's angular velocity in B, expressed in frame E, typeset as $$[^B\omega^C]_E$$. If not explicitly present, the expressed-in-frame defaults to the measured-in-frame. Hence, w_BC is C's angular velocity in (measured-in) frame B, expressed in frame B (implied).
Similarly, an inertia matrix or spatial inertia has an expressed-in-frame.
Example: I_BBo_E is body B's inertia matrix about Bo, expressed in frame E, typeset as $$[I^{B/Bo}]_E$$.
By convention, I_BP is body B's inertia matrix about point P, expressed in B (implied).

ᵇ In code, spatial velocity (or spatial acceleration) has an expressed-in-frame which appears after the quantity.
Example: V_BC_E is frame C's spatial velocity in frame B, expressed in frame E and contains both w_BC_E (described aboveᵃ) and v_BC_E (point Co's translational velocity in frame B, expressed in frame E). Reminder, a rigid body D's translational and spatial velocity are for point Do (the origin of D's body frame), not for Dcm (D's center of mass). See Frames and Bodies for more information.

ᶜ It is often useful to replace a set of forces on a body or frame B by an equivalent set with a force $$f^{Bo}$$ (equal to the set's resultant) placed at Bo, together with a torque $$\tau$$ equal to the moment of the set about Bo. A spatial force Fᴮᵒ containing $$\tau$$ and $$f^{Bo}$$ represents this replacement. Note: the spatial force Fᴮ is shorthand for Fᴮᵒ (i.e., the about-point is B's origin Bo). The monogram notation F_Bcm is useful when the about-point is Bcm (body B's center of mass).

ᵈ The Jacobian contains partial derivatives wrt (with respect to) scalars e.g., wrt q (generalized positions), or q̇, or v (generalized velocities). The example below shows the simplicity of Jacobian monogram: first is the Jacobian symbol (Jv), next is the kinematic quantity (v_BQ), last is an expressed-in frame (E).
Example: Jv_v_BQ_E is Jv (Jacobian wrt v), for v_BQ (velocity in frame B of point Q), expressed in frame E.
Advanced: Due to rules of vector differentiation, explicit Jacobian monogram notation for Jq (Jacobian wrt generalized positions q) requires an extra frame (e.g., JBq is partial differentiation in frame B wrt q). Frequently, the partial-differentiation-in-frame B is identical to the expressed-in-frame E and a shorthand notation can be used.
Example: Jq_p_PQ_E is Jq (Jacobian in frame E wrt q), for p_PQ (position vector from point P to point Q), expressed in frame E.
Special relationship between position and velocity Jacobians: When a point Q's position vector originates at a point Bo fixed in frame B and when there are no motion constraints (no relationships between q̇₁ ... q̇ₙ), $$\;[J_{q}^{{}^{Bo}p^Q}]_B = [J_{q̇}^{{}^Bv^Q}]_B\;$$ i.e., (Jq_p_BoQ_B = Jqdot_v_BQ_B).

Monogram notation addresses frequently used kinematics. In a context-sensible way (and in collaboration with reviewers), extend notation to related concepts. Some examples are shown below.

Extended notation Description (herein E is the vectors' expressed-in-frame)
p_PQset_E p_PQlist_E Set of position vectors from a point P to each of the points in the set Q = {Q₀, Q₁, Q₂, ...}
v_BQset_E v_BQlist_E Set of translational velocities in frame B for the set of points Q = {Q₀, Q₁, Q₂, ...}
w_BCset_E w_BClist_E Set of angular velocities in frame B for the frames in the set C = {C₀, C₁, C₂, ...}
vset_E vlist_E Set of generic vectors v = {v₀, v₁, v₂} expressed in frame E
mesh_B A mesh whose underlying vertices' positions are from Bo (frame B's origin), expressed in frame B
point_cloud_B A point cloud whose underlying points' positions are from Bo (frame B's origin), expressed in frame B

Next topic: Units of Multibody Quantities