Robotics

Series Elastic Actuator

A spring between motor and load that turns force control into position control

A series elastic actuator puts a spring between the motor and the load, so measuring the spring's deflection turns force control into a position-control problem — and the spring absorbs shock, stores energy, and protects the gearbox. Found in legged robots, exoskeletons, prosthetics, and collaborative arms.

  • Core ideaElastic element in series with the drivetrain
  • Force lawF = k · x (Hooke's law on spring deflection)
  • SensingTwo encoders → deflection → force (no load cell)
  • Force bandwidth~20 to 50 Hz typical
  • InventedPratt & Williamson, MIT, 1995
  • Key tradeShock tolerance & clean force vs stiffness & bandwidth

Interactive visualization

Press play, or step through manually. The visualization is yours to drive — try it before reading on.

Open visualization fullscreen ↗

Watch the 60-second explainer

A condensed visual walkthrough — narrated, captioned, under a minute.

How a series elastic actuator works

Start with the problem. You have a motor and a gearbox, and you want it to push with a commanded force — not move to a position, but apply, say, exactly 40 newton-metres of torque, no more, no less. A rigid actuator is terrible at this. The gearbox makes the output incredibly stiff, so the tiniest position error produces an enormous force error. Bolt a load cell on the output and the signal is noisy, the loop wants to go unstable, and any impact hammers the gear teeth.

The series elastic actuator (SEA) does something that looks backwards: it deliberately makes the actuator softer. Between the gearbox output and the load it inserts a known, calibrated spring. Now the only way force reaches the load is by deflecting that spring, and a spring obeys Hooke's law:

F = k · x          (linear SEA: force = stiffness × deflection)
τ = k_θ · Δθ        (rotary SEA: torque = torsional stiffness × angular deflection)

where  x  (or Δθ) = position of motor side − position of load side

Here is the trick that makes the whole field exist. The deflection x is just the difference between two positions — the motor side and the load side. Positions are exactly what encoders measure, cleanly and cheaply. So to command a force, the controller simply commands a spring deflection: drive the motor until the two encoders disagree by the right amount, and the spring delivers the force you wanted. Force control has become position control. The spring is the load cell, and a remarkably good one, because it filters the high-frequency noise that plagues stiff sensors.

The architecture, end to end, is: motor → gearbox → spring → load. The spring also rewrites the actuator's mechanics. It decouples the motor's heavy reflected inertia from the load, so a sudden tug on the output no longer instantly back-drives the rotor. And it converts every impact into a stretch instead of a slam.

The governing physics

Model the SEA as the motor inertia and the load coupled through the spring. The spring force is the central state, and the closed-loop force controller's job is to regulate it. Three relationships do most of the work:

Output force from deflection:     F = k (x_motor − x_load)

Reflected motor dynamics:         m_motor·ẍ_motor = F_motor − k(x_motor − x_load)

Energy stored in the spring:      E = ½ k x²

The single most important design equation is the large-force bandwidth — the highest frequency at which the actuator can deliver a large commanded force. To apply a big force you must stretch a stiff spring by a lot, and the motor has a maximum velocity. Run the motor flat-out trying to track a sinusoidal force command and it eventually can't deflect the spring fast enough:

Large-force bandwidth (motor-velocity-saturated):

  f_max ≈ v_motor,max / ( 2π · F_max / k )
        = (k · v_motor,max) / (2π · F_max)

Read it as: a SOFTER spring (smaller k) must be stretched farther to
make the same force, so the motor runs out of velocity sooner — softer
springs have LOWER large-force bandwidth, not higher. Their payoff is
shock tolerance, force fidelity, and energy storage, not speed.

There is a fundamental tension baked into the spring constant k:

  • Soft spring (low k). Higher force resolution and fidelity, more shock tolerance, more energy storage, more backdrivability. But low joint stiffness — the output sags under load — and lower force and position bandwidth (a soft spring must be stretched farther for the same force, so the motor's velocity limit caps it sooner).
  • Stiff spring (high k). Higher force and position bandwidth and stiffness, approaching a rigid actuator. But worse force resolution (small deflections are hard to read), less shock protection, and a higher, harder-to-damp resonance.

Every SEA also has a structural resonance from the spring and the load mass, lightly damped, around f_r = (1/2π)·√(k/m_load). The force controller must actively damp this mode or the joint rings. This is why SEA force loops typically close at 20–50 Hz while a rigid actuator's force loop can reach hundreds of hertz.

Worked example: sizing the spring for a robot ankle

Design a rotary SEA for a bipedal-robot ankle. The joint must produce up to τ_max = 80 N·m peak. We choose a torsional spring stiffness and check the trade-offs.

Targets:
  τ_max          = 80 N·m  (peak ankle torque)
  k_θ            = 350 N·m/rad   (chosen torsional spring stiffness)
  motor+gearbox output speed limit, v_out = 12 rad/s (post-reduction)

Peak deflection at full torque:
  Δθ_max = τ_max / k_θ = 80 / 350 = 0.229 rad ≈ 13.1°
  → the spring twists 13° at peak load. Big enough to read cleanly
    with a 4096-count encoder (13° → ~150 counts), small enough that
    the joint isn't floppy.

Large-torque bandwidth:
  f_max ≈ (k_θ · v_out) / (2π · τ_max)
        = (350 · 12) / (2π · 80)
        = 4200 / 502.7
        ≈ 8.4 Hz   ← we can command FULL 80 N·m sinusoids up to ~8 Hz

Torque resolution (encoder-limited):
  one encoder count = 2π/4096 = 0.00153 rad
  → torque step = k_θ · 0.00153 = 0.54 N·m  (0.7% of full scale)

The numbers tell the story. An 8.4 Hz full-torque bandwidth is fine for walking (foot-strike content is mostly under 10 Hz) but useless for, say, cancelling a 200 Hz tool vibration — for that you'd want a rigid actuator. Halving k_θ to 175 N·m/rad would double the peak deflection to 26° (better shock absorption, better resolution) but the joint would sag twice as much under load and feel mushy. This single choice — the spring constant — defines the actuator's personality.

SEA vs other actuation strategies

Rigid (stiff) actuatorSeries elastic (SEA)Parallel elastic (PEA)Variable-stiffness (VSA)Direct-drive (quasi-direct)
Spring placementNoneIn series, motor→spring→loadIn parallel with motorIn series, stiffness adjustableNone (low/no gearing)
Force sensingExternal load cell (noisy)Spring deflection (clean)External load cellSpring deflectionMotor current ∝ torque
Shock tolerancePoor — impact hits gearsExcellent — spring absorbsGood at the parallel pointExcellent, tunableGood — low reflected inertia
Position bandwidthHighest (100s of Hz)Lower (spring resonance limit)HighModerateHigh
Force bandwidthHigh but unstable near contact~20–50 Hz, very stableLimited~10–40 HzHigh
Energy storageNoneYes — ½kx² returnedYes — offloads gravity/staticYes, largeNone
Mechanical complexityLowest+1 spring, +1 encoder+1 springHigh — 2 motors / camLow (big motor)
Best forMachine tools, fast precise positioningLegged robots, exos, cobots, prostheticsHopping, gravity compensationThrowing, explosive motion, safetyAgile quadrupeds, drones

Where series elastic actuators are used

System / productApplicationWhy SEA
MIT Series Elastic Actuator (Pratt & Williamson, 1995)The original research platformDemonstrated force control via spring deflection; the founding paper of the field
MIT Spring Flamingo / M2 & UT Austin HumeWalking robotsShock-tolerant legs, energy return at toe-off, compliant ground contact
NASA Robonaut 2 & Valkyrie (R5)Humanoid arms and legsSafe human-rated force control; SEA in nearly every joint
HEBI Robotics X-Series modulesModular robot jointsBuilt-in spring deflection torque sensing, plug-and-play force control
ANYbotics / IIT walking quadrupedsLegged locomotionImpact absorption and torque control on rough terrain
Powered exoskeletons & orthosesGait assistance, rehabComfortable, compliant human interaction; safe by construction
Powered prosthetic ankles/knees (e.g. BiOM-class)Lower-limb prostheticsEnergy storage and return mimics the biological tendon
Collaborative manipulatorsHuman-robot shared workspacesLow output impedance and force limiting prevent crush injuries

The biological parallel is exact: your muscles drive your bones through compliant tendons. A tendon is nature's series elastic element — it stores energy each stride and protects the muscle from impact shock. SEAs are robotics rediscovering the Achilles tendon.

Design trade-offs and how to size the spring

  • Spring constant is the master dial. Soft = compliant, shock-tolerant, high force resolution, low bandwidth, sags under load. Stiff = the opposite. There is no universally right answer; you size k for the task's force-bandwidth and shock spectrum.
  • Spring travel must cover peak force. Peak deflection x = F_max/k has to fit within the spring's linear range and the encoder's resolution. Too little travel and force resolution collapses; too much and the joint is floppy and slow.
  • Match the spring to the impact spectrum. If foot-strikes carry energy up to 10 Hz, the actuator's force loop and the spring resonance must handle that band. Size the spring so the resonance is damped, not excited.
  • Lower reflected inertia is a free benefit. The spring isolates the load from the motor+gearbox inertia. This is what makes SEAs feel light and backdrivable compared to a rigid geared joint of the same ratio.
  • Energy storage cuts power demand. In cyclic tasks (walking, hopping), the spring returns ½kx² each cycle, so the motor doesn't have to source all the work — a real efficiency win documented in legged-robot and prosthetic literature.

Failure modes and common pitfalls

  • Unmodelled spring resonance. The spring-load pair is a lightly damped second-order mode. Close a high-gain force loop without damping it and the joint sings and goes unstable. Real SEA controllers (Pratt's original used velocity feedback for damping) explicitly add damping around this mode.
  • Spring sized too stiff. Designers nervous about "floppiness" pick a stiff spring, then discover the deflection at operating force is only a few encoder counts — force resolution and shock tolerance both evaporate, and the SEA degrades into a noisy rigid actuator. Verify peak deflection is many encoder counts.
  • Spring sized too soft. The opposite error: the joint can't hold position under load, position bandwidth craters, and the actuator can't deliver fast force transients. The robot feels mushy and slow.
  • Spring nonlinearity and hysteresis. If the spring isn't linear (or has friction/hysteresis), F = kx no longer holds and your "force sensor" lies. Use well-characterized linear springs (custom torsion elements, planar-flexure springs) and calibrate.
  • Spring fatigue. The spring cycles every stride — millions of cycles over a robot's life. An under-rated spring fatigue-cracks; this is a real life-limiting component, designed against with proper fatigue margins (see fatigue failure).
  • Treating an SEA like a rigid actuator. The most common conceptual pitfall: expecting hundreds-of-hertz position bandwidth and perfect stiffness. If you need those, you chose the wrong actuator — use a rigid or quasi-direct drive.

Common misconceptions

  • "The spring makes it weaker." No — the spring doesn't limit peak force (the motor and gearbox set that). It limits how fast large force can change, and it changes how force is sensed and how shocks propagate. Steady-state force capacity is unchanged.
  • "You still need a load cell." No — that's the whole point. Two encoders plus a calibrated spring constant give you torque directly. The spring replaces the load cell.
  • "Softer is always safer and better." Only up to a point. Too soft and the robot can't stand up or track motion; the spring must be matched to the task, not minimized.
  • "SEA and variable-stiffness actuators are the same." A standard SEA has a fixed spring. Variable-stiffness actuators add a second mechanism to change the spring constant on the fly — far more complex, used when you need both soft and stiff behavior in one joint.
  • "It's just a shock absorber." Shock absorption is one benefit, but the defining purpose is turning force control into position control through clean deflection sensing. A pure damper (shock absorber) dissipates energy; an SEA spring stores and returns it.

Frequently asked questions

Why does adding a spring make force control easier?

A stiff actuator must measure force directly, and force sensors are noisy and expensive to control because any tiny position change produces a huge force change. A series elastic actuator puts a known, soft spring in the path, so output force equals spring stiffness times spring deflection (F = k·x). Deflection is just a difference of two positions, which a cheap encoder measures cleanly. The controller now commands a spring deflection — a position-control problem — and force comes out as a clean, well-behaved consequence.

What is the bandwidth limit of a series elastic actuator?

The large-force bandwidth is capped by how fast the motor can stretch the spring at its maximum velocity. It is roughly f_max = v_motor_max / (2·π·F_max/k), the frequency at which the motor runs out of velocity to keep deflecting the spring against a large force command. A softer spring raises shock tolerance and force fidelity but actually lowers both force and position bandwidth (it must be stretched farther for the same force, so the motor's velocity limit bites sooner), and it lowers joint stiffness. Typical SEA closed-loop force bandwidth lands around 20 to 50 Hz, far below a rigid actuator's hundreds of hertz, which is why SEAs are wrong for high-frequency vibration cancellation.

What is the difference between a series elastic actuator and a rigid actuator?

A rigid actuator couples the motor and gearbox directly to the load, giving high position bandwidth and stiffness but reflecting the full gearbox inertia and transmitting every shock straight into the gear teeth. A series elastic actuator inserts a spring, which lowers reflected inertia, tolerates impact (a foot-strike or a collision is absorbed by spring deflection instead of shattering teeth), and enables clean force sensing — at the cost of lower position bandwidth and a structural resonance you must control around.

How does a series elastic actuator measure force without a force sensor?

It measures force indirectly through the spring. Two encoders read the angle (or position) on each side of the spring; their difference is the spring deflection. Multiply deflection by the calibrated spring stiffness and you have output force or torque directly from Hooke's law — no strain-gauge load cell needed. The spring is the load cell. A well-characterized SEA spring resolves torque to a few percent of full scale, and because the spring softens the signal, the measurement is far less noisy than a stiff load cell mounted in a rigid joint.

Why do walking robots use series elastic actuators?

Legged robots slam their feet into the ground thousands of times per walk. A rigid geartrain takes that impact as a sharp torque spike that can chip gear teeth and saturate the motor; the SEA spring absorbs the shock, spreading the impulse over time so the peak force the gearbox sees drops dramatically. The spring also stores energy at heel-strike and returns it at toe-off, improving walking efficiency, and lets the controller render a soft, ground-compliant leg. MIT's Spring Flamingo and UT Austin's Hume, and many exoskeletons, were built around exactly this.

What are the downsides of a series elastic actuator?

The spring is a double-edged sword. It limits position bandwidth and large-force bandwidth, adds a lightly damped resonance the controller must actively damp, costs you stiffness (the joint can never be perfectly rigid), and adds mass, volume, and one more failure point. A spring sized too soft makes the joint floppy and slow; too stiff and you lose the shock tolerance and clean force sensing that justify the SEA in the first place. Choosing the spring constant is the central design trade.