[ODE] Possible solution to unstable rotating bodies problem

Gary R. Van Sickle g.r.vansickle at worldnet.att.net
Thu Apr 21 16:10:15 MST 2005

> I implemented my original idea to keep objects from gaining 
> angular velocity when freely-spinning.  Here again was my idea:
> 1. Store each body's previous angular velocity (just the 
> magnitude should be enough).
> 2. Every time step, check the bodies to see if they are 
> "freely spinning," which is true if no contacts have been 
> made with the body and no user forces have been added in the 
> last time step.
> 3. If a body is freely spinning and its current angular 
> velocity is greater than the previous angular velocity (i.e. 
> by comparing magnitudes), then make the current angular 
> velocity magnitude equal to that of the previous step 
> (normalize the current angular velocity and scale it by the 
> previous magnitude).
> I implemented this algorithm in a separate library (i.e. in 
> OPAL; see post "Open Physics Abstraction Layer version 
> 0.3.0"), not directly in ODE.  The algorithm appears to work 
> fine.  Long, thin objects spinning in midair don't spin out 
> of control anymore.
> Tyler

Excellent Tyler.  As you know, concern has been expressed on this list as to
what performance penalty, if any, just such a scheme may exact.  Are you set
up to do some performance comparisons with/without this mechanism? 

Gary R. Van Sickle

More information about the ODE mailing list