Friction is the dominant unmodelled effect in geared drives, lead screws and robot joints. It causes stick-slip, tracking lag and steady-state error that a feedback loop can only remove by raising its gain, which erodes stability margins. Friction compensation instead predicts the drag from the axis velocity and adds the opposite torque (or force) to the command, so the feedback loop only has to correct the residual.
The model superposes three effects: Coulomb drag (constant magnitude, opposing motion), viscous drag (proportional to speed) and Stribeck stiction (an extra breakaway level that fades as the axis starts to slide). The ideal curve is discontinuous at zero velocity, so a smooth boundary layer replaces the hard sign function.
For one axis with velocity
-
$F_c$ : Coulomb level, the drag magnitude once sliding. -
$F_s \ge F_c$ : stiction (breakaway) level at near-zero speed. -
$F_v$ : viscous coefficient. -
$v_s > 0$ : Stribeck velocity, the speed scale over which stiction decays into the Coulomb plateau. -
$\delta$ : Stribeck shape exponent, typically 1 (exponential decay) or 2 (Gaussian decay). -
$\varepsilon > 0$ : boundary-layer width replacing$\operatorname{sign}(v)$ . -
$\tau_{max} > 0$ : output cap.
Axes are independent; a multi-axis compensator applies the model to each velocity component with its own parameters.
The bracketed term is the friction level
The result is a feedforward term, not a feedback law. It is added to the controller output,
- Desired velocity gives a noise-free, deterministic command, but cannot see actual sticking, so it mis-compensates when the axis lags the trajectory.
-
Measured velocity tracks the real motion, but passes sensor noise through the boundary-layer slope
$\approx F_s/\varepsilon$ , and closes an extra velocity-feedback path whose delay can excite limit cycles.
In both cases
For fixed
| Case | Time | Space | Notes |
|---|---|---|---|
| All |
|
Cost is dominated by the three transcendental calls; there is no iteration and no dependence on history, so the latency is constant per sample.
Parameters:
| Level |
|||||
|---|---|---|---|---|---|
| 1 | 400 | 1 | 0.1 | 0.6 | |
| 0.01 | 0.04 | 0.001 | 0.789 | ||
| 0.05 ( |
1 | 0.005 | 0.615 |
At high speed the Stribeck term has vanished and only Coulomb plus viscous drag remain. At
-
Boundary layer too narrow.
$\varepsilon \to 0$ recovers$\operatorname{sign}(v)$ , so noise and direction reversals toggle the full$\pm L$ each sample, producing chattering and limit cycles around zero velocity. -
Boundary layer too wide. For
$|v| \lesssim \varepsilon$ the factor$\tanh(v/\varepsilon)$ is well below 1 (0.76 at$|v| = \varepsilon$ ), so slow moves and the breakaway region are under-compensated. -
Over-compensation is worse than under-compensation. An inflated estimate injects energy and can drive the axis on its own, while a low one merely leaves residual error. The clamp at
$\tau_{max}$ bounds this; it should still exceed the true drag at the maximum operating speed, or it truncates the viscous term. -
Parameter validation.
$F_s \ge F_c$ ,$v_s > 0$ ,$\varepsilon > 0$ and$\tau_{max} > 0$ are checked at construction and a violation is a precondition failure. The shape exponent is not checked; it must be positive, since$\delta \le 0$ removes the decay or diverges at$v = 0$ . -
Symmetry. The level depends on
$|v|$ only, and$\tanh$ , the viscous term and the symmetric clamp are all odd, so$\tau(-v) = -\tau(v)$ and$\tau(0) = 0$ exactly. Real drives often have direction-dependent friction, which this model cannot represent. -
Float precision. For large
$|v|/v_s$ the exponential underflows to zero harmlessly, and$\tanh$ saturates to$\pm 1$ ; no cancellation arises. - Clamp breaks linearity. Identification data must be taken where the clamp is inactive.
| Variant | Key Difference |
|---|---|
| Coulomb + viscous only |
|
| Asymmetric friction | Separate parameters per direction of motion; handles direction-dependent drag |
| Karnopp model | Replaces the smooth layer with a velocity dead-zone and a stick state |
| Dahl / LuGre | Dynamic models with internal bristle state; capture presliding and hysteresis at the cost of state and a stiffer ODE |
| Inverse-dynamics term | Same static model folded into a robot inverse-dynamics computation |
- Robot joints and geared servo drives: cancelling joint friction in computed-torque and PD plus gravity controllers.
- Lead-screw and linear stages: reducing stick-slip in precision positioning.
- Gimbals and pan-tilt heads: smooth low-speed tracking.
- Torque or current-controlled actuators where friction dominates the low-speed error.
| Algorithm | Relationship |
|---|---|
| Feedforward / 2-DOF | Same additive-feedforward structure; friction is a velocity-driven feedforward term |
| PID Controller | The feedback loop this term is added to; compensation reduces integrator work and stick-slip hunting |
| Bang-Bang / Hysteresis | The |
| Saturation / Rate Limiter | The output clamp is the same saturation, applied to the compensation term alone |
| QR Decomposition | Backbone of the least-squares fit of the linear friction coefficients |
- B. Armstrong-Hélouvry, P. Dupont, C. Canudas de Wit, "A survey of models, analysis tools and compensation methods for the control of machines with friction," Automatica, 30(7), 1994.
- H. Olsson et al., "Friction models and friction compensation," European Journal of Control, 4(3), 1998.