Friction Models (M1-M6)#
BAM supports six friction models of increasing expressiveness, denoted \(\mathcal{M}_1\) to \(\mathcal{M}_6\).
They are ordered from the simplest Coulomb-Viscous approximation to a richer directional and quadratic formulation that better captures gearbox behavior.
M1: Coulomb-Viscous
M2: Stribeck
M3: Load-dependent
M4: Stribeck + load-dependent
M5: Directional load-dependent
M6: Quadratic directional variant
Notation#
In the equations below:
\(\dot{\theta}\) is joint velocity
\(\tau_m\) is motor torque
\(\tau_e\) is external/load torque
\(\tau_{fm}\) is the maximum resistive friction torque (friction budget)
The simulation then applies friction by clipping the stopping torque in \([-\tau_{fm},\tau_{fm}]\).
Model M1: Coulomb-Viscous#
This is the baseline model used in most physics simulators. It keeps only viscous damping and a constant Coulomb term.
Model M2: Stribeck#
This adds higher friction near zero speed and smooth transition to sliding. It models the fact that static friction is usually stronger than sliding friction.
Model M3: Load-dependent#
This captures the increase of friction with transmitted gearbox load. It is useful when the apparent resistance depends on how hard the transmission is loaded.
Model M4: Stribeck + load-dependent#
This combines presliding dynamics with load dependence. It adds Stribeck smoothing on top of a load-sensitive friction budget.
Model M5: Directional load-dependent#
This separates motor-side and external-side contributions, which helps model directional efficiency/backdrivability asymmetry. It is appropriate when the gearbox behaves differently depending on the torque direction.
Model M6: Quadratic directional#
with piecewise quadratic contribution:
This is useful for actuators where harmonic-drive-like effects create nonlinear load-friction coupling. It extends the directional model with a quadratic load term.
Modeling hierarchy#
The sequence \(\mathcal{M}_1 \rightarrow \mathcal{M}_6\) reflects increasing expressiveness and parameter count. In practice, BAM fits all candidates and selects the best trade-off from validation error.
Implementation in BAM#
Model behaviors are implemented in bam.model, notably: