Contents · Physics Engines
Part 0 · Orientation
Part 1 · Mathematical Foundations
Part 2 · Equations of Motion
Part 3 · Time Integration
Part 4 · Collision Detection
Part 5 · Contact & Constraints
- Contact as Complementarity: LCP and Signorini
- The Friction Cone and Convex Contact Optimization
Part 6 · Constraint Solvers
Part 7 · Position-Based Dynamics
Part 8 · GPU & Parallelism
Part 9 · Differentiable Simulation
Part 5 · Contact & Constraints
The Friction Cone and Convex Contact Optimization
Contact forces come in two parts: a normal force that pushes bodies apart, and a friction force that resists sliding. Coulomb's law caps the second by the first. That cap has a geometry, and that geometry decides how hard the contact problem is to solve.
Friction is a cone
Coulomb's law says the tangential force cannot exceed the normal force scaled by the friction coefficient,
In 3D the admissible force traces out a circular second-order (or quadratic) cone: a normal axis, and at each height a disk of allowed tangential force with radius .1 Normalize and look straight down that axis: the limit is a circle of radius . Inside the circle the contact sticks, and static friction supplies whatever force is needed. On the boundary it slides, and the force points against the motion at magnitude .
A check with numbers. Take and , so the admissible set is
Two applied tangential forces:
exactly on the boundary, the onset of sliding; and
well inside, so the contact sticks.
tangential-force plane (drag f_t)
- μ
- 0.50
- |f_t|
- 0.39
- true cone
- inside
- N-gon
- inside
Inside the cone: contact sticks (static friction holds).
Why the cone is inconvenient
The circle is nonlinear, so a contact model built on it is not a linear complementarity problem (LCP), and the fast pivoting machinery from the previous chapter no longer applies directly. There are two ways out.
Linearize the cone. Replace the circle with a regular polygon of facets, a pyramidal cone.1 Pick outward unit normals with , and require one linear inequality per facet,
which folds the contact problem back into an LCP. Keep , (so ), and take the facet normal aligned with :
exactly on that facet. Rotate the same between two facet normals and it scores strictly below , so those directions are handed extra slack: friction now depends on direction, the anisotropy every linearization carries. (The demo inscribes the polygon instead, vertices on the circle, which errs the other way and denies some legal forces; either way the gap closes as grows.)
Keep the cone, make it convex. The exact limit is nonlinear but still convex, the second-order cone
so instead of forcing an LCP you can pose contact as a convex optimization over . MuJoCo relaxes the strict LCP complementarity to obtain a convex model that is fast and always solvable.2 Drake's SAP solver goes further and eliminates the cone constraints analytically, turning the step into an unconstrained convex minimization.3
The trade
Linearization keeps the clean complementarity structure but bakes in a direction bias; convex cone formulations give up strict complementarity for a smooth problem with reliable convergence. That second bargain is why convex and cone-based contact dominate robotics-grade engines, where a step that always returns a sensible answer beats one that is exact but occasionally stalls.
How each of these is actually solved, from LCP pivoting to projected Gauss-Seidel to the convex programs above, is the subject of the solvers chapter.
Footnotes
-
Bender, Erleben, Trinkle & Coumans, Interactive Simulation of Rigid Body Dynamics in Computer Graphics (Computer Graphics Forum 2014). ↩ ↩2
-
MuJoCo docs, Computation. ↩
-
Castro, Permenter & Han, An Unconstrained Convex Formulation of Compliant Contact (2022). ↩