ELAI S.r.l.

A robot arm holds the same weight: why do its motors work differently?

From leverage to the Jacobian: a checked example explains torque, link weight and posture-dependent load limits, without invented hardware tests.

A robot arm holds the same weight: why do its motors work differently?

Weight does not tell the whole story

Holding a bottle close to your body and holding it at arm’s length feel different, even though its mass is unchanged. Something similar happens in an industrial robot: payload expressed in kilograms alone does not explain how hard individual joints must work. Our question is concrete: how does the torque needed to hold a part still change with arm posture? By the end we will calculate it in a simple model and understand why one payload number cannot replace task analysis.

Abstract. We develop a planar two-joint arm, first with massless links and then including their weight. We derive torques from moment balance and connect them to the Jacobian transpose through virtual work. With a synthetic 2 kg payload, we compare postures, illustrative torque constraints and two configurations reaching the same point. We also check the result by numerically differentiating potential energy. These are executed educational calculations, not robot tests, electrical-consumption estimates or safety assessments.

Before the matrix: force and its lever arm

Mass tells us how many kilograms the payload contains; weight is a force. We assume gravitational acceleration g=9.81 m/s²: mass m=2 kg exerts a downward force mg=19.62 newtons. Torque, measured in newton metres (N m), describes the tendency to rotate about an axis. For a vertical force, the relevant lever arm is the horizontal distance between the axis and the force’s line of action. It is not generally the full geometric distance from joint to part.

Fix a frame with horizontal x and upward y. The first link has length L₁=0.4 m and the second L₂=0.3 m. q₁ is the shoulder angle from horizontal; q₂ is the elbow angle relative to the first link. The second link’s absolute orientation is therefore q₁+q₂. Positive angles rotate anticlockwise. Trigonometric calculations and derivatives use radians; tables show degrees for readability.

To locate the weight’s action, add the projections of both links. The position of the point payload at the tip is:

x = L₁ cos(q₁) + L₂ cos(q₁ + q₂) y = L₁ sin(q₁) + L₂ sin(q₁ + q₂)

With both angles zero, the arm is horizontal: x=0.7 m and y=0. The weight has a 0.7 m lever arm about the shoulder and a 0.3 m lever arm about the elbow. Actuators must therefore provide 19.62×0.7=13.734 N m and 19.62×0.3=5.886 N m to balance it. The torques do not simply split the weight: each joint must balance the moment of all forces acting on downstream links.

From infinitesimal motion to torque

Lever arms work well here. To extend the calculation to forces that are not purely vertical, introduce the Jacobian J: a matrix describing how small angle changes produce small tip displacements. Each column tells us what happens when only one joint moves. Differentiating x and y with respect to q₁ and q₂ gives:

J = [ −L₁ sin(q₁) − L₂ sin(q₁+q₂) −L₂ sin(q₁+q₂) ] [ L₁ cos(q₁) + L₂ cos(q₁+q₂) L₂ cos(q₁+q₂) ] δp = J δq

δq contains two angular changes in radians and δp two displacements in metres. J therefore has coefficients in metres per radian. In the horizontal posture, for example, a small shoulder rotation raises the tip by approximately 0.7 times the angle; the same elbow rotation raises it by approximately 0.3 times the angle. “Small” matters: this is a local relationship, not a direct calculation of a finite sixty-degree rotation.

Now ask which torque corresponds to a supporting force F applied by the robot. For a virtual displacement, meaning an imagined infinitesimal movement, work at the tip is Fᵀδp and work at the joints is τᵀδq. The symbol ᵀ denotes transpose and here allows summing component products. In the ideal lossless model these works are equal. Substitute δp=Jδq and require equality for every δq:

τᵀδq = FᵀJδq τ = JᵀF F = [0, mg]ᵀ

Here F is the upward force balancing weight, not the downward weight itself: swapping them changes the sign. Each torque combines force components with the corresponding possible displacements. For vertical force, this recovers the horizontal lever arms. Lynch and Park explain the general relationship in Modern Robotics, section 5.2; our development and the following numbers concern only this declared planar model.

The arm must also support itself

The first calculation ignored link masses. Add a uniform first link of mass m₁=1.5 kg and a second of mass m₂=1 kg. Uniform means each centre of mass is halfway along its link. At the elbow, the second link’s weight acts with lever arm L₂ cos(q₁+q₂)/2; at the shoulder, both links contribute. Let G denote the torques needed to support the arm alone:

G₁ = g[m₁(L₁/2)cos(q₁) + m₂(L₁ cos(q₁) + (L₂/2)cos(q₁+q₂))] G₂ = g m₂(L₂/2)cos(q₁+q₂) τ_total = G + Jᵀ[0, mg]ᵀ

In the horizontal posture, G₁=8.3385 N m and G₂=1.4715 N m. Adding the payload gives 22.0725 and 7.3575 N m. The difference matters: considering only the part’s 13.734 N m underestimates the shoulder requirement. These are joint-output torques. They do not automatically equal motor-shaft torques because gearing changes ratios, efficiency and friction. We have not modelled transmissions or brakes.

One posture helps the shoulder, but not the elbow

Set q₁ to 60° and q₂ to −60°. The first link rises while the second remains horizontal because the angles sum to zero. The tip is now at x=0.5 m and y≈0.34641 m. The shoulder sees a shorter horizontal lever arm: payload torque falls to 9.81 N m and link contribution to 4.905 N m, totalling 14.715 N m. The elbow still sees the second link horizontal, so its total remains 7.3575 N m.

q₁, q₂ (°)x, y (m)Total shoulder (N m)Total elbow (N m)
0, 00.7, 022.07257.3575
60, −600.5, 0.3464114.7157.3575
90, 00, 0.700
0, 900.4, 0.314.7150
73.739795, −900.4, 0.311.18347.0632

The third row is a useful limiting case: both links vertical, with weight aligned through the axes. Ideal gravitational torques vanish, but forces still pass through the structure. This does not imply infinite allowable payload: material strength, bearings, instability, deviations from vertical and dynamics lie outside this calculation. In JSON, zeros may appear around 10⁻¹⁵ because of cosine rounding, not as measured physical torque.

Same endpoint, different distribution of effort

The final two rows both reach (0.4, 0.3) m, with the elbow in different positions. The payload-only shoulder contribution is identical, 7.848 N m: its horizontal lever arm is unchanged. But link mass is distributed differently, changing G₁. Total shoulder torque drops from 14.715 to 11.1834 N m while elbow torque rises from zero to 7.0632 N m. We redistributed effort, rather than universally improving the robot.

This comparison constrains only tip position. The second link’s orientation differs between configurations: if the task requires the same tool orientation, a two-joint arm does not necessarily satisfy that extra constraint. Obstacles and joint limits may also eliminate a solution. A torque criterion therefore belongs inside the complete planning problem, not as an isolated shortcut.

Turning a torque constraint into a payload bound

Assume, only for this example, symmetric joint-torque limits of 18 N m at the shoulder and 8 N m at the elbow. These are not specifications of a commercial robot. The horizontal posture with 2 kg exceeds the first limit, whereas (60°, −60°) satisfies both in our static model. To calculate a maximum mass, first subtract the torque needed to support the arm itself.

a₁ = L₁ cos(q₁) + L₂ cos(q₁+q₂) a₂ = L₂ cos(q₁+q₂) |Gᵢ + mg aᵢ| ≤ τ_lim,i m_max = minᵢ [(τ_lim,i − Gᵢ)/(g aᵢ)] (aᵢ > 0, Gᵢ ≥ 0)

aᵢ is the payload’s horizontal lever arm about joint i, in metres. The last line applies to our two cases with positive lever arms and aligned gravity contributions; elsewhere solve the absolute-value inequality rather than blindly dividing by a negative or zero number. Horizontally, the shoulder permits about 1.407 kg and the elbow 2.218 kg: the smaller value governs. In the bent posture, the shoulder permits about 2.670 kg, but the elbow remains at 2.218 kg and becomes the limiting joint.

Synthetic calculations with a 2 kg payload and link masses included. Here the elbow stays straight (q₂=0): both torques decrease towards vertical. Dashed lines are hypothetical limits, not hardware specifications.
Synthetic calculations with a 2 kg payload and link masses included. Here the elbow stays straight (q₂=0): both torques decrease towards vertical. Dashed lines are hypothetical limits, not hardware specifications.

The graph explores a different family from (60°, −60°): q₂ stays zero while the shoulder varies from 0° to 90°. Reading a point means comparing required torque against the same joint’s limit line. The graph says neither that a posture is collision-free nor that the motion to reach it obeys the limits. A feasible equilibrium is a pointwise condition; movement also requires checking the path and dynamics.

An independent check through energy

We can check signs and coefficients through another route. Raising a mass increases potential energy U=mgy. Sum the energy of both links at their centres of mass and that of the payload. Supporting torque is the change in this energy per small joint rotation. With ∂ denoting a derivative with respect to one variable:

U = g[m₁(L₁/2)sin(q₁) + m₂(L₁ sin(q₁)+(L₂/2)sin(q₁+q₂)) + m(L₁ sin(q₁)+L₂ sin(q₁+q₂))] τᵢ = ∂U/∂qᵢ ≈ [U(q+h eᵢ) − U(q−h eᵢ)]/(2h)

eᵢ changes only angle i; h is the small step in radians. The code uses h=10⁻⁶ and compares this central difference with analytical torques, requiring error below 10⁻⁷ N m. The check passes for the five tabulated postures and 91 scan postures. It also checks power equality for force components (3, 19.62) N and joint velocities (0.02, −0.03) rad/s. This is not hardware validation: it numerically checks consistency of the model and implementation.

What to add before using the result on a robot

The model assumes rigid links, a point payload, ideal joints and no acceleration. A real tool has its own mass and centre of mass; an offset part may also apply a moment at the flange. Motion adds inertia and acceleration, along with friction and contact forces. A peak limit is not a torque sustainable over a long duty cycle; our abstract limits were not converted into temperatures or service life. We have therefore not derived a certified payload rating.

Energy requires another distinction: a stationary robot has zero joint velocity and therefore zero mechanical power τᵀq̇, while it may still require torque. Zero electrical consumption does not follow. Calculating it would require the motor, transmission, controller and any brakes. Likewise, low gravitational torque does not establish safety around people: contact, speed, stopping and assessment of the complete application are separate problems.

Answer: geometry and weight distribution matter

The same part requires different torques because its lever arms change and the robot must also support its own links. In our example, shortening the shoulder lever reduces its load while leaving elbow demand unchanged; even reaching the same point with another posture redistributes effort. An AI system proposing grasps or paths should therefore face explicit physical constraints: a geometrically plausible proposal may exceed available torque. This is a possible design integration, not an existing EL-AI feature. The company’s stated interest in industrial and collaborative robotics remains a direction to explore.

The short code computes the first three postures; the full package adds the two solutions for the same point, mass bounds, the scan and energy checks. Each posture takes constant work in this two-joint model; an n-posture scan costs O(n), with O(n) memory because results are stored. There is no random sampling, so a seed is not applicable. The following source supports the general force–torque relationship; data, assumptions and numerical comparisons are explicitly our educational examples.

Bibliography and reproducible code

Kevin M. Lynch, Frank C. Park — Modern Robotics, 5.2: Statics of Open Chains (transcript).

from math import cos, radians
g, L1, L2, m1, m2, payload = 9.81, .4, .3, 1.5, 1., 2.
for angles in [(0, 0), (60, -60), (90, 0)]:
    q1, q2 = map(radians, angles)
    c1, c12 = cos(q1), cos(q1 + q2)
    own1 = g * (m1 * L1/2 * c1 + m2 * (L1*c1 + L2/2*c12))
    own2 = g * m2 * L2/2 * c12
    tau1 = own1 + payload*g*(L1*c1 + L2*c12)
    tau2 = own2 + payload*g*L2*c12
    print(angles, round(tau1, 4), round(tau2, 4))

Code, data, and instructions · JSON. Educational calculations executed with Python 3.14.0; figures with Matplotlib 3.11.2. AI-assisted analysis, without claiming peer review or human review. Original illustrative ImageGen cover: it does not document EL-AI people, premises, or installations. Sources accessed 3 October 2026.