Drake
Spatial Vectors
Collaboration diagram for Spatial Vectors:


This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.

Spatial vectors are 6-element quantities that are pairs of ordinary 3-vectors.

That is, Drake spatial vectors are logically elements of R³×R³, not R⁶; that is, these are not Plücker vectors! However, we can still operate on them as 6-element column vectors so that we don't have to distinguish rotational from translational operations. Elements 0-2 are always the rotational quantity, elements 3-5 are translational. Here are the spatial vectors we use in Drake:

      Spatial: Velocity  Acceleration   Force
---         ---         ---    Eigen access
0 |   |       |   |       |   |
rotation  1 | ω |       | α |       | τ |   .head<3>()
2 |   |       |   |       |   |
---         ---         ---
3 |   |       |   |       |   |
translation  4 | v |       | a |       | f |   .tail<3>()
5 |   |       |   |       |   |
---         ---         ---
Symbol:    V           A           F

Note
A spatial velocity is sometimes called a twist; a spatial force is sometimes called a wrench. These terms have a variety of specific meanings in the literature. For that reason, we generally avoid using them. However, if we use them it will be in the general sense of "spatial velocity" and "spatial force" as defined above rather than more-restrictive definitions from, for example, screw theory.

When we need to refer to the underlying 3-vectors in a spatial vector, we use the following symbols, with English alphabet substitutions for their Greek equivalents:

Code Rotational quantity Code Translational quantity
w ω - angular velocity v linear velocity
alpha α - angular acceleration a linear acceleration
t τ - torque f force

While the rotational component of a spatial vector applies to a rigid body or frame as a whole, the translational component refers to a particular point rigidly fixed to that same body or frame. When assigned numerical values for computation, both subvectors must be expressed in the same frame, which may be that body's frame or any other specified frame. Thus, unambiguous notation for spatial vectors must specify both a point and an expressed-in frame. Motion quantities must also state the reference frame with respect to which the motion is measured.

Example spatial quantity At ExpTypeset Code Full
Body B's spatial velocity in ABo A $$^AV^B$$V_AB V_ABo_A
Same, but expressed in world Bo W $$[^AV^B]_W$$V_AB_W V_ABo_W
B's spatial acceleration in W BcmW $$^WA^{B_{cm}}$$A_WBcm A_WBcm_W
Spatial force acting on body BBcmW $$[F^{B_{cm}}]_W$$F_Bcm_WF_BBcm_W
Spatial force acting on body AQ W $$[F^{A/Q}]_W$$F_AQ_W

In the above table "At" is the point at which the translational activity occurs; "Exp" is the expressed-in frame in which both vectors are expressed. The expressed-in frame defaults to the reference (left) frame and the point defaults to the target (right) frame origin. The "Code" column shows the notation to use in code, using the available defaults; "Full" shows the code notation with the defaults shown explicitly.

For spatial forces we need to identify the body (actually a frame) on which the force is acting, as well as a point rigidly fixed to that body (or frame). When the body is obvious from the point name (such as Bo or Bcm above), the body does not need to be specified again. However, when the body is not clear it should be listed before the point as in the last line of the table above. There it can be read as "the point of body A coincident in space with point Q", where point Q might be identified with a different body. You should use fully-expanded symbols, and helpful comments, if there is any chance of confusion.

Next topic: Spatial Mass Matrix (Spatial Inertia)