[ODE] Re: ODE, measuring "instability" in a system

Russ Smith russ at q12.org
Sat Nov 3 14:59:01 MST 2001


Fredrik Sandström wrote:
> 
> Hi!
> 
> I've been tinkering with both ODE and MathEngine a little on my spare
> time and most of my time has been spent on trying to make my
> simulations to behave reasonably. The problem of trying to avoid
> large variations of the individual masses, minimizing the amount of
> joints, friction, motor forces etc often breaks down to a lot of
> fiddeling with numerous constants, changing epsilons and gammas, CFM,
> time steps, you name it...

hi,

yes, this is a situation familiar to everyone who works with physics
sim. the basic problem is that in the space of N tweakable parameters,
there may only be a small part of that space where the simulation
works robustly. so the process of fine-tuning the simulation is really
a search in an N-dimensional space. if N is 2 or 3 this is not so
bad, but if N is 100 the situation is hopeless.

BTW, ODE was designed with this in mind - i.e. the number of tweakable
parameters was kept small. a big source of parameters in many sims is
the spring-damper constants that are used for contacts, joint limits,
motors and such - but in ODE all these things are constraints.
so time-to-design is improved, as well as robustness. actually, i
designed the mathengine library this way as well.

> To me at least it seems like changing one of these often give rise to
> other parts of the system starting to behave in a different way
> (since everythings connected maybe not so surprising) and this leads
> me to my actual question. Is there any way of quantifying the error
> term of a particular joint or constraint in the system?

all joints return a "joint error" vector to the ODE core, but this 
information is not available externally. the joint error is a measure
of how far the joint is out of alignment.

> Is it possible to measuring what parts of the system is more prone to
> errors in the simulation and also estimating how a particular change
> of one of the parameters above will affect it?

hmmm, tricky. there are many ways that the system parameters will
influence the system behavior. but there are some generalizations we
can make:
  * increasing CFM will make the system more numerically robust and
    less susceptable to stability problems. it will also make the
    system more "spongy", so a tradeoff has to be found.
  * joints that connect large and small masses together will have
    a harder time keeping their error low.
  * two constraints that "try and do the same job" will fight each
    other and cause stability problems (due to numerical singularity).
    for example, two contacts between the same pair of bodies at the
    same point.
  * etc

> I really miss some way of quantifying "how well" my machine really
> works, spending hours and hours to test that everything works ok
> everytime you change something isn't really productive in the long
> run (but it's fun =)

yes - it would be *really* nice to have a "physics diagnotic tool"
that could look for sources of numerical problems in a physics sim.
it would be a HUGE timesaver. trouble is that such a tool does not yet
exist (not that i've seen).

> Hmm, I hope you understand what I'm after...
> 
> /Fredde
> 
> Magic is Life - Technology is Death

sorry i can't provide the magic bullet.

russ.


--
Russell Smith
http://www.q12.org




More information about the ODE mailing list