Drake

The frame and body are fundamental to multibody mechanics.

Unless specified otherwise, each frame (also called a coordinate frame) contains a right-handed orthogonal unitary basis and an origin point. Its name is usually one capital letter (e.g., A, B, or C). Shown below is a frame F. Frame F's origin point Fo locates the frame and its basis orients the frame.

     Fz
     ^    Fy          Frame F has origin point Fo and a
     |   /            right-handed orthogonal basis having
     |  /             unit vectors Fx, Fy, Fz.  The basis
     | /              is right-handed because Fz = Fx x Fy.
     o ------> Fx
     Fo

Newton's laws of motion are valid in a non-rotating, non-accelerating "inertial frame", herein called the World frame W (also called Ground frame G or Newtonian Frame N). Any frame with fixed pose in W is also an inertial frame. Drake supports Model frames (inertial frames fixed in W) so a simulation can be built from multiple independent models, each defined with respect to its own Model frame. This corresponds to the <model> tag in an .sdf file.

In unambiguous situations, abbreviated notation uses the frame name to also designate the frame's origin or the frame's basis. For example, if A and B are frames, p_AB denotes the position vector from point Ao (A's origin) to point Bo (B's origin), expressed in frame A (i.e., expressed in terms of unit vectors Ax, Ay, Az). Similarly, w_AB denotes frame B's angular velocity in frame A, expressed in frame A. v_AB denotes the translational velocity of point Bo (B's origin) in frame A, expressed in frame A. V_AB denotes frame B's spatial velocity in frame A, expressed in frame A and is defined as the combination of w_AB and v_AB. See Multibody Quantities for more information about notation.

Each body contains a body frame and we use the same symbol B for both a body B and its body frame. Body B's location is defined via Bo (the origin of the body frame) and body B's pose is defined via the pose of B's body frame. Body properties (e.g., inertia and geometry) are measured with respect to the body frame. Body B's center of mass is denoted Bcm (in typeset as \(B_{cm}\)) and its location is specified by a position vector from Bo to Bcm. Bcm is not necessarily coincident with Bo and body B's translational and spatial properties (e.g., position, velocity, acceleration) are measured using Bo (not Bcm). If an additional frame is fixed to a rigid body, its position is located from the body frame. For a flexible body, deformations are measured with respect to the body frame.

When a user initially specifies a body, such as in a <link> tag of an .sdf or .urdf file, there is a link frame L that may differ from Drake's body frame B. Since frames L and B are always related by a constant transform, parameters (mass properties, visual geometry, collision geometry, etc.) given with respect to frame L are transformed and stored internally with respect to B's body frame.

Notation for offset frame

Sometimes we need a frame that is rigidly attached to a frame F with its basis rigidly aligned to F's basis but with its origin shifted from Fo to a point R. We call that an offset frame and denote this offset frame in typeset notation as \( F_R \). Since code lacks subscripts, we lowercase the point name to make it look more like a subscript as Fr. Recall that we permit frame names and body names to also serve as points (by using their origins). Suppose you would like a frame that is regarded as rigidly attached to frame F but whose origin is coincident with some body B. In this case, create an offset frame Fb whose basis rigidly aligns with F's basis but whose origin is coincident with Bo (B's origin).

Notation example: V_WB \((^WV^B)\) denotes the spatial velocity of a frame B in World W. V_WBp \((^WV^{Bp)}\) denotes the spatial velocity of a frame whose orientation is the same as B but whose origin is offset from Bo to be coincident with a point P. V_WBcm \((^WV^{Bcm})\) denotes the spatial velocity of a frame whose orientation is the same as B but whose origin is located at Bcm (B's center of mass).

If this notation is not sufficient for your purposes, please name the offset frame and use comments to precisely describe the orientation of its basis and the location of its origin.

Next topic: Multibody Quantities