Rigid Body Motions

/Robotics

Contents

Table of Contents

This whole chapter is notation for one simple idea: glue a coordinate frame to every body, then describe each frame relative to another.[*](Primary reference: Modern Robotics: Mechanics, Planning, and Control by Lynch & Park (2017), Chapter 3.) The symbols look heavy, but each one is careful bookkeeping for a plain question. Whenever a definition or formula shows up here, don't try to memorize the symbols. Stop and ask: which frame is this written in, and what is it actually describing? If you can answer that out loud, the way you'd explain it to a friend who has never seen a robot, you understand the material.

The position and orientation of a rigid body together are called its pose. A rigid body is an idealized object where the distance between any two points stays constant no matter what forces act on it. That single constraint collapses an infinite-dimensional space of configurations down to six numbers: three for position, three for orientation.

Pose = position pp + orientation of a body frame {b}\{b\} in a fixed frame {s}\{s\}.

Frames: the language of pose

Telling a robot "the gripper is at (3,1,2)(3, 1, 2)" is not enough. At that one point the gripper could still be upright, tilted, or upside-down. A position fixes a point; it says nothing about which way the body faces.

So we never track a bare point. We rigidly attach a body frame {b}\{b\}, a little set of axes, to the object, and describe it inside a fixed frame {s}\{s\}, the world. The body's pose is both things together: where {b}\{b\}'s origin sits and which way its axes point. A rigid body's state is a frame, not a point.

All frames in robotics are right-handed: curl the fingers of your right hand from x^\hat{x} toward y^\hat{y}, and your thumb points along z^\hat{z}. Positive rotation about an axis follows the same rule: thumb along the axis, fingers curl in the positive direction.

Right-handed frame; positive rotation follows the right-hand rule.

Rigid body motions in the plane

We start in 2D, where everything can be drawn. Every idea here (frames, a rotation matrix, composing motions) returns in 3D with more bookkeeping but no new concepts.

In the plane a pose is three numbers: a position p=(px,py)p = (p_x, p_y) and one orientation angle θ\theta. Rather than carry the bare angle, we record where the body's axes point, as the columns of a matrix:

P=(x^by^b)=(cosθsinθsinθcosθ)P = \begin{pmatrix} \hat{x}_b & \hat{y}_b \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}

Read those columns literally as arrows: the first is the direction of the body's xx-axis, the second its yy-axis, both written in the world's coordinates. The matrix is nothing more exotic than "draw me the body's axes."

Planar body: {b}\{b\} located by p=(px,py)p = (p_x, p_y) and angle θ\theta.

Why carry a whole matrix when the single angle θ\theta holds the same information? Because the bare angle is clumsy to work with. You have to babysit the wrap-around at 360°360° every time you combine two turns, and it is awkward to differentiate when we get to velocities. The matrix has none of those problems: combining turns is just multiplication, its columns automatically encode a valid orientation, and the very same construction becomes a 3×33 \times 3 matrix in 3D with no new ideas.

ExampleReading a planar rotation matrix

For θ=90°\theta = 90°:

P=(0110)P = \begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}

The first column (0,1)(0, 1) is where x^b\hat{x}_b ends up, pointing straight "up" in {s}\{s\}, exactly a quarter-turn. The matrix and the picture agree.

And for θ=0\theta = 0? Without computing: P=IP = I, the identity. The body frame is perfectly aligned with the space frame.

Rotations in 3D

Orientation is the hard half of pose, so it gets its own treatment. The set of all valid 3×33 \times 3 rotation matrices is the special orthogonal group:

SO(3)={RR3×3:RTR=I, detR=1}SO(3) = \{ R \in \mathbb{R}^{3 \times 3} : R^T R = I, \ \det R = 1 \}

The two conditions each forbid a way of not being a real rotation. RTR=IR^T R = I keeps the axes unit-length and perpendicular: the body is not stretched or sheared. And detR=+1\det R = +1 keeps the frame right-handed: the value 1-1 would be a mirror image, turning a right hand into a left hand, which no real motion does.

Three gifts fall out for free:

  1. R1=RTR^{-1} = R^T: undo a rotation by transposing it.
  2. R1R2SO(3)R_1 R_2 \in SO(3): rotations compose into rotations.
  3. Rv=v\|Rv\| = \|v\|: rotating a vector never changes its length.

SO(3)SO(3) has 9 numbers and 6 constraints, so 96=39 - 6 = 3 degrees of freedom, and no singularities, unlike three Euler angles, which always have a configuration where they break down.

Yaw, pitch, roll

In 2D one angle sufficed. In 3D we stack three elementary turns. The common yaw–pitch–roll convention multiplies R=Rz(ψ)Ry(θ)Rx(ϕ)R = R_z(\psi) R_y(\theta) R_x(\phi), with ϕ\phi = roll (about xx), θ\theta = pitch (about yy), ψ\psi = yaw (about zz). The product balloons into a matrix full of sine–cosine products, and it is tempting to stare at it looking for meaning. Don't. Remember what RR is: its columns are still just arrows,

R=(r1r2r3)R = \begin{pmatrix} | & | & | \\ r_1 & r_2 & r_3 \\ | & | & | \end{pmatrix}

where r1r_1 is where the body xx-axis points, r2r_2 the body yy-axis, r3r_3 the body zz-axis, each written in world coordinates. The third column is literally the body's zz-axis after all three turns. No trig insight required.

One matrix, three jobs

A rotation matrix gets used in three different ways, and quietly confusing them is the number one source of sign and order errors:

JobMeaning
DescribeRsbR_{sb} is the orientation of frame {b}\{b\} as seen from {s}\{s\}. Nothing moves.
Change languagevs=Rsbvbv_s = R_{sb} v_b: the same arrow, re-written from {b}\{b\}'s numbers into {s}\{s\}'s numbers.
OperateRvRv actually rotates vv into a new arrow. The body really turns.

Read the subscripts like fractions: RsbR_{sb} is "ss from bb." Set it beside RbcR_{bc} ("bb from cc") and the bb's cancel: RsbRbc=RscR_{sb} R_{bc} = R_{sc}. That one habit kills most ordering mistakes.

Rotating a frame: in whose axes?

The same RR gives two different results depending on which side you multiply on:

  • Premultiply (Rsb=RRsbR_{sb'} = R \, R_{sb}): the frame turns about an axis of the world.
  • Postmultiply (Rsb=RsbRR_{sb''} = R_{sb} \, R): the frame turns about an axis of the body.

Think of giving someone directions. Multiplying on the left is "turn toward north," a world instruction. Multiplying on the right is "turn left from where you're facing," a body instruction. Same turn, different reference point.

Same R=Rot(z^,90°)R = \text{Rot}(\hat{z}, 90°), applied in the fixed frame (top) vs. the body frame (bottom).

Try it: rotating a frame

Drag the sliders to rotate a body frame relative to the fixed world frame, and watch the columns of RsbR_{sb} change. The determinant stays at 11 no matter what you do: that's the group structure at work.

3D Rotation Frame

Roll (x^)(\hat{x})
180°
Pitch (y^)(\hat{y})
180°
Yaw (z^)(\hat{z})
30°
30°180°

Rotation Matrix RSO(3)R \in SO(3)

Rsb=[0.8660.5000.0000.5000.8660.0000.0000.0001.000]R_{sb} = \begin{bmatrix} 0.866 & -0.500 & 0.000 \\ 0.500 & 0.866 & 0.000 \\ 0.000 & 0.000 & 1.000 \end{bmatrix}

Properties

det(R)=\det(R) = 1.000000

Mode: Fixed frame rotation

RR is applied relative to the world axes: Rnew=RRoldR_{new} = R \, R_{old}

x^\hat{x} (Roll)
y^\hat{y} (Pitch)
z^\hat{z} (Yaw)

Angular velocity

At any instant a spinning body turns about one axis ω^\hat{\omega} at one rate θ˙\dot{\theta}. Bundle "which way" and "how fast" into a single arrow, the angular velocity:

ω=ω^θ˙R3\omega = \hat{\omega} \dot{\theta} \in \mathbb{R}^3

Each body axis is just a point being dragged around a circle, so its tip moves as x^˙=ω×x^\dot{\hat{x}} = \omega \times \hat{x}. Stack that for all three axes and you get the central identity

R˙=[ωs]R=R[ωb]\dot{R} = [\omega_s] R = R [\omega_b]

where ωs\omega_s is the angular velocity written in the space frame and ωb\omega_b the same motion written in the body frame. Nothing mysterious: it only says every axis is swept around by the same ω\omega.

The angular velocity ω=ω^θ˙\omega = \hat{\omega}\dot{\theta}: spin axis ω^\hat{\omega}, rate θ˙\dot{\theta}.

The skew-symmetric trick

What is that [ω][\omega] bracket? The cross product ω×()\omega \times (\cdot) is a linear operation, so we can write it as a matrix and then use ordinary matrix algebra on rotating motion:

[ω]=(0ω3ω2ω30ω1ω2ω10),ω×v=[ω]v[\omega] = \begin{pmatrix} 0 & -\omega_3 & \omega_2 \\ \omega_3 & 0 & -\omega_1 \\ -\omega_2 & \omega_1 & 0 \end{pmatrix}, \qquad \omega \times v = [\omega] v

This matrix is skew-symmetric: [ω]T=[ω][\omega]^T = -[\omega]. The set of all such matrices is named so(3)so(3), the Lie algebra of SO(3)SO(3). Keep the two worlds straight: lowercase so(3)so(3) holds angular velocities, infinitesimal spins, while uppercase SO(3)SO(3) holds finished rotations. The exponential map bridges them, and that's the next section.

ExampleCan a body spin about several axes at once?

An aircraft can be rolling (about body xx) and pitching (about body yy) at the same instant, so you might measure ω=(2,1,0)\omega = (2, 1, 0) rad/s, with both an xx- and a yy-component. Two separate rotations at once?

No. The components combine into one angular velocity vector. The body is not spinning about two independent axes; it spins about the single axis ω\omega points along, here a line tilted between xx and yy. Just as eastward and northward speeds add into one velocity, rotational components add into one angular velocity. For ω=(1,1,0)\omega = (1, 1, 0) the body instantaneously spins about the diagonal (1,1,0)(1,1,0) axis, not "half about xx, half about yy."

Exponential coordinates and Rodrigues' formula

Here is the whole idea in one sentence: every orientation can be reached by starting aligned, then turning by a single angle θ\theta about a single unit axis ω^\hat{\omega}, like driving a screwdriver. Pick an axis, pick how far to twist.

Those three numbers ω^θR3\hat{\omega}\theta \in \mathbb{R}^3 are the exponential coordinates of the rotation: the direction is the axis, the length is the angle. Three numbers, the bare minimum.

Rotating p(0)p(0) about axis ω^\hat{\omega} by angle θ\theta.

Why R=e[ω^]θR = e^{[\hat{\omega}]\theta}

The claim earns its name in four steps:

  1. A physical model. Spin a vector p(0)p(0) about a fixed unit axis ω^\hat{\omega} at a constant 1 rad/s for θ\theta seconds; let p(t)p(t) trace the tip's path.
  2. The differential equation. The tip's velocity is always perpendicular to both ω^\hat{\omega} and pp, so p˙=ω^×p=[ω^]p\dot{p} = \hat{\omega} \times p = [\hat{\omega}] p.
  3. Solve the linear ODE. This is x˙=Ax\dot{x} = Ax, whose solution is the matrix exponential: p(θ)=e[ω^]θp(0)p(\theta) = e^{[\hat{\omega}]\theta} p(0). So R=e[ω^]θR = e^{[\hat{\omega}]\theta}.
  4. Expand the series. Using the cyclic identity [ω^]3=[ω^][\hat{\omega}]^3 = -[\hat{\omega}], every higher power collapses back onto [ω^][\hat{\omega}] or [ω^]2[\hat{\omega}]^2, and the two bracketed series are exactly sinθ\sin\theta and (1cosθ)(1 - \cos\theta).

The result is Rodrigues' formula:

R=e[ω^]θ=I+sinθ[ω^]+(1cosθ)[ω^]2R = e^{[\hat{\omega}]\theta} = I + \sin\theta \, [\hat{\omega}] + (1 - \cos\theta) \, [\hat{\omega}]^2

Don't let the e[]e^{[\cdot]} scare you. It is not a number raised to a power. It is the machine that takes an axis and angle and hands back the actual rotation matrix. Rodrigues' formula is that machine written out in closed form, so you can compute it by hand with no infinite sum.

ExampleAxis-angle to matrix, by hand

Take ω^=(0,0,1)\hat{\omega} = (0, 0, 1) and θ=30°\theta = 30°. Then

[ω^]=(010100000),[ω^]2=(100010000)[\hat{\omega}] = \begin{pmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \end{pmatrix}, \qquad [\hat{\omega}]^2 = \begin{pmatrix} -1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 0 \end{pmatrix}

Rodrigues gives

R=I+sin30°[ω^]+(1cos30°)[ω^]2=(cos30°sin30°0sin30°cos30°0001)R = I + \sin 30° \, [\hat{\omega}] + (1 - \cos 30°)[\hat{\omega}]^2 = \begin{pmatrix} \cos 30° & -\sin 30° & 0 \\ \sin 30° & \cos 30° & 0 \\ 0 & 0 & 1 \end{pmatrix}

Sanity check: a turn about z^\hat{z} leaves zz alone (third row and column match II) and acts as the planar rotation matrix on xyxy, exactly the 2D case from earlier.

From rotation back to axis-angle: the log

The reverse trip, the matrix logarithm, reads the axis and angle back off any RSO(3)R \in SO(3):

θ=cos1 ⁣(12(trR1)),[ω^]=12sinθ(RRT)\theta = \cos^{-1}\!\left(\tfrac{1}{2}(\operatorname{tr} R - 1)\right), \qquad [\hat{\omega}] = \frac{1}{2 \sin\theta}(R - R^T)

Picture every rotation as a single dot inside a solid ball of radius π\pi. The direction from the center is the rotation axis; the distance from the center is the angle, never more than a half-turn. The center itself is "no rotation." The picture even shows why minimal 3-number representations are always a little awkward: opposite points on the surface (θ=π\theta = \pi) are the same rotation, so the chart quietly wraps around on itself.

SO(3)SO(3) as a solid ball of radius π\pi: a point r=ω^θr = \hat{\omega}\theta is a rotation.
ExampleMatrix to axis-angle, by hand

Take the cyclic rotation that sends x^y^z^x^\hat{x} \to \hat{y} \to \hat{z} \to \hat{x}:

R=(001100010)R = \begin{pmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix}

Angle. Here trR=0\operatorname{tr} R = 0, so θ=cos1(12)=120°\theta = \cos^{-1}(-\tfrac{1}{2}) = 120°.

Axis. With sin120°=32\sin 120° = \tfrac{\sqrt{3}}{2},

[ω^]=13(011101110)ω^=13(111)[\hat{\omega}] = \frac{1}{\sqrt{3}} \begin{pmatrix} 0 & -1 & 1 \\ 1 & 0 & -1 \\ -1 & 1 & 0 \end{pmatrix} \quad\Rightarrow\quad \hat{\omega} = \frac{1}{\sqrt{3}} \begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix}

Sanity check: a 120°120° turn about the body diagonal (1,1,1)(1,1,1) cycles the three axes in turn, exactly the RR we started from.

Try it: axis-angle to rotation matrix

Pick an axis and an angle, and watch Rodrigues' formula produce the matrix. The yellow line is the rotation axis.

Axis-Angle to Rotation Matrix

Angle θ\theta
60°
60°360°
Axis ωx\omega_x
0.00
0.001.00
Axis ωy\omega_y
0.00
0.001.00
Axis ωz\omega_z
1.00
1.001.00
Presets:

Rodrigues' Formula

R=e[ω^]θ=I+sinθ[ω^]+(1cosθ)[ω^]2R = e^{[\hat{\omega}]\theta} = I + \sin\theta \, [\hat{\omega}] + (1 - \cos\theta)\,[\hat{\omega}]^2

Rotation Matrix

R=[0.5000.8660.0000.8660.5000.0000.0000.0001.000]R = \begin{bmatrix} 0.500 & -0.866 & 0.000 \\ 0.866 & 0.500 & 0.000 \\ 0.000 & 0.000 & 1.000 \end{bmatrix}

Skew-Symmetric Matrix

[ω^]=[0.001.000.001.000.000.000.000.000.00][\hat{\omega}] = \begin{bmatrix} 0.00 & -1.00 & 0.00 \\ 1.00 & 0.00 & 0.00 \\ 0.00 & 0.00 & 0.00 \end{bmatrix}

[ω^][\hat{\omega}] is the cross product ω^×()\hat{\omega} \times (\cdot) written as a matrix.

Exponential Coordinates

ω^θ=[0.0000.0001.047]T\hat{\omega}\theta = \begin{bmatrix} 0.000 & 0.000 & 1.047 \end{bmatrix}^{T}

Unit axis: ω^=[0.0000.0001.000]T\hat{\omega} = \begin{bmatrix} 0.000 & 0.000 & 1.000 \end{bmatrix}^{T}

Rotation: θ=60=1.047 rad\theta = 60^{\circ} = 1.047 \text{ rad}

Homogeneous transforms and twists

Rotation handled orientation. A full rigid body motion also translates. So we bolt a rotation RR and a translation pp into one 4×44 \times 4 matrix, the homogeneous transformation:

T=(Rp01)SE(3)T = \begin{pmatrix} R & p \\ 0 & 1 \end{pmatrix} \in SE(3)

Stacking them this way means every trick we already had for rotations keeps working for full pose: compose by multiplying, change frames by multiplying, and the subscripts still cancel: TsbTbc=TscT_{sb} T_{bc} = T_{sc}.

The bottom row (0,0,0,1)(0, 0, 0, 1) is the bookkeeping that makes it happen. To hit a 3D point xx with a 4×44 \times 4 matrix, first pad it to a 4-vector by appending a 11. Then one multiply does rotate-and-translate at once:

(Rp01)(x1)=(Rx+p1)\begin{pmatrix} R & p \\ 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ 1 \end{pmatrix} = \begin{pmatrix} Rx + p \\ 1 \end{pmatrix}

The trailing 11 is preserved, so transforms chain indefinitely. Undoing a pose is not just a transpose: the translation has to be rotated back too:

T1=(RTRTp01)T^{-1} = \begin{pmatrix} R^T & -R^T p \\ 0 & 1 \end{pmatrix}

And the same trio of jobs carries over: one TT can describe a configuration (TsbT_{sb}), change frame by the cancellation rule, or displace a point or frame as an operator.

Every motion is a screw

The Chasles–Mozzi theorem says any rigid displacement at all can be achieved by rotating about some fixed axis while translating along that same axis: a screw motion. However tangled a move looks ("turn a bit, then slide over there"), you can always re-pick the axis so the whole thing becomes one clean screw: twist about a line while sliding along it, exactly like driving a bolt. Pure rotation and pure translation are the two extremes.

A rotation then translation (path 1+2) equals one rotation about a displaced point, a screw.

A screw is set by a point qq on its axis, a unit direction s^\hat{s}, and a pitch hh: how far it advances along the axis per radian turned about it, the threads-per-turn of a bolt. One number sets the whole mix. h=0h = 0 is pure rotation, spin in place. hh \to \infty is pure translation, slide without turning. Everything between is a genuine corkscrew. The resulting transformation is

T=(R(IR)q+hθω^01)T = \begin{pmatrix} R & (I - R)q + h\theta\hat{\omega} \\ 0 & 1 \end{pmatrix}

The twist: velocity of a rigid body

The velocity of a moving frame is a twist V=(ω,v)R6\mathcal{V} = (\omega, v) \in \mathbb{R}^6: the angular velocity ω\omega stacked on a linear velocity vv. It answers two questions about a moving body at one instant: how is it turning (ω\omega), and how is it sliding (vv). It is the velocity twin of the screw.

The subtle part is whose velocity vv is. A rotating body has a different speed at every point, so we cannot quote "the body's speed." Instead vv is the velocity of the body point passing through the frame origin right now, even if no real material sits there. Read a twist as: "spin like ω\omega, and the point at my origin moves like vv." That fixed reference point is the trick that lets twists add and transform cleanly.

The same physical motion has different numbers in {s}\{s\} and {b}\{b\}. The 6×66 \times 6 adjoint of T=(R,p)T = (R, p) converts a twist from one frame to the other:

Vs=[AdTsb]Vb,[AdT]=(R0[p]RR)\mathcal{V}_s = [Ad_{T_{sb}}] \mathcal{V}_b, \qquad [Ad_T] = \begin{pmatrix} R & 0 \\ [p]R & R \end{pmatrix}

It is simply the change-of-frame rule for velocities, the way RR and TT were the change-of-frame rules for vectors and points. Whenever you need a velocity "from the other frame's point of view," the adjoint is the converter.

A chassis pivoting about point rr: the same twist seen in {s}\{s\} and {b}\{b\}.

The steered car above makes the odd convention concrete. The car is really just pivoting about the point rr. Yet the spatial twist reports, as its vsv_s, the velocity of the imaginary chassis point currently at the {s}\{s\} origin, not the velocity of the car's center. Quoting "the velocity at the origin" feels strange the first time, but it is precisely the bookkeeping that lets twists compose. The body twist tells the same story from the driver's seat.

The screw axis: a unit twist

Normalize a twist and you get the unit screw axis S=(ω,v)\mathcal{S} = (\omega, v), where v=ω×q+hωv = -\omega \times q + h\omega. Then any twist factors as direction times speed:

V=Sθ˙\mathcal{V} = \mathcal{S} \dot{\theta}

S\mathcal{S} says which screw you are turning: where the axis is, which way it points, how fast it advances. θ˙\dot{\theta} says how quickly you turn it.

A screw axis: point qq on the axis, unit direction s^\hat{s}, pitch hh.

The screwdriver idea now scales up to full motion. Just as SO(3)SO(3) had ω^θ\hat{\omega}\theta, the group SE(3)SE(3) has SθR6\mathcal{S}\theta \in \mathbb{R}^6: follow the unit screw S\mathcal{S} for an amount θ\theta:

T=e[S]θSE(3)T = e^{[\mathcal{S}]\theta} \in SE(3)

Name a screw, say how far to turn it, and the exponential hands back the finished pose. Today's screws are tomorrow's robot joints: this exact exponential is the engine of the product-of-exponentials forward kinematics in the next chapter.

Try it: screw motion

The screw axis here is vertical, through the yellow point. Turn up the pitch and watch rotation pick up a climb along the axis. Hit animate to watch the frame corkscrew its way through the motion.

Screw Motion Visualization

Rotation θ\theta
90°
90°360°
Pitch hh
0.50
0.502.00
Type: Combined Motion (h = 0.50)

Homogeneous Transform TSE(3)T \in SE(3)

T=[0.0001.0000.0000.5001.0000.0000.0000.5000.0000.0001.0000.7850.0000.0000.0001.000]T = \begin{bmatrix} 0.000 & -1.000 & 0.000 & 0.500 \\ 1.000 & 0.000 & 0.000 & -0.500 \\ 0.000 & 0.000 & 1.000 & 0.785 \\ 0.000 & 0.000 & 0.000 & 1.000 \end{bmatrix}

Screw Parameters

Axis: ω^=[0.000.001.00]T\hat{\omega} = \begin{bmatrix} 0.00 & 0.00 & 1.00 \end{bmatrix}^{T}

Point: q=[0.500.000.00]Tq = \begin{bmatrix} 0.50 & 0.00 & 0.00 \end{bmatrix}^{T}

Angle: θ=90=1.571 rad\theta = 90^{\circ} = 1.571 \text{ rad}

Pitch: h=0.50h = 0.50

Translation: hθ=0.785h\theta = 0.785

The screw axis passes through point qq with direction ω^\hat{\omega}. The body rotates by θ\theta while translating hθh\theta along the axis.

Wrenches

Twists package velocities, angular plus linear, into one 6-vector. Wrenches do the same for forces.

The same force ff does different things depending on where it is applied: push a door at the handle and it swings; push at the hinge and nothing turns. A force alone is an incomplete description of a load. The missing piece is the moment m=r×fm = r \times f, the turning effect of ff applied at point rr about the frame origin. Package both:

F=(mf)R6\mathcal{F} = \begin{pmatrix} m \\ f \end{pmatrix} \in \mathbb{R}^6

A wrench is "a push plus a turn-this-way."

Power pairs them

Notice the pairing: a twist is (ω,v)(\omega, v), a wrench is (m,f)(m, f), both with the angular part first. Their dot product is power:

power=FTV=mTω+fTv\text{power} = \mathcal{F}^T \mathcal{V} = m^T \omega + f^T v

Power is work done per second, a real physical quantity, so it cannot depend on which frame you wrote it in. Hold onto that single fact: it forces the transformation rule. Twists already transform by [AdT][Ad_T], so for the product to come out the same in every frame, wrenches must transform by its transpose:

Fb=[AdTab]TFa\mathcal{F}_b = [Ad_{T_{ab}}]^T \mathcal{F}_a

You never invent a new rule for forces. You take the velocity converter you already built and transpose it. The reason is pure physics: the energy per second has to be the same no matter who is looking, and that demand is exactly a transpose.

ExampleThe hand and the apple

A hand (mass 0.5 kg) holds an apple (0.1 kg) under gravity. Two weights pull straight down: one on the apple (frame {a}\{a\}), one on the hand (frame {h}\{h\}). The wrist sensor (frame {f}\{f\}) feels both, but only once each is spoken in its frame. Convert with the adjoint transpose, then simply add:

Ff=[AdTaf]TFa+[AdThf]TFh\mathcal{F}_f = [Ad_{T_{af}}]^T \mathcal{F}_a + [Ad_{T_{hf}}]^T \mathcal{F}_h

The moment arms ride in through the adjoints, turning a downward pull into a twisting load at the wrist.

Why must both wrenches be in the same frame before adding? Because 6-vectors only add when written in identical coordinates, like adding "3 steps east" to "3 steps forward" only after agreeing on one compass.

A hand holding an apple under gravity: each weight becomes a wrench at the wrist.

Quiz

A rotation matrix RSO(3)R \in SO(3) must satisfy which properties?

Question 1 of 6

Summary

  • A rigid body's state is a frame; pose = position pp + orientation RR.
  • Rotations live in SO(3)SO(3) (RTR=IR^T R = I, detR=1\det R = 1): the inverse is the transpose, and there are no singularities. One RR plays three roles: describe, change language, operate.
  • Angular velocity gives R˙=[ω]R\dot{R} = [\omega]R. Exponential coordinates ω^θ\hat{\omega}\theta and Rodrigues' formula connect axis-angle and matrix in both directions.
  • Homogeneous transforms SE(3)SE(3) bundle (R,p)(R, p); every motion is a screw (Chasles–Mozzi). The twist (ω,v)(\omega, v) is its velocity; the adjoint moves twists between frames.
  • Wrenches (m,f)(m, f) bundle moment and force. They transform by the adjoint transpose because FTV\mathcal{F}^T \mathcal{V} is power, and power can't depend on the frame.

Twists and wrenches are dual 6-vectors paired by power, the same screw geometry, read two ways. This duality runs through all of robot dynamics, and the exponential T=e[S]θT = e^{[\mathcal{S}]\theta} built here is the engine of forward kinematics in the next chapter.