Twist (mechanics) (source code)

= Twist
{disambiguate=mechanics}
{title2=$(\boldsymbol\omega,\mathbf v)$}

= Rigid-body twist
{synonym}

A \b[rigid-body twist] represents an instantaneous <rigid body> <velocity field> by a pair of three-dimensional <vectors>, conventionally ordered $(\boldsymbol\omega,\mathbf v)$. In a stated <reference frame>, $\boldsymbol\omega$ is <angular velocity> and $\mathbf v$ is the velocity field evaluated at that frame's origin. Every point at position $\mathbf x$ has instantaneous <velocity>
$$
\boxed{\mathbf u(\mathbf x)=\mathbf v+\boldsymbol\omega\times\mathbf x.}
$$
The linear component therefore need not be the <center of mass> velocity. Both components must use the same coordinate frame; their physical units also differ.<Modern Robotics: Mechanics, Planning, and Control by Kevin M. Lynch and Frank C. Park>[Section3.3.2, author video Twists (Part1 of2), transcript: six-vector and origin-dependent linear component]{ref}

The formula follows by differentiating the point position $\mathbf x=R(t)\mathbf X+\mathbf p(t)$, where $R$ is a <rotation matrix> and $\mathbf X$ is fixed in the body. The skew-symmetric matrix $\dot RR^T$ acts as the <cross product> with $\boldsymbol\omega$. Hence
$$
\dot{\mathbf x}=\boldsymbol\omega\times\mathbf x+
\underbrace{\dot{\mathbf p}-\boldsymbol\omega\times\mathbf p}_{\mathbf v}.
$$
At the body's chosen origin $\mathbf x=\mathbf p$, this correctly returns $\dot{\mathbf p}$. Moving the reference origin by a fixed <vector> $\mathbf a$, without changing its axes, gives $\mathbf v'=\mathbf v+\boldsymbol\omega\times\mathbf a$, with the same <angular velocity>. The numbers change while the physical <velocity field> is unchanged.

When $\boldsymbol\omega\ne0$, define the <screw pitch (mechanics)> and a point on the instantaneous axis by
$$
h=\frac{\boldsymbol\omega\cdot\mathbf v}{|\boldsymbol\omega|^2},\qquad
\mathbf q=\frac{\boldsymbol\omega\times\mathbf v}{|\boldsymbol\omega|^2}.
$$
The vector triple-product identity gives $\mathbf u(\mathbf q)=h\boldsymbol\omega$. Points on $\mathbf q+\lambda\boldsymbol\omega$ share that axial <velocity>; off-axis points additionally rotate about it. A constant <rigid-body twist> therefore generates a <screw motion>. Zero <angular velocity> instead gives pure <rigid-body translation>, for which these divisions are not defined.

For an original numerical example take $\boldsymbol\omega=(0,0,2)\,\mathrm{rad/s}$ and $\mathbf v=(1,0,0.4)\,\mathrm{m/s}$. At $(0,1,0)\,\mathrm m$ the <velocity> is $(-1,0,0.4)\,\mathrm{m/s}$. The axis passes through $\mathbf q=(0,0.5,0)\,\mathrm m$, with axial speed $0.4\,\mathrm{m/s}$ and <screw pitch (mechanics)> $h=0.2\,\mathrm{m/rad}$. If the twist stays constant for a revolution, the axial advance is $2\pi h\simeq1.257\,\mathrm m$.

A twist describes instantaneous motion; it is not generally a six-coordinate finite pose or its ordinary derivative. Its reference-frame convention matters when using a robot's measured joint rates to predict endpoint <velocity>.