[ODE] Modelling Joint Friction

Peter Kyme pk at dneg.com
Tue Sep 27 17:05:43 MST 2005


Thanks for your suggestion - it looks like a good solution to the 
problem. I have a couple of questions.

- Since there doesn't seem to be access to the force applied by the 
motor though the API, I assume the changes would have to be made to the 
ode code?

- Have you implemented this solution, and did it work as expected?

Thanks again,

Peter

Erin Catto wrote:
> 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
> 
> Use
> 
> v = ERP / dt * (pos_stick - pos) // when sticking
> 
> v = 0 // when sliding
> 
> Erin
> 
> -----Original Message-----
> From: ode-bounces at q12.org [mailto:ode-bounces at q12.org] On Behalf Of Peter
> Kyme
> 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
> docs:
> 
> "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?
> 
> Thanks.
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
> 
> 
> 


More information about the ODE mailing list