[ODE] Re: Virtual creatures (karl sims etc...)

Nate Waddoups nathan at whatever.net
Tue May 14 17:11:02 2002


On Tue, 14 May 2002, Tim Schmidt wrote:

> > For example, a freely rotating body in space, without
> > any damping (e.g. air resistance), will continuously gain angular momentum.
>
> Hmm, this might really become a problem (even a quite disillusioning
> one) :-\ One approach to solve this could be to limit the joint/muscle
> forces so that it is impossible for a creature to 'become a bird'.

I've been messing with this a bit, and it is possible to throw structures
into the air without any visible angular momentum problems.  Si Brown's
buggy has no trouble with this, for example. I've got a more comples buggy
in my simulator (front and rear double-wishbone suspension), and it also
jumps, tumbles, and crashes very believably.

There is at least one specific structure that really 'exploits' this
problem, I think it might be indicative of a class of structures to avoid:

Create two boxes, 1x1x1, side by side, with a vertical slider joint
connecting them.  Give the slider joint limits of, say, +/- 2 units in
either direction.  Fling one box into the air, even just a few 'units' up.  
The slider will take the second box along for the ride, and while airborne
the box-slider-box system will quickly gain momentum, becoming a blur
after a couple seconds.  If they touch the ground again (before any of
their numbers to NaN), they settle down pretty quickly.

I haven't recreated this kind of thing with hinge joints yet, and I'm
starting to think that sliders are the only thing to worry about.  If your
creatures have no sliders and 'realistic' strength-to-weight ratios, they
almost certainly won't get airborne for long enough to gain a significant
amount of 'extra' angular momentum.  

If anyone finds a way to make something gain energy quickly with just
hinge joints, I'd like to hear about it.

> A second one that might be a little bit more complex (particularly
> computational) but more general, too (in the case that it works): What
> about simulating air resistance (at least as far as rotation is
> concerned) by connecting each body to the environment by an amotor
> without any stop limits, but with an appropriate FMax and velocity set
> to '0'. Shouldn't that slow down rotation over time?  ... well, just a
> thought! ;-)

If memory serves, Si Brown's buggy demo applied damping to the 'beach
ball' objects by subtracting a small percentage of their velocity with
every time step.  I'm not sure if that would be more or less expensive
than the angular motor approach, but it's worth looking into.

-- 

Nate Waddoups
Redmond WA USA
http://www.natew.com