Wrenches: combine force, moment, and power across frames

Calculate a force's moment about a chosen origin, include a free couple, and transform a moment-first wrench between frames. Use a worked planar load to check the inverse-transpose rule and power invariance.

By 14 min read

What you will learn

  • Calculate the moment of a point force about a specified origin.
  • Distinguish a free couple, a point force, and a zero wrench.
  • Transform a moment-first wrench with a consistent frame convention.
  • Check power using a wrench and twist expressed in matching coordinates.
  • Explain the sign difference between external and robot-applied contact loads.

Before you start

A wrist sensor can report a different moment after you move its measurement into a tool frame. The physical load can stay exactly the same. The moment changes because the new frame measures it about a different origin.

A wrench combines force and moment into one six-component description of a rigid body's applied load. This lesson builds that description from a point force and a free couple, changes its reference frame, and checks the result through mechanical power.

State the force and its reference origin

Let a force f act at position q, measured from a chosen origin. Its moment about that origin is q × f. With q in meters and f in newtons, the moment has units of newton-meters, written N·m.

The cross product determines both magnitude and direction. Its magnitude is ‖q‖‖f‖sin α, where α is the angle between q and f. Equivalently, use the force magnitude times the perpendicular distance from the origin to the force's line of action.

In a right-handed x-y plane, +z points out of the page. The signed moment is:

m_z = qₓfᵧ − qᵧfₓ

Positive m_z corresponds to a counterclockwise moment; negative m_z corresponds to clockwise. This sign describes the load's rotational tendency. The body's actual acceleration also depends on its inertia, constraints, and other loads.

A point force's moment depends on the reference origin. Sliding its application point along its own line of action preserves the moment: (q + λf) × f = q × f, with λ chosen so λf has length units. Moving the force off that line generally changes the moment.

Add a free couple

Two equal and opposite forces on distinct parallel lines can produce zero net force and a nonzero moment. This load is a couple. For forces f and −f at q₁ and q₂, their combined moment is:

c = q₁ × f + q₂ × (−f) = (q₁ − q₂) × f.

Changing the reference origin shifts both q₁ and q₂ equally, so their difference stays the same. A couple's moment is therefore independent of the reference origin in an ideal rigid-body model. Its vector coordinates still rotate when the coordinate axes rotate. The University of Illinois Mechanics Reference explains force moments and couples.

For example, an upward 2 N force at (1, 0) m and a downward 2 N force at (0, 0) m give zero net force and a +2 N·m couple. The couple remains +2 N·m about every planar reference origin.

With one point force and an additional free couple c, the total moment is:

m = q × f + c

For several applied forces, sum their forces and moments about the same origin. The resulting wrench records their combined effect on rigid-body motion. It does not retain the full contact distribution or predict local stress and deformation.

Pack the wrench and name its frame

We use moment-first column coordinates:

F = (m, f),   V = (ω, v)

The first three entries of F use N·m; the last three use N. The matching twist is angular first. Some software uses a different ordering, so the array length alone does not identify a convention.

Choose a transform T_ab = [R, p; 0, 1] that maps coordinates from frame b into frame a:

q_a = Rq_b + p.

Here R is a proper rotation, and p is the position of origin b expressed in a. The moments m_a and m_b refer to their respective frame origins. The forces f_a and f_b describe the same physical force in different axes.

The experiment uses the planar restriction F = (m_z, f_x, f_y) and V = (ω_z, v_x, v_y). Both frames share a +z direction, while b can rotate within the plane and use a different origin. All changes describe one instantaneous physical configuration.

Transform force and moment together

Force components rotate as f_a = Rf_b. Substitute q_a = Rq_b + p into the moment equation and rotate the free couple as c_a = Rc_b. Because proper rotations preserve cross products:

m_a = (Rq_b + p) × Rf_b + Rc_b = Rm_b + p × f_a.

This gives both directions of the coordinate change:

f_a = Rf_b,   m_a = Rm_b + p × f_a
f_b = Rᵀf_a,   m_b = Rᵀ(m_a − p × f_a)

The extra cross product accounts for the changed moment arm. Rotating m and f separately works when the origins coincide. It can miss a moment when the origin moves.

The adjoint lesson gives V_a = Ad_T V_b for T = T_ab. The corresponding wrench rule uses the inverse transpose:

F_a = Ad_T⁻ᵀ F_b,   F_b = Ad_Tᵀ F_a

Here Ad_T⁻ᵀ means (Ad_T⁻¹)ᵀ. It is also Ad_(T⁻¹)ᵀ. These operations act on the adjoint matrix; the six-component wrench does not multiply directly by the four-by-four pose T.

Modern Robotics derives the wrench transformation from its pairing with a twist. That pairing provides a practical check on the signs and transpose.

Pair a wrench with its matching twist

For an applied force f, a point velocity q̇, a free couple c, and angular velocity ω, the delivered mechanical power is P = f · q̇ + c · ω. Rigid motion gives q̇ = ω × q + v. Substituting and rearranging the scalar triple product yields:

P = f · q̇ + c · ω
P = (q × f + c) · ω + f · v = FᵀV

Both terms have power units: N·m times rad/s and N times m/s produce watts, with radians dimensionless. The twist's v is its velocity-field component at the chosen origin. It generally differs from q̇ at the force point.

Using V_a = Ad_T V_b gives F_aᵀV_a = F_aᵀAd_T V_b = (Ad_TᵀF_a)ᵀV_b. Thus the wrench rule above preserves F_aᵀV_a = F_bᵀV_b for every twist. Both descriptions refer to the same load and motion; mixing F_a with V_b has no such guarantee.

This is coordinate invariance for a matching physical wrench and twist. Changing the physical motion can change power. Positive power means the applied load supplies mechanical power to the chosen motion; negative power means it removes power.

The raw Euclidean norm of the six wrench coordinates has no comparable guarantee. Moving the origin can change the moment, and an unweighted sum of squared N and N·m components mixes units. A force vector's length remains unchanged under rotation; that narrower fact does not make the combined wrench norm invariant under a general frame change.

Work through two descriptions of one load

Apply f_a = (2, 1) N at q_a = (1, 1) m, with c_z = 0.5 N·m. The moment about a is:

m_a = 1 × 1 − 1 × 2 + 0.5 = −0.5 N·m.

Place origin b at p = (1, 0) m and rotate its axes +90° from a. Since Rᵀ(x, y) = (y, −x) for this rotation:

f_b = (1, −2) N,   q_b = Rᵀ(q_a − p) = (1, 0) m.

The direct moment calculation gives m_b = 1 × (−2) − 0 × 1 + 0.5 = −1.5 N·m. The coordinate rule agrees: m_b = m_a − (pₓfᵧ − pᵧfₓ) = −0.5 − 1 = −1.5. A planar rotation leaves the scalar z component unchanged.

Choose the hypothetical instantaneous twist V_a = (1, 0.5, −0.25), with angular rate in rad/s and linear entries in m/s. The velocity field at origin b is v_a + ω × p = (0.5, 0.75). Rotating that vector into b gives:

V_b = (1, 0.75, −0.5).

Now check power in both frames:

P_a = (−0.5)(1) + (2)(0.5) + (1)(−0.25) = 0.25 W.

P_b = (−1.5)(1) + (1)(0.75) + (−2)(−0.5) = 0.25 W.

At the force point, q̇_a = (−0.5, 0.75) m/s. The force supplies 2(−0.5) + 1(0.75) = −0.25 W, while the couple supplies 0.5 × 1 = 0.5 W. Their total is again 0.25 W.

Move the reference frame and compare power

The force point and V_a stay fixed. Four sliders control frame b and the free couple; a selector changes the applied force. The diagram shows the physical points in frame a, while the readouts also express them in b.

Interactive experiment

Represent one applied load about two origins

The force acts on a rigid body at q_a = (1, 1) m. Change the reference frame, point force, or free couple. Positive moments point along +z, out of the page.

90 °
1 m
0 m
0.5 N·m

T_ab maps frame-b coordinates into frame a. Changing only the frame changes the description of the same load at one instant. Choosing a different force or couple changes the physical applied load. Each preset restores its case from the defaults.

  • Black square: origin a
  • Blue ring: origin b
  • Amber dot: force point q
  • Amber arrow: applied force
  • Black solid arrow: x_b; dashed: y_b
One applied force and two reference origins in frame aThe force acts at q_a = (1, 1) meters. Frame b's origin is (1.000000, 0.000000) meters. Its x axis is solid and its y axis is dashed. The point force is (2.000000, 1.000000) newtons, with a separate arrow display scale of 0.25 grid meters per newton. The free couple is reported separately. Frame changes preserve the physical applied load.-0.3-0.50.80.61.91.7xy
Position axes use meters in frame a, with equal horizontal and vertical scales. Bounds follow the visible geometry. The force arrow uses a separate display scale: 1 N occupies the length of 0.25 m on the grid. Its tip is a drawing endpoint. Frame-b direction arrows each span 0.6 m on the grid.

Dotted lines connect the reference origins to q. The free couple is reported separately: positive, counterclockwise. In this planar model its z component stays the same across frames.

The fixed hypothetical motion is V_a = (1, 0.5, −0.25): angular rate in rad/s, followed by the linear twist components in m/s. It gives point velocity q̇_a = (−0.5, 0.75) m/s. V_b describes this same motion in frame b.

Moment about origin a (N·m)
-0.500000
Force f_a (N)
(2.000000, 1.000000)
Moment about origin b (N·m)
-1.500000
Force f_b (N)
(1.000000, -2.000000)
Force point q_b (m)
(1.000000, 0.000000)
Free couple (N·m)
0.500000
Twist V_a
(1.000000, 0.500000, -0.250000)
Twist V_b
(1.000000, 0.750000, -0.500000)
Power in frame a (W)
0.250000
Power in frame b (W)
0.250000
Point-force plus couple power (W)
0.250000
Power difference (W)
0.000000
Load type
Force and free couple

The same applied load has different moments about the two origins. Matching wrench and twist coordinates give the same power.

A planar wrench packs (m_z, f_x, f_y); its matching twist packs (ω_z, v_x, v_y). Power difference is the absolute difference between the two frame calculations. Values show six decimals; displayed zeros can hide floating-point roundoff.

Choose Rotate coordinates only to keep the origins together. The force components change, while the planar moment stays the same. Choose Origin at force point to make q_b zero. The point force then contributes zero moment about b, leaving exactly the free couple.

Choose Pure couple to remove the point force while retaining a moment. Moving the origin has no effect on that moment. Zero wrench removes both contributions. Zero force alone does not establish zero wrench.

The Opposite applied load preset reverses both the point force and the free couple while retaining the chosen motion. Power changes from +0.25 W to −0.25 W. Frame changes preserve the power of one load; reversing the physical load changes it.

The amber arrow uses its own stated display scale. Its endpoint does not locate another material point. The free couple appears numerically because it has no unique application location in this rigid-body model. The experiment compares coordinates and instantaneous power; it does not simulate acceleration under the load.

Keep applied-load signs and model limits explicit

A force-torque measurement needs its axes, moment reference point, units, component order, and applied-load sign. Transforming a wrist measurement to a tool tip requires the origin-shift term as well as the rotation. Sensor calibration and the choice of which body receives the load are separate parts of that interpretation.

Our F describes a load applied to the body. At a contact, the robot's load on the environment is the opposite of the environment's load on the robot, when both use matching axes and a common moment reference point.

For an ideal static robot with other loads omitted, an external wrench F_ext contributes generalized joint load JᵀF_ext. Balancing it requires τ_act = −JᵀF_ext. If F_out = −F_ext instead denotes the wrench the robot applies outward, the same statement becomes τ_act = JᵀF_out. Modern Robotics states its balancing-wrench convention explicitly.

The robot statics lesson develops that balance. The space and body Jacobians lesson shows how to choose a matching velocity map. Using a body-frame wrench with a space-frame Jacobian generally breaks the pairing.

The same conventions matter when training a model to estimate contact loads. Labels from different sensor origins can contain different moments for the same physical load. A loss that combines force and moment errors needs explicit unit-aware weighting or a chosen length scale. A resultant wrench also leaves the local pressure and stress distribution unspecified.

Reproduce the calculation in Python

This Python 3 example uses the standard library. It transforms the load, checks the moment directly at the transformed point, and compares three power calculations. Printed planar wrenches use (m_z, f_x, f_y); printed twists use (ω_z, v_x, v_y).

from math import cos, sin, pi

def rotate(angle, xy):
    c, s = cos(angle), sin(angle)
    x, y = xy
    return (c*x - s*y, s*x + c*y)

def cross2(q, force):
    return q[0]*force[1] - q[1]*force[0]

def dot(a, b):
    return sum(x*y for x, y in zip(a, b))

def formatted(values):
    return '(' + ', '.join(
        f'{0.0 if abs(x) < 0.5e-6 else x:.6f}' for x in values
    ) + ')'

q_a, f_a, couple = (1.0, 1.0), (2.0, 1.0), 0.5
p, angle = (1.0, 0.0), pi / 2
omega, v_a = 1.0, (0.5, -0.25)
m_a = cross2(q_a, f_a) + couple
f_b = rotate(-angle, f_a)
q_b = rotate(-angle, (q_a[0]-p[0], q_a[1]-p[1]))
m_b = m_a - cross2(p, f_a)
assert abs(m_b - (cross2(q_b, f_b) + couple)) < 1e-12
v_b = rotate(-angle, (v_a[0]-omega*p[1], v_a[1]+omega*p[0]))
power_a = m_a*omega + dot(f_a, v_a)
power_b = m_b*omega + dot(f_b, v_b)
q_dot = (v_a[0]-omega*q_a[1], v_a[1]+omega*q_a[0])
point_power = dot(f_a, q_dot) + couple*omega
assert abs(power_a - power_b) < 1e-12
assert abs(power_a - point_power) < 1e-12
print('Wrench a:', formatted((m_a, *f_a)))
print('Wrench b:', formatted((m_b, *f_b)))
print('Point in b:', formatted(q_b))
print('Twist b:', formatted((omega, *v_b)))
print(f'Power in a: {power_a:.6f} W')
print(f'Power in b: {power_b:.6f} W')
print(f'Point force plus couple: {point_power:.6f} W')

Expected output:

Wrench a: (-0.500000, 2.000000, 1.000000)
Wrench b: (-1.500000, 1.000000, -2.000000)
Point in b: (1.000000, 0.000000)
Twist b: (1.000000, 0.750000, -0.500000)
Power in a: 0.250000 W
Power in b: 0.250000 W
Point force plus couple: 0.250000 W

Change p or angle while keeping the applied force, couple, and V_a fixed. The wrench and twist components in b can change, while all three power calculations continue to agree within floating-point precision.

Try it yourself

Exercise 1. Apply f_a = (0, 3) N at q_a = (2, 0) m, with no free couple. Put origin b at the force point and rotate its axes +90°. Find F_a and F_b in planar moment-first order. For V_a = (1, 0, 0), find V_b and compare the two power calculations.

Show solution 1

The moment about a is 2 × 3 = 6 N·m, so F_a = (6, 0, 3). Since q_b = (0, 0), the moment about b is zero. Rᵀ rotates the force to (3, 0), giving F_b = (0, 3, 0).

The velocity of origin b is (0, 2) m/s in a. Rotating into b gives (2, 0), so V_b = (1, 2, 0). Power is 6 × 1 = 6 W in a and 3 × 2 = 6 W in b. The angular and linear terms redistribute across origins while the total agrees.

Exercise 2. Two forces form the +2 N·m planar couple described earlier, with zero net force. Move the reference origin to (5, −3) m and rotate its axes +90°. What is the new planar wrench? If the body's angular velocity is −0.5 rad/s, how much power does the couple deliver? What happens to power when angular velocity is zero?

Show solution 2

The pure couple has F = (2, 0, 0) in both planar frames. The origin change contributes no extra moment because the net force is zero. Rotation about z preserves the signed z moment.

Power is 2 × (−0.5) = −1 W, so the couple removes power from this motion. At zero angular velocity, its power is zero even if the body translates. The nonzero couple still exists; zero instantaneous power does not establish a zero load or static balance.

Continue with robot statics to map an applied wrench into joint loads and calculate the actuation that balances it.

Sources and further study