Blog · 2026-07-05 · Servos
The humming, overheating shoulder servo is the signature failure of first robot arms — and it's entirely preventable with arithmetic you can do on paper. Here's the method, then a complete three-joint arm calculated end to end.
Robot arm torque calculations intimidate people because arms look complicated — multiple joints, moving geometry, loads that change with pose. But the calculation reduces to one physical idea applied repeatedly: torque equals weight times horizontal distance from the pivot. Master that idea, adopt one convention (always calculate the worst case), and any arm — two joints or six — becomes a short table of multiplications.
A mass hanging from an arm creates torque at the joint equal to its weight times the horizontal distance to the pivot. Working in kilograms and centimetres delivers the answer directly in kg·cm — the exact unit hobby servos are sold in, no conversion needed:
Torque (kg·cm) = mass (kg) × horizontal distance to pivot (cm)
Two refinements complete the tool. First, a uniform arm segment's own mass acts at its midpoint — a 20 cm segment weighing 100 g loads its joint as 0.1 kg at 10 cm. Second, the horizontal distance shrinks with the cosine of the arm's angle from horizontal: torque demand is maximal with the arm level and near zero pointing straight up. The design convention follows immediately: always size for the fully horizontal, fully extended pose. If the servo holds that, it holds everything.
Each joint must lift everything beyond it — downstream segments, downstream servos, the gripper, the payload — each at its own distance from that joint. So the method is to start at the wrist and walk toward the base, and it produces the fact that shapes all arm design: requirements explode toward the shoulder, because the same masses reappear at ever longer lever arms, joined by the weight of every servo you just specified. This cascade is why arm segments should be light and short, why heavy servos are sometimes mounted at the base with linkages, and why "just add another segment" is never cheap.
Specification: shoulder → 12 cm segment → elbow → 10 cm segment → wrist → 6 cm gripper. Segment masses 60 g and 45 g; gripper 55 g; payload 150 g held at the gripper tip. Assume the elbow servo weighs 55 g (MG996R class) and the wrist servo 14 g (MG90S class) — servo weights matter, as you're about to see. Safety factor 2.0 throughout.
Loads beyond the wrist: gripper (55 g, centre of mass ~3 cm out) and payload (150 g at 6 cm).
T = (0.055 × 3) + (0.150 × 6) = 0.165 + 0.90 = 1.07 kg·cm → × 2 = 2.1 kg·cm
Verdict: a metal-gear micro servo (MG90S, ~2.2 kg·cm) fits — barely. The 9-gram plastic SG90 (1.8 kg·cm) does not, and "barely fits" is exactly where plastic gears strip. Metal gears, always, on load-bearing joints.
Everything beyond the elbow, with distances now measured from the elbow: forearm segment (45 g at its midpoint, 5 cm), wrist servo (14 g at 10 cm), gripper (55 g at 10 + 3 = 13 cm), payload (150 g at 10 + 6 = 16 cm).
T = (0.045 × 5) + (0.014 × 10) + (0.055 × 13) + (0.150 × 16)
= 0.225 + 0.14 + 0.715 + 2.40 = 3.48 kg·cm → × 2 = 7.0 kg·cm
Verdict: standard 10 kg·cm class (MG996R). Notice the payload term already dominates — and it's about to get worse.
Everything, measured from the shoulder: upper-arm segment (60 g at 6 cm), elbow servo (55 g at 12 cm), forearm (45 g at 12 + 5 = 17 cm), wrist servo (14 g at 22 cm), gripper (55 g at 25 cm), payload (150 g at 12 + 10 + 6 = 28 cm).
T = (0.060 × 6) + (0.055 × 12) + (0.045 × 17) + (0.014 × 22) + (0.055 × 25) + (0.150 × 28)
= 0.36 + 0.66 + 0.765 + 0.31 + 1.375 + 4.20 = 7.67 kg·cm → × 2 = 15.3 kg·cm
Verdict: high-torque digital class (DS3218/DS3225, 18–25 kg·cm). The pattern is stark: 2.1 → 7.0 → 15.3 kg·cm across three joints, a 7× spread — and only 55% of the shoulder's static load is the actual payload. The rest is the arm carrying itself. That single observation, visible only through calculation, is the entire discipline of arm design.
Verify each joint's numbers with the Servo Torque Calculator — enter the segment and lump everything downstream into "payload," exactly as done above.
The static calculation assumes the arm moves infinitely slowly. Real arms accelerate — dynamic torque adds to static — and servos deliver less than their label when supply voltage sags under load, which is precisely when all your servos fire at once. A 2.0 factor covers smooth, deliberate motion; use 3.0 for fast pick-and-place, and remember a servo near its torque limit still moving is a servo drawing near-stall current and heating. If your budget servo "works but gets hot," it's telling you the safety factor was 1.2.
The shoulder demands 40 kg·cm and your budget says no. In order of effectiveness: shorten the reach — payload torque scales linearly with total length, and dropping 28 cm to 22 cm cuts the dominant term by 21%; lighten the far end — grams at the gripper cost more than grams anywhere else (this is why good grippers are skeletal); counterbalance — a spring or counterweight behind the shoulder cancels static load so the servo pays only for acceleration; relocate mass — drive the elbow from a base-mounted servo through a linkage, deleting its 55 g from the shoulder's ledger; gear it — a servo through a 2:1 external reduction doubles torque at half speed, using the exact math from Gear Ratios Explained.
No — a servo doesn't lift itself. It appears in the ledger of every joint closer to the base, which is exactly how the elbow servo showed up in the shoulder's sum.
Rotation about a vertical axis fights inertia and friction, not gravity, so static torque demand is small. Any smooth-moving standard servo with a thrust bearing to carry the arm's weight does the job.
Buzzing at hold means the servo is correcting continuously near its limit — drawing current and wearing gears. It's the audible version of an inadequate safety factor.
The method in one line: worst case horizontal, gripper backwards, weight × distance, sum, double. Run each joint through the Servo Torque Calculator, then match the results to real servo classes in Servo Motors Explained.
The safety factor absorbs dynamics for slow arms, but if your arm moves briskly you can sanity-check the acceleration demand directly. A point mass m accelerated along an arc of radius r with angular acceleration α needs torque m × r² × α. Take our shoulder: the 150 g payload at 0.28 m, commanded to sweep 90° (1.57 rad) in half a second, implies α ≈ 2 × 1.57 ÷ 0.25² ≈ 50 rad/s² if done in one smooth acceleration — dynamic torque ≈ 0.15 × 0.28² × 50 ≈ 0.59 N·m ≈ 6 kg·cm on top of the 7.7 kg·cm static load. Suddenly the ×2 factor looks less like caution and more like arithmetic. Two practical consequences: command ramped (trapezoidal) motions rather than instant position jumps — most servo libraries support easing, and it halves peak demand for free — and if a joint must be both strong and fast, that's the signal to move up to serial-bus servos or a geared solution rather than pushing a hobby servo past its dignity.
Before ordering, walk the list: every joint calculated at horizontal full extension with everything downstream included, servo weights in the ledger for all upstream joints, safety factor ≥ 2 (3 for fast motion), metal gears on every gravity-loaded joint, supply sized for all servos peaking together (the arm's worst current moment is the first command after power-on, when every joint slews at once), and one size of margin at the shoulder — it's the joint you'll upgrade first when the project inevitably grows a bigger gripper.
One final habit: keep the joint-by-joint torque table in your build notes. When the project later grows a camera on the wrist or a longer gripper, you update three numbers instead of re-deriving the arm from scratch — and you'll know instantly whether the shoulder's margin survives the addition.