Skip to content
AI360XpertBeta

Robot Contact and Friction: Stick or Slide

A contact can push along its normal and resist a limited sideways load. Sticking uses only the friction needed; sliding activates a different force rule.

An eight-newton sticking force fits the friction cone while a twelve-newton demand does not.
An eight-newton sticking force fits the friction cone while a twelve-newton demand does not.

Why Does This Exist?

A foot supports a robot vertically but slips when the controller requests too much horizontal force. Touching the ground does not supply arbitrary force. Contact and friction models specify which forces can exist and how they change when bodies separate, stick or slide. Those distinctions matter before optimizing any motion.

The contact normal points outward from the supporting surface into the supported body. Tangential directions lie along that surface. Forces change acceleration through robot dynamics; the contact law restricts which external forces are available. This page teaches force admissibility and slip transitions. Robot simulation explains how numerical stepping and contact solvers approximate their evolution.

Think of It Like This

A rubber eraser on a tilted book

At a shallow tilt, the eraser stays still: friction supplies the amount needed to oppose the downhill load. Tilt farther and the required resistance exceeds the available grip, so the eraser slides. Push the eraser harder into the book and the friction allowance increases. Normal loading maps to pressing into the surface, tangential loading to the downhill pull, and slip to relative surface motion. The analogy stops at the dry-contact approximation: rubber deformation, adhesion and speed-dependent friction can make the real threshold more complicated.

How It Actually Works

Which forces are allowed at rest?

For a nonadhesive contact, normal force fnf_n is nonnegative: the surface pushes but does not pull. If signed separation ϕ\phi is positive, normal force is zero. At closed contact, ϕ=0\phi=0 and normal force may be positive. In an ideal rigid model, ϕ≥0\phi\geq0, fn≥0f_n\geq0, and ϕfn=0\phi f_n=0. These are compatibility conditions, not a formula computing force from gap. The body dynamics and other contacts also participate in finding the force.

Under Coulomb static friction,

∥ft∥2≤μsfn,\|\mathbf f_t\|_2\leq\mu_s f_n,

where ft\mathbf f_t is the tangential force vector in newtons and μs\mu_s is the dimensionless static coefficient. In a plane this reduces to ∣ft∣≤μsfn|f_t|\leq\mu_s f_n. The cone half-angle is arctan⁡μs\arctan\mu_s. Inside that set, static friction takes the value required for sticking; it does not automatically equal the boundary value. Modern Robotics' friction chapter distinguishes the set of possible zero-slip forces from the sliding rule.

What changes after slip starts?

For nonzero tangential relative velocity vt\mathbf v_t, one kinetic approximation is

ft=−μkfnvt∥vt∥2,\mathbf f_t=-\mu_k f_n\frac{\mathbf v_t}{\|\mathbf v_t\|_2},

with kinetic coefficient μk\mu_k. The minus sign opposes relative sliding, not necessarily the body's world velocity. Its contact power is ft⋅vt=−μkfn∥vt∥2≤0\mathbf f_t\cdot\mathbf v_t=-\mu_k f_n\|\mathbf v_t\|_2\leq0: friction dissipates energy at the interface. Do not divide by zero at rest; select the sticking condition or use an explicitly justified regularization.

Compute the force-mode change

Take a stationary 2 kg block on a horizontal floor. Let gravity be 9.81 m/s², μs=0.5\mu_s=0.5, μk=0.4\mu_k=0.4, and apply a horizontal pull at a height chosen so that the block does not tip. With no vertical acceleration, fn=mg=19.62f_n=mg=19.62 N. The static allowance is 0.5(19.62)=9.810.5(19.62)=9.81 N.

An 8 N pull permits ft=−8f_t=-8 N: net horizontal force and acceleration are zero. A 12 N pull would require ft=−12f_t=-12 N, outside the cone, so sticking is impossible. Once rightward sliding begins, kinetic friction is −0.4(19.62)=−7.848-0.4(19.62)=-7.848 N and acceleration is (12−7.848)/2=2.076(12-7.848)/2=2.076 m/s². Static and kinetic coefficients are assumed fixture values, not measured material properties.

The diagram is force space, not a drawing of the block. Vertical position encodes normal force at 9 drawing units/N; horizontal position encodes tangent force at 12 units/N. Thus the drawn cone angle is intentionally rescaled, while its force coordinates still obey the inequality. The horizontal slice fixes 19.62 N. The solid vector ends at the feasible sticking force; the crossed dashed vector is the impossible force needed to hold against 12 N. Neither depicts the post-slip kinetic force or a trajectory.

How do planners use the cone?

Given a candidate contact mode, require each contact's forces to satisfy its cone, then balance the resulting net wrench. That is the next step in grasp wrench balance. In three dimensions, independently bounding both tangent components by μfn\mu f_n admits corner forces of magnitude 2μfn\sqrt2\mu f_n, outside the true circular cone. An inscribed friction pyramid sacrifices some feasible directions for linear inequalities. A circular-cone constraint preserves that boundary but changes the optimization problem.

MIT's contact equilibrium formulation combines unilaterality, friction and force/moment balance. A compliant normal law instead permits deformation and ties force to it. Compliance can better represent soft pads but needs stiffness and damping calibration. A rigid Coulomb model is a useful first screening for dry contact; adhesive, lubricated or strongly deforming interfaces need a different law. Impact impulses also need a collision model, rather than applying these static equations across an instantaneous velocity jump.

These contact directions also determine which quantities a controller can regulate. Hybrid force/position control uses the surface tangent for motion and its normal for pressing force, with explicit treatment of contact establishment and loss.

Code

This standalone Python makes the mode decision for an initially stationary block. The pull is positive and horizontal, with tipping excluded. A second case shows why the static boundary must be distinguished from actual friction.

def initial_response(pull: float, mass: float = 2.0) -> tuple[str, float, float]:    if pull < 0 or mass <= 0:        raise ValueError("Requires a nonnegative pull and positive mass")    normal = mass * 9.81    if pull <= 0.5 * normal:        return "stick", -pull, 0.0    friction = -0.4 * normal    return "slide", friction, (pull + friction) / mass

for pull in (8.0, 12.0):    mode, friction, acceleration = initial_response(pull)    print(f"{pull:.0f} N: {mode}, friction {friction:.3f} N, a {acceleration:.3f} m/s^2")assert initial_response(0.0) == ("stick", -0.0, 0.0)assert initial_response(8.0)[1] != -0.5 * 2.0 * 9.81

Output is 8 N: stick, friction -8.000 N, a 0.000 m/s^2 and 12 N: slide, friction -7.848 N, a 2.076 m/s^2.

Watch Out For

Static friction is set to its maximum everywhere

A resting block accelerates backward under a small forward pull. The code subtracts μsfn\mu_s f_n even when less force is required. Solve for the force needed to stick, check it against the cone, and use a sliding rule only when the mode requires it.

A feasible planned force slips on the actual surface

Foot force lies inside the assumed cone but contact moves. Check the measured coefficient, normal loading, contact frame and state of the surface. Use a justified conservative coefficient and detect slip; increasing normal force may help grip but can violate actuator or object-pressure limits. Cone feasibility is conditional on the model and does not establish stability of the full robot.

The Quick Version

  • A nonadhesive contact pushes normally and cannot transmit normal force across a gap.
  • Sticking friction occupies a bounded set; sliding friction opposes relative slip.
  • The example's static allowance is 9.81 N, so 8 N sticks and 12 N initiates sliding.
  • Three-dimensional tangential force must satisfy a magnitude bound, not two independent maxima.
  • Contact laws constrain forces; full dynamics and geometry determine the motion.