Coulomb friction is a classical model of dry friction that defines the maximum static friction force and the constant kinetic friction force as being directly proportional to the normal force pressing the surfaces together, independent of the apparent contact area. This model creates a friction cone of allowable tangential forces at a contact point, where the resultant force must lie within a cone defined by the friction coefficient and the contact normal. It is the standard model implemented in constraint solvers and Linear Complementarity Problem (LCP) formulations to resolve tangential forces during collisions.
Glossary
Coulomb Friction

What is Coulomb Friction?
Coulomb friction is the foundational dry friction model used in physics engines to simulate realistic contact interactions between rigid bodies.
In simulation, the model distinguishes between static friction, which prevents motion up to a threshold, and kinetic friction, which opposes sliding motion with a constant force. This creates a stick-slip phenomenon critical for realistic robotic manipulation and locomotion. The model's simplicity—relying only on a coefficient of friction—makes it computationally efficient but also a primary source of the reality gap, as real-world friction involves complex dependencies on velocity, temperature, and surface roughness not captured by the classic formulation.
Key Characteristics of the Coulomb Model
The Coulomb friction model is a foundational element for simulating realistic physical interactions in robotics and physics engines. Its characteristics define the boundary between static stiction and kinetic sliding.
Static vs. Kinetic Friction
The model defines two distinct regimes. Static friction acts when surfaces are at relative rest, opposing any applied tangential force up to a maximum threshold. Kinetic (or dynamic) friction acts when sliding occurs, providing a constant opposing force. The maximum static friction force is typically greater than the kinetic friction force, explaining the initial 'stickiness' before motion begins.
- Static Friction Force: (F_s \leq \mu_s F_n)
- Kinetic Friction Force: (F_k = \mu_k F_n) Where (F_n) is the normal force, (\mu_s) is the static friction coefficient, and (\mu_k) is the kinetic friction coefficient.
Independence from Apparent Contact Area
A key, often counter-intuitive, postulate of the Coulomb model is that the magnitude of the friction force is independent of the apparent or macroscopic area of contact between the two surfaces. The force depends only on the normal force and the material-dependent friction coefficient. This arises from the model's assumption that friction results from the shearing of microscopic asperities; the real contact area is proportional to the normal force, not the geometric area. This simplification is crucial for efficient simulation but breaks down for very soft materials or extremely smooth surfaces.
The Friction Cone
Coulomb's law is geometrically represented by the friction cone. At a contact point, the total contact force (normal + friction) must lie within or on a cone whose axis is aligned with the contact normal. The half-angle of this cone is (\theta = \arctan(\mu)), where (\mu) is the relevant friction coefficient. This visualization is critical in robotics for grasp stability analysis and motion planning, as it defines the set of all possible reaction forces a contact can provide to resist slippage.
Proportionality to Normal Force
The model's core equation states that the maximum friction force is directly proportional to the normal force pressing the surfaces together: (F_{friction}^{max} = \mu F_{normal}). This linear relationship is a first-order approximation that holds reasonably well for many common material pairs under moderate loads. It simplifies the calculation of frictional effects in multi-body dynamics, as the normal force is typically computed by the constraint solver during collision resolution.
Direction Opposing Motion
The friction force vector always acts in the direction opposite to the relative motion or impending motion at the contact interface. For kinetic friction, this is directly opposed to the current sliding velocity. For static friction, it opposes the net applied tangential force that is trying to initiate motion. This directional property is essential for generating realistic damping and energy dissipation in simulations, as it ensures friction always acts as a non-conservative, dissipative force.
Limitations and Numerical Handling
While foundational, the classical Coulomb model has known limitations that simulation engines must address:
- Stiction Discontinuity: The instantaneous switch from static to kinetic friction at the threshold creates a non-smooth, discontinuous system, challenging for numerical integrators.
- No Velocity Dependence: It does not account for the slight decrease in friction with increasing sliding velocity (Stribeck effect) observed in lubricated contacts.
- Numerical Solvers: In physics engines, Coulomb friction is typically formulated as a Linear Complementarity Problem (LCP) or similar constraint, solved iteratively each time step to find feasible friction forces that satisfy the 'stick-or-slip' conditions without generating energy.
How Coulomb Friction Works in Simulation
Coulomb friction is the classical dry friction model used in physics engines to simulate the tangential resistance force between contacting surfaces.
Coulomb friction is a constitutive model defining the maximum static friction force and the constant kinetic friction force as being proportional to the normal force pressing the surfaces together. Its core principle is that the magnitude of the tangential friction force is independent of the apparent contact area and sliding velocity, up to the stiction threshold. In simulation, this creates a stick-slip transition critical for realistic object behavior.
Within a constraint solver, Coulomb friction is typically formulated as a Linear Complementarity Problem (LCP) or as a friction cone constraint. The solver calculates the necessary tangential impulses to keep the relative velocity at the contact point within the cone's bounds. This prevents unrealistic sliding and is essential for simulating grasping, walking, and any task involving stable contact. Warm starting from previous solutions improves solver convergence for these non-linear constraints.
Coulomb Friction vs. Other Friction Models
A comparison of classical and advanced friction models used in physics simulation and robotics, highlighting their mathematical formulations, computational characteristics, and suitability for different applications.
| Feature / Metric | Coulomb (Dry) Friction | Viscous Friction | Stribeck Friction |
|---|---|---|---|
Primary Physical Domain | Dry contact between solid surfaces | Fluid-mediated shear (lubrication) | Mixed / boundary lubrication |
Mathematical Form (Simplified) | F_f = μ * F_n (static), F_f = μ_k * F_n (kinetic) | F_f = c * v | F_f = [F_c + (F_s - F_c) * e^(-|v/v_s|^δ)] * sgn(v) + σ * v |
Velocity Dependence | Discontinuous (static vs. kinetic); independent of sliding speed | Linear with velocity (v) | Non-linear; includes static, Stribeck, and viscous regions |
Static Friction (Stiction) Modeled | Yes, via separate coefficient μ_s | No | Yes, explicitly via F_s parameter |
Pre-sliding Displacement (Dwell) | No | No | Yes, via additional spring-like elements in some extensions |
Hysteresis & Non-Conservatism | No (rate-independent) | No (fully dissipative, but path-independent) | Yes, due to memory-dependent friction lag |
Computational Cost (Solver) | High (requires LCP/iterative solver for stick-slip) | Low (explicit, additive damping) | Very High (complex non-linear ODEs, state tracking) |
Common Use in Sim-to-Real | Core model for rigid body contact in MuJoCo, Bullet, Drake | Added damping for joint motors & suspension | High-fidelity robotic contact (e.g., precise grippers, high-precision stages) |
Parameters to Identify | μ_s (static coeff.), μ_k (kinetic coeff.) | Damping coefficient (c) | F_s, F_c, v_s, δ, σ (multiple non-linear params) |
Suitability for Real-Time Simulation | Conditional (requires robust solver tuning) | Excellent | Poor (except heavily simplified approximations) |
Applications in AI and Robotics Simulation
Coulomb friction is a foundational model for simulating realistic physical interactions between surfaces, crucial for training robust robotic policies in virtual environments.
Core Model Definition
Coulomb friction is a classical dry friction model defining two distinct regimes:
- Static Friction: The maximum force that must be overcome to initiate sliding, proportional to the normal force:
F_static_max = μ_s * N. - Kinetic Friction: A constant opposing force during sliding motion:
F_kinetic = μ_k * N. The model's key assumptions are that friction is independent of apparent contact area and velocity magnitude (for kinetic friction). The coefficientsμ_s(static) andμ_k(kinetic) are material properties, withμ_stypically ≥μ_k.
Implementation in Physics Engines
In simulation engines like MuJoCo, Bullet, or Isaac Sim, Coulomb friction is approximated within the constraint solver. Each contact point is modeled with a friction cone—a geometric representation of allowable tangential forces. The solver (often via a Linear Complementarity Problem) finds forces that:
- Prevent inter-penetration (normal force).
- Satisfy
|F_tangent| ≤ μ * F_normal. - Apply the stiction transition logic, where the solver determines if the contact is sticking (static) or sliding (kinetic). This is computationally intensive and a key factor in simulation step time.
Impact on Sim-to-Real Transfer
Inaccurate friction modeling is a primary source of the reality gap. Key challenges include:
- Parameter Identification: Real-world
μ_sandμ_kare difficult to measure and are environment-dependent (e.g., dust, moisture). - Surface Geometry: Real surfaces are rough, violating the model's assumption of uniform pressure.
- Velocity Dependence: Real kinetic friction often has a slight negative viscous slope (Stribeck effect), not captured by the basic model. Policies trained with incorrect friction can fail catastrophically on real hardware, e.g., a gripper dropping objects or a robot leg slipping.
Domain Randomization for Robustness
To create policies robust to friction uncertainty, Domain Randomization is applied:
- Parameter Randomization: The friction coefficients (
μ_s,μ_k) are sampled from a plausible range (e.g., 0.3 to 1.2) during each training episode. - Randomized Surface Properties: Different friction values can be assigned to different floor tiles or object surfaces in the sim.
- Asymmetric Randomization: Sampling
μ_sandμ_kindependently to cover a wider space of material behaviors. This forces the reinforcement learning policy to learn a generalized strategy that does not overfit to one specific friction value.
Advanced Friction Models in Simulation
For higher-fidelity simulation, engines implement extensions to the basic Coulomb model:
- Pyramid Approximation: The friction cone is approximated as a pyramid for simpler linear constraint solving.
- Regularized Friction: A small velocity-dependent term is added to avoid the numerical discontinuity at zero velocity, improving solver stability.
- Anisotropic Friction: Different coefficients for two orthogonal tangential directions (e.g., like a tire or a ski).
- Stribeck Effect: Modeling the velocity-dependent transition from static to kinetic friction. These are used in high-precision digital twins for control system validation.
Example: Robotic Manipulation & Locomotion
Grasping & Manipulation:
- Friction determines if a gripper can hold an object against gravity. Policies must learn to apply sufficient normal force.
Legged Locomotion:
- Friction between a robot's foot and the ground dictates maximum push-off force and lateral stability. A policy trained with high sim friction may cause a real robot to slip and fall on a low-friction surface.
Push-Recovery Controllers:
- Algorithms that regain balance after a shove rely critically on accurate friction cone constraints to compute feasible recovery steps.
Frequently Asked Questions
Coulomb friction is a foundational model for simulating dry contact in physics engines. These questions address its implementation, limitations, and role in training robust robotic policies for sim-to-real transfer.
Coulomb friction is a classical model of dry friction that defines the maximum static friction force and the constant kinetic friction force as being proportional to the normal force pressing the surfaces together, independent of the apparent contact area.
In a physics engine, it is implemented per contact point and typically involves two coefficients: the static friction coefficient (μ_s) and the kinetic friction coefficient (μ_k). The solver calculates a friction cone—a geometric representation of allowable tangential forces. The maximum static friction is F_friction_max = μ_s * F_normal. If the applied tangential force is below this threshold, the bodies stick (static friction). Once exceeded, sliding begins, and the friction force becomes F_friction = μ_k * F_normal, opposing the direction of motion. This model is often solved as part of a Linear Complementarity Problem (LCP) or using an impulse-based method within the constraint solver.
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Related Terms
Coulomb friction is a foundational model within the broader physics of contact interactions. These related concepts define the mathematical and computational systems used to simulate collisions, constraints, and multi-body motion.
Contact Force
The contact force is the resultant force generated at the interface between two simulated rigid bodies upon collision or sustained touch. It is decomposed into two orthogonal components:
- Normal Force: Acts perpendicular to the contact surface, preventing inter-penetration.
- Tangential Friction Force: Acts parallel to the contact surface, resisting sliding motion, and is governed by models like Coulomb friction. This decomposition is fundamental for physics engines, separating the enforcement of non-penetration from the simulation of frictional effects.
Friction Cone
A friction cone is the geometric representation of all allowable friction forces at a contact point, as defined by Coulomb's law. It is a cone whose:
- Axis is aligned with the contact normal force.
- Angle is defined by the arctangent of the friction coefficient (μ). For static friction, the resultant tangential force vector must lie within this cone. If a required force lies on the cone's surface, sliding is impending; if outside, kinetic friction applies. Solvers use this concept to formulate friction constraints as a Linear Complementarity Problem (LCP).
Linear Complementarity Problem (LCP)
A Linear Complementarity Problem is a core mathematical formulation used in rigid-body physics engines to model contact and friction. It solves for unknown forces (λ) and relative velocities (v) that satisfy three conditions simultaneously:
- Non-penetration: v ≥ 0 (bodies separate or are at rest).
- Non-adhesion: λ ≥ 0 (contact forces are repulsive, not attractive).
- Complementarity: vᵀλ = 0 (either the separation velocity OR the force is zero). For friction, the friction cone is often approximated as a polyhedral pyramid to fit the LCP framework, allowing solvers to compute stick-slip transitions deterministically.
Constraint Solver
The constraint solver is the algorithmic core of a physics engine that iteratively calculates the forces or impulses needed to satisfy all contact constraints and joint constraints within a single simulation time step. For contact, it must resolve:
- Non-penetration (normal forces).
- Friction (tangential forces, using the Coulomb model).
- Restitution (bounciness). Modern solvers use methods like Sequential Impulse or Projected Gauss-Seidel to approximate the solution to the large, coupled system defined by the LCP. Warm starting from the previous frame's solution is critical for stability and performance.
Impulse-Based Dynamics
Impulse-based dynamics is a simulation method that resolves collisions and constraints by applying instantaneous changes in velocity (impulses) rather than computing continuous forces over time. An impulse (J) applied at a contact point changes the linear and angular velocity of bodies according to:
Δv = M⁻¹ * J
where M⁻¹ is the effective mass at the contact. The solver calculates the correct impulse to satisfy the Coulomb friction model and prevent penetration. This method is computationally efficient and widely used in real-time interactive simulations and games, though it can struggle with persistent contact stacks.
Coefficient of Restitution (COR)
The coefficient of restitution is a dimensionless scalar (typically between 0 and 1) that characterizes the elasticity of a collision. Defined as the ratio of the relative separation velocity to the relative approach velocity perpendicular to the contact surface:
COR = - (v_separation_normal / v_approach_normal)
- COR = 1: Perfectly elastic collision (no energy loss).
- COR = 0: Perfectly inelastic collision (objects stick together). In simulation, the COR is used alongside the Coulomb friction model to compute the final contact impulse. It models energy loss due to factors like plastic deformation, which is distinct from energy dissipated by friction.

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us