[ODE] Modelling Joint Friction

Erin Catto erincatto at sbcglobal.net
Fri Sep 23 22:20:51 MST 2005

This model lacks position correction, so you are seeing position drift. If
you can store the position of sticking, then you can apply penalty
velocities to correct the position errors. Once the max force is reached,
you need to stop applying the penalty.

So instead of:

v = 0


v = ERP / dt * (pos_stick - pos) // when sticking

v = 0 // when sliding


-----Original Message-----
From: ode-bounces at q12.org [mailto:ode-bounces at q12.org] On Behalf Of Peter
Sent: Friday, September 23, 2005 4:25 AM
To: ode at q12.org
Subject: [ODE] Modelling Joint Friction

I need friction in my joints, so I've implemented the solution given in the

"Motors can also be used to accurately model dry (or Coulomb) friction in
joints. Simply set the desired velocity to zero and set the maximum force to
some constant value - then all joint motion will be impeded by that force."

This solution works for an average case, but it does not seem to cope with
high friction. For example, if I set the maximum force to dInfinity I would
expect the joint to become completely rigid.

In actual fact the joint still moves. It appears that all high values of
maximum force tend towards the same result. Is it not the case that with a
maximum force of dInfinity and a desired velocity of zero the joint should
never move?

ODE mailing list
ODE at q12.org

More information about the ODE mailing list