Robotics

Impedance Control

Instead of forcing a robot to follow a trajectory, you give its end-effector a target dynamic personality — a virtual mass, damper, and spring — and let the environment close the loop

Impedance control is a way of programming a robot so that its end-effector behaves like a chosen mechanical system — typically a mass-damper-spring with hand-tuned values — rather than rigidly tracking a position. Introduced by Neville Hogan in 1985, it solves the fundamental dilemma of contact robotics: too stiff and the robot breaks things on touch, too compliant and it is inaccurate. Impedance control mediates between those extremes and is the foundation of every cobot, surgical robot, prosthetic, and exoskeleton that touches the world safely.

  • Foundational paperHogan, 1985
  • Core equationF = M_d ẍ + B_d ẋ + K_d Δx
  • Two variantsPIC · TIC
  • Dual strategyAdmittance control
  • Hero applicationSafe pHRI in cobots

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.

The contact problem

An industrial robot programmed for pure position control is a beautiful machine to watch in free space and a terrifying one to touch. The reason is straightforward. A typical six-axis arm closes its joint loops at kilohertz rates with very high gains, because that is what produces sub-millimetre positioning accuracy. Those same high gains turn the arm into something with the effective stiffness of a concrete column the moment the gripper meets resistance. The controller sees a tiny tracking error, multiplies it by an enormous proportional gain, and commands whatever joint torque is needed to make the error vanish — typically far more than the part being touched can withstand.

The naive fix is to switch to force control: instead of regulating position, regulate the contact force. That works when there is contact to regulate, but it has the symmetric failure. In free space, with no contact force, a force controller has no reference to lock onto; small biases drift, the arm wanders. Hybrid position-force schemes try to switch between the two on a per-axis basis, but the switching itself is a notorious source of instability at the contact transition — the moment when the dynamics of the robot couple discontinuously to the dynamics of the environment.

Impedance control sidesteps the false dichotomy. The control objective is no longer position, nor force, but the relationship between them. The robot is programmed to behave at its end-effector as if it were a particular mechanical system — almost always a virtual mass-damper-spring — and the environment, by determining what force results from what motion, closes the loop. This relocates the question from "what should the robot do?" to "what should the robot feel like?".

Hogan's equation

Neville Hogan introduced the framework in a trilogy of 1985 papers in the ASME Journal of Dynamic Systems, Measurement, and Control. The target end-effector behaviour is the linear second-order system

F_ext = M_d ẍ + B_d ẋ + K_d (x − x_d)

where x is the end-effector pose, x_d is the desired equilibrium, F_ext is the external force from the environment, and (M_d, B_d, K_d) are the designer-chosen virtual inertia, damping and stiffness. Read it as: when the environment pushes on the robot with F_ext, the robot moves as if it were a mass M_d on a damper B_d and spring K_d pulling toward x_d. The robot's real mass, damping and stiffness — which are properties of the mechanism plus its motors — have been replaced by a virtual set chosen by the designer.

The deep idea is that this completely characterises how the robot interacts with anything it touches, because in physics, two systems in contact compose by adding impedance and admittance through Norton/Thévenin duality. If you can specify the robot's end-effector impedance you have specified the contact behaviour, regardless of what the environment turns out to be.

PIC and TIC: two implementations

The same target impedance law admits two very different physical realisations, and the choice between them dominates the robot's behaviour in practice.

VariantInner loopOuter loopBackdrivable?Best for
Position-based (PIC)High-gain joint positionCompute Δx so that target F is achievedNo — position loop overridesIndustrial arms with no torque sensors; soft environments
Torque-based (TIC)Joint torque (current)Compute τ = J⊤ (M_d ẍ + B_d ẋ + K_d Δx)Yes — torque can yield to contactTorque-controlled robots; stiff contact; pHRI
Admittance controlPositionRead F, compute Δx = K_d⁻¹ F (or full 2nd-order)Effectively yes for soft K_dFree-space guidance, soft environments, large industrial arms with retrofitted F/T sensor

Position-based impedance control (PIC) wraps an existing high-stiffness position loop with an outer law that perturbs the position reference based on measured force. PIC is what you get when you bolt a force-torque sensor onto a stock industrial arm and add an outer loop; it keeps the inner servo intact. The drawback is that the robot is never genuinely back-drivable — its mechanical impedance is set by the inner servo, and the outer law can only nudge the reference. Stability against very stiff environments is fragile.

Torque-based impedance control (TIC) commands joint torques directly. The Jacobian transposes the desired Cartesian force into joint torques, and the robot's natural dynamics realise the target inertia by gravity- and inertia-compensation. TIC requires a robot with low-friction joints and accurate torque sensing — exactly what the Franka Emika Panda, KUKA LBR iiwa, and DLR LWR were designed to provide. The reward is genuine mechanical back-drivability: push the robot and it yields like the virtual spring you specified.

Admittance control is the dual. Where impedance control reads motion and produces force, admittance control reads force and produces motion. A force-torque sensor at the end-effector measures F_ext; the controller computes a target Δx via the inverted impedance law and commands that motion through a high-bandwidth position loop. Admittance is the right choice when the environment is soft and the robot is fundamentally position-controlled (a UR5 with a Robotiq FT sensor, say). It loses stability when the environment becomes stiffer than the closed-loop admittance can simulate — a well-known coupled-stability theorem first formalised by Colgate and Hogan in 1988.

A worked example: the virtual spring

Consider a simplified 1-DOF robot — a single sliding joint along x with mass m_r and motor force u. We want the end-effector to behave like a virtual spring of stiffness K_d = 200 N/m anchored at x_d = 0, with virtual damping B_d = 20 N·s/m and virtual mass M_d = m_r (so no inertia shaping required).

The equation of motion of the real robot is m_r ẍ = u + F_ext, where F_ext is the (signed) force the environment applies to the end-effector. Solve for u so that the closed-loop dynamics match the target:

Target:   M_d ẍ + B_d ẋ + K_d x = F_ext
Real:     m_r ẍ = u + F_ext
Set:      u = − B_d ẋ − K_d x   (with M_d = m_r)
Result:   m_r ẍ + B_d ẋ + K_d x = F_ext   ✓

The controller is just a PD law in disguise — but the meaning is different. The "P gain" is the virtual stiffness K_d, in newtons per metre, and the "D gain" is the virtual damping B_d, in newton-seconds per metre. Both have engineering units the user can intuit. Push the robot with one hand: it yields elastically by F/K_d metres, returns to x_d when released, and the rate of return is governed by B_d/(2√(M_d K_d)) — the damping ratio. Tune ζ ≈ 0.7 for a critically-damped return, set K_d high if you want a stiff probe, set K_d near zero if you want direct teaching. Same controller, different personality.

For the multi-DOF Cartesian case the structure is identical, with x ∈ ℝ⁶ for pose, M_d, B_d, K_d as 6×6 symmetric positive-definite matrices, and the joint torque command τ = J⊤(q) F_cmd, where F_cmd realises the impedance law plus an inertia-shaping term. If you want to leave M_d equal to the natural inertia (the easy case), the joint controller is exactly Cartesian PD with gravity compensation.

The stiffness ellipsoid

In 6-D task space, K_d is a symmetric positive-definite matrix. Visualising the 3×3 translational block as an ellipsoid — semi-axes proportional to the inverse square roots of its eigenvalues, oriented by its eigenvectors — gives a geometric picture of the end-effector's directional compliance. The robot is stiff along the short axes of the ellipsoid (high K_d → small displacement per unit force) and compliant along the long axes.

This visualisation is more than aesthetic. For peg-in-hole insertion you want a long ellipsoid aligned with the insertion direction: stiff along the peg (so the robot keeps pushing), soft perpendicular to it (so the peg self-aligns on the chamfer). For polishing a curved surface, you want a flat ellipsoid in the surface tangent plane (compliant against the surface, free to track it) and stiff in the normal (constant downforce). Hogan's framework lets a single robot reshape its ellipsoid online as the task progresses — the same arm becomes a chisel, then a sponge, then a probe.

What torque-controlled hardware made possible

Impedance control was theoretically clean in 1985 but practically marginal until joint hardware caught up. Three generations of robot:

  • 1985–2000. Industrial arms with stiff harmonic-drive joints and current-controlled motors but no joint torque sensing. Impedance control is implemented as PIC layered over the position servo or as admittance control on a wrist-mounted force-torque sensor. Stable against soft environments only.
  • 2000–2010. DLR's Light-Weight Robot III (LWR-III) introduces torque sensors at every joint, low-inertia harmonic drives, and a real-time control bus capable of 1 kHz Cartesian impedance updates. KUKA commercialises it as the LBR iiwa. True torque-based impedance control becomes feasible.
  • 2017+. Franka Emika Panda ships at academic-research price points with seven torque-sensed joints and an open API exposing the Cartesian impedance law directly. Universal Robots makes contact-aware control the default consumer experience in factories. Cobots become a commodity.

The pattern is consistent across the field: every theoretical advance in impedance control was waiting for joint hardware that could sense and command torque cleanly. The reverse is also true — once the hardware existed, the 1985 framework was sitting there ready, with thirty years of stability proofs already written.

Where impedance control shows up

  • Collaborative robots (cobots). Universal Robots UR5/UR10, Franka Emika Panda, KUKA LBR iiwa, Rethink Sawyer. Impedance control gives them their characteristic ability to be backed into without smashing the operator, taught by hand (zero-gravity mode), and stopped by a finger-poke. ISO/TS 15066 quantifies the contact-energy limits a cobot must respect; programmable low K_d makes those limits structural rather than reactive.
  • Surgical robotics. Intuitive Surgical's da Vinci, Stryker's Mako, and most haptics-rendering masters implement variable impedance to filter surgeon tremor, scale forces, and impose virtual fixtures (a high K_d wall a surgeon can lean on but cannot push through). The robot becomes an active mechanical partner with programmable feel.
  • Peg-in-hole and other assembly. Aircraft fastener insertion, electronics connector mating, transmission shaft alignment. Programmable lateral compliance lets a sub-millimetre-clearance peg self-align against its chamfer — replacing decades of dedicated remote-centre-compliance fixtures.
  • Prosthetics. Powered transtibial and transfemoral prostheses (BiOM, Open-Source Leg) modulate ankle/knee impedance through the gait cycle: stiff at heel-strike, compliant during push-off, near-zero stiffness in swing. The result is a prosthesis that feels less like a peg leg and more like the missing limb.
  • Exoskeletons and rehabilitation. Ekso Bionics, ReWalk, Lokomat. Variable transparency — high impedance when the patient needs support, near-zero impedance when they can move unaided — is implemented as a programmable virtual mass-damper-spring whose parameters fade during recovery.
  • Haptic devices. 3D Systems Touch (formerly SensAble Phantom), Force Dimension, Tactile Labs. The entire purpose of a haptic device is to render programmable impedance: feel a virtual wall at one stiffness, a virtual fluid at another. The wall is just K_d switched up by three orders of magnitude.

Stability and the passivity trick

The catch is that not every (M_d, B_d, K_d) the user chooses is stable when the robot couples to an unknown environment. Colgate and Hogan (1988) proved a result that has driven the field ever since: a sufficient condition for stability against any passive environment is that the rendered impedance itself be passive. Roughly, a passive system can only dissipate or store energy, never generate it. For the mass-damper-spring law that boils down to M_d, B_d, K_d all positive — but with additional constraints when implementation discretisation, delay and quantisation are in the loop. The continuous-time intuition (PD gains can be tuned freely) gives way in practice to a discrete-time "z-width" — the achievable range of stable virtual stiffness — that is bounded by sample rate, sensor noise, and damping. Hannaford and Ryu's "passivity observer / passivity controller" (2002) became the standard runtime guard for keeping a rendered impedance inside the safe envelope as user-tunable parameters change.

This is also why TIC is preferred for stiff environments and admittance control for soft ones: the rendered impedance must be smaller than the environment's admittance in the contact frequency band, or coupled instability bursts forth. Designers tune for the worst-case contact they expect to encounter, then add a margin.

Common pitfalls

  • Confusing virtual mass with real mass. M_d in the impedance law is what the environment feels; the real robot inertia M is what the joints must accelerate. Setting M_d ≠ M requires accurate inertia compensation, and the achievable mass-shaping ratio is bounded by torque-bandwidth and friction modelling. Aggressive mass scaling (M_d ≪ M, say 5×) destabilises easily.
  • Ignoring gravity. Gravity is an external force on the robot just like contact, and any impedance law that does not pre-compensate it will droop under its own weight (a low K_d arm sags). Gravity compensation is the first thing implemented in any practical impedance controller.
  • Discretisation in the spring. A high virtual stiffness rendered at a low sample rate is a recipe for instability. The rule of thumb: stable virtual stiffness K_d in N/m scales roughly as f_s × B / something — i.e. damping eats stiffness in the discrete-time stability budget. Running at 1 kHz with high damping is usually fine; 100 Hz with low damping is a buzz.
  • Forgetting the Jacobian singularity. Cartesian impedance is realised by joint torques τ = J⊤ F. Near a kinematic singularity, J⊤ is ill-conditioned and small Cartesian forces become huge joint torques in one direction and zero in the other. Singularity-robust pseudo-inverses, or damped least squares with adaptive damping, are standard add-ons.
  • Hybrid impedance/force mixing. Strict hybrid control tries to do impedance in some directions and force regulation in others — and the switching tends to fight itself at the boundary. Most modern systems pick one strategy (impedance or admittance) and stay there, using virtual fixtures or stiffness reshaping to recover the spirit of hybrid behaviour without the discontinuity.

Frequently asked questions

What is impedance in mechanical terms?

Mechanical impedance is the dynamic relationship between a motion imposed on a system and the force the system produces in response — or, equivalently, between an applied force and the motion that results. For a linear lumped-parameter system, impedance is captured by three numbers: inertia M, damping B, and stiffness K. A rigid wall has infinite impedance (any force, no motion). A free-floating mass in space has zero stiffness (push it, it drifts away). Impedance control gives a robot a programmable choice anywhere along that continuum.

Why does pure position control fail when a robot contacts the environment?

Position control assumes the robot can reach its commanded pose. The moment a stiff robot hits an obstacle, the inner position loop sees a small error and demands more torque — and because typical industrial robots have very high mechanical and servo stiffness, that torque ramps quickly into the kilonewton range. Either the part breaks, the robot stalls, or both. Pure force control has the symmetric failure: in free space, with no contact force to regulate, the controller wanders. Impedance control fixes both by regulating the relationship between force and motion rather than either one alone.

How is impedance control different from admittance control?

They are duals. Impedance control takes motion (position, velocity, acceleration) as input and outputs force — the robot is the impedance. Admittance control takes measured force as input and outputs commanded motion — the robot is the admittance. In practice, impedance control with a torque-controlled robot is naturally back-drivable and stable against stiff environments but limited by joint-torque bandwidth. Admittance control on a position-controlled industrial robot is great for soft environments and free-space guidance but can go unstable when pushed against a wall. Pick the dual that matches the environment you expect to touch.

What is direct teaching and why does it require impedance control?

Direct teaching means physically grabbing the robot and walking its end-effector through a task — instead of programming joint angles in a teach pendant. To make that pleasant, the robot must offer little resistance to the human's hand while still supporting its own weight and not drifting under gravity. Impedance control sets the virtual stiffness K_d near zero, the virtual damping B_d to a small comfortable value, and gravity-compensates internally. The result is the "gravity-free arm" demo every Franka Panda or UR5 cobot ships with — and it is impossible without programmable end-effector dynamics.

What is the stiffness ellipsoid?

In task space, the virtual stiffness K_d is a symmetric positive-definite 6×6 matrix (3 translational + 3 rotational). Visualising the translational 3×3 block as an ellipsoid — semi-axes proportional to the eigenvalues of K_d — gives an intuitive picture of the robot's directional compliance: stiff along the long axis, compliant along the short axis. For peg-in-hole, you point the stiff axis along the peg and leave the lateral axes soft, so the peg can self-align without resisting the chamfer. The ellipsoid can be reshaped online by task — the same robot acts like a chisel one second and a sponge the next.

Why is impedance control essential for collaborative robots?

Cobots share workspace with humans, so a collision must not injure the operator. Safety standards (ISO/TS 15066) bound transferred energy and contact force at every point on the robot. With impedance control, the robot's contact force scales linearly with intrusion depth — F = K_d Δx — so a low K_d gives an intrinsically safe envelope without relying on millisecond-grade collision detection. Franka Emika Panda and UR cobots ship torque-controlled joints precisely so that pHRI (physical human-robot interaction) is mechanically forgiving by construction.

What is a virtual mass, and why would you want one?

M_d in the impedance law is the apparent inertia the environment feels — and it is usually NOT the robot's real inertia. By choosing M_d smaller than the real M, the robot feels lighter than it is; this is how exoskeletons and rehabilitation arms make a heavy mechanism feel almost massless to the user. Larger M_d than reality is used to filter out hand tremor in surgical robots. The cost: with torque-based control, programming M_d ≠ M requires inertia-shaping that depends on accurate cancellation of the real dynamics, and stability margins shrink as |M_d − M| grows.

How does peg-in-hole assembly use impedance control?

Rigid position control of a peg-in-hole task with sub-millimetre clearance is catastrophically sensitive to localisation error — the peg jams on the chamfer at the first sub-millimetre offset. With impedance control, you command a downward motion of the peg with low lateral stiffness and moderate axial stiffness. Contact with the chamfer pushes the peg laterally — the soft K_d in those axes lets it slide; the higher axial K_d keeps pushing it down. The peg self-aligns. This "remote centre compliance behaviour" was the original killer application that motivated Hogan's 1985 paper, generalising the passive RCC device pioneered at Draper Lab.