[ODE] Angular-velocity autodisabling considered broken

Jon Watte hplus-ode at mindcontrol.org
Wed Sep 15 08:56:52 MST 2004


> One thing about jittery islands... don't know exactly how ODE handles
> sleeping, but in our simulator, we noticed that it is better to handle
> sleeping per-object than per island. An object that is determined to be
> ready to sleep is put to sleep and its velocities are reset immediatelly. No
> matter that the rest of island may still be moving. This removes energy from
> islands that are on the verge of sleeping, making them less and less jittery
> over time. And it prevents slow creeping of objects, because objects that
> would otherwise move very slowly are forced to 0 velocity in every step,
> hence they cannot move at all. You must be very careful about properly
> waking up the objects in the next step, though. :)

There are two problems with this approach, if you were to use it for the 
general case (i e, built-into ODE).

1) If you sleep objects based on an instantaneous velocity reading, then 
blocks that tip up on an edge, but will fall down again (eventually), will 
fall asleep and remain tilted forever.

2) All sleeping approaches I know of apply to individual objects only. The 
problem is that you have to wake up objects when they are hit by other 
objects, or when forces are applied through other joints. Within an island, 
if one object is awake and moving, it will typically exert enough force on 
the other bodies that the other bodies have to wake up. That's what we 
mean when we say that when one body won't sleep, it'll keep the island 
awake.

Cheers,

		/ h+




More information about the ODE mailing list