[ODE] Damping without adding forces
Bob Dowland
Bob.Dowland at blue52.co.uk
Tue Oct 26 10:48:33 MST 2004
Hi Anton,
Sounds like you're aware enough of the equivalences - I wasn't sure from your q. As long as you're keeping momenta up to date I guess you should be okay.
:)
Bob.
> -----Original Message-----
> From: Anton Savin [mailto:anton at targem.ru]
> Sent: 26 October 2004 05:37
> To: ode at q12.org
> Subject: Re[2]: [ODE] Damping without adding forces
>
>
> Hello Bob,
>
> >> The positive side of my damping is that it never
> produces jittering.
>
> BD> Possibly - but the negative (depending on how you decide to
> BD> enable/scale this damping at each frame(?)) is that you're model
> BD> could just end up moving uniformly gloopily
>
> In my simulation I set the value of damping to 0.1
>
> As you can see, if the body moves freely, then by my damping its
> velocity in one second will be scaled by about exp( -damping )
> (exactly when timestep tends to 0). Of course, there can arise
> some pathologic cases when the velocity will remain constant, but
> in terms of damping it's better than if the body will accelerate.
> Also with coefficients close to 0 the damping is almost invisible,
> and I just hope that it will increase stability.
>
> >> The question is: If I apply forces, it affects solver,
> and it can increase
> >> stability. But I don't touch solver here, so is
> stability increased
> >> by my damping or not?
>
> BD> Not intrinsically. Stability comes from many factors - a
> BD> little damping can help smooth things out a bit but can bite you
> BD> in the heel when you come to fold in other dynamics effects - for
> BD> a simple example consider what happens to a particle falling under
> BD> gravity - with this damping scheme it now no longer obeys the
> BD> usual quadratic formula, anything in your codebase that expects
> BD> that will now not work. That may not be an issue right now but
> BD> it's the sort of thing that can surface when you least need it.
>
> With damping that uses forces there is no quadratic formula too :)
> And my damping in respect to physics is equivalent to
> applying some force
> that is proportional to the value of the velocity and is directed
> oppositely to it. In respect to physics, but of course not in respect
> to ODE ;)
>
> BD> I would say use your approach but avoid embedding it too
> BD> deeply and try to be clear on what it is you're trying to model,
> BD> if this is not a decent model of the thing you want, it could be a
> BD> reasonable placeholder but it should be quickish to swap it out
> BD> for any new-improved alternative.
>
> I've written API that allows to set damping values for each body
> separately, and default values for world, it's very similar to
> auto-disabling API:
>
> void dWorldSetDampingFlag( dWorldID, bool do_damping );
> void dWorldSetDampingParameters( dWorldID, dReal
> linearDamping, dReal angularDamping );
>
> void dBodySetDampingFlag( dBodyID, bool do_damping );
> void dBodySetDampingParameters( dBodyID, dReal
> linearDamping, dReal angularDamping );
> void dBodySetDampingDefaults( dBodyID );
>
>
> BD> Now mod any silly mistakes on my part and funny numerical
> BD> shinanigans, the above should be equivalent. The advantage of the
> BD> second is that you know exactly what the physical damage is which
> BD> is could be useful for modelling. For eg. if this were a sliding
> BD> friction model you could say clip the impulse magnitude so it's
> BD> smaller than the corresponding reaction and get something within a
> BD> million miles of Coulomb sliding friction - etc.., etc.., you get
> BD> the general idea.
>
>
> Thank you for the advice, I'll possibly use momenta when more control
> will be necessary.
>
> Cheers,
> Anton Savin
>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>
More information about the ODE
mailing list