Force / Impedance Control
Force / Impedance Control is a family of control strategies that regulate the interaction between a robot and its environment rather than just its position. This matters because pure position control becomes dangerous the moment a robot touches something: it will fight any obstacle to reach its target, generating large forces from tiny errors.
The problem with stiff position control
A position controller tries to hit a target pose no matter what. During contact, a 1 mm position error against a rigid surface can demand enormous force, because the controller assumes free space. That is fine for moving through air, but unsafe for assembly (peg-in-hole jams), polishing (the tool gouges), or working near people (a stiff arm does not yield).
Impedance control law
Instead of commanding a rigid position, impedance control commands a force that depends on how far and how fast the robot deviates from a desired motion:
F = K·(x_d − x) + D·(ẋ_d − ẋ)Naming every symbol in words first:
x_d— desired position (where you want the end effector).x— actual position (where it is).ẋ_d,ẋ— desired and actual velocity.K— virtual stiffness: how hard the robot springs back towardx_d. LowK= soft/compliant; highK= stiff.D— virtual damping: how much the robot resists velocity, suppressing bounce.
The robot behaves like a tunable mass-spring-damper attached to its target.
Impedance vs admittance
- Impedance: measure motion, command force. Best for backdrivable, torque-controlled robots (e.g. Franka, many cobots).
- Admittance: measure force, command motion. Best for stiff, position-controlled robots — a force sensor decides how far to move.
Mapping task forces to joints — the Jacobian
A desired task-space force F becomes joint torques through the transpose of the Jacobian:
τ = Jᵀ·FHybrid force/position control
Often you want force in some directions and position in others. Pressing a sponge along a table: control downward force to a setpoint while controlling position as you sweep along the surface.
POSITION CONTROL (stiff) IMPEDANCE CONTROL (springy)
target ● target ● │ rigid link /\/\/\ virtual spring+damper │ │ ext → ● ← arm refuses to move ext → ● ← arm yields, then pushes back force ▲ (huge contact force) force ╲ (gentle, bounded force) │ fights the push softly settles to equilibriumPrerequisites
Worked example: 1-D impedance
A gripper is pushed 2 cm past its target. We compute the restoring force.
- Desired position
x_d = 0.10 m - Actual position
x = 0.12 m(pushed 2 cm beyond target) - Stiffness
K = 500 N/m - Damping
D = 20 N·s/m - Actual velocity
ẋ = 0.05 m/s, desiredẋ_d = 0
F = K·(x_d − x) + D·(ẋ_d − ẋ) = 500·(0.10 − 0.12) + 20·(0 − 0.05) = 500·(−0.02) + 20·(−0.05) = −10 + (−1) = −11 NThe negative sign means the force points back toward the target (−x direction): the robot springs back gently with 11 N, not the unbounded force a stiff position controller would apply.
def impedance_force(x_d, x, xdot_d, xdot, K, D): return K * (x_d - x) + D * (xdot_d - xdot)
F = impedance_force(0.10, 0.12, 0.0, 0.05, K=500, D=20)print(F) # -11.0 (N, pushing back toward x_d)Related Terms
Sources
- Hogan, N. “Impedance Control: An Approach to Manipulation, Parts I–III.” ASME Journal of Dynamic Systems, Measurement, and Control, 1985. (Foundational impedance control paper.)
- Siciliano, B., Sciavicco, L., Villani, L., Oriolo, G. Robotics: Modelling, Planning and Control, Springer, 2009 — Ch. 9, Force Control.
- Raibert, M. & Craig, J. “Hybrid Position/Force Control of Manipulators.” ASME Journal of Dynamic Systems, Measurement, and Control, 1981.
- Franka Emika /
libfrankaCartesian impedance control example, documentation accessed 2026-06-01.