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

Ian Sherratt (Shez) shez at texonet.co.uk
Wed May 15 02:38:02 2002

On Tuesday 14 May 2002 10:00 pm, Tim Schmidt wrote:
> Nice to hear that there are others out there who are fascinated by Sims
> work, too :-)))
Oh yeah, the movies, particularly the swimming creatures are still one of the 
most arresting images I've seen come out of the artificial life/evolution 
scene, despite their age.

> It seems to me that we are working on the same project. The only difference
> may be that I am planning to use Java/Java3D for the GA/GP, gene
> representation/mangling, maybe network conversation, GUI and so on. The
> connection to ODE via Java Native Interface is already working to some
> extend. Maybe the choice to use Java will cause me to pull my hair out at
> some later time (especially in  performance issues), but in general I hope
> for a faster and less error-prone implementation with Java. As always one
> will know better at the end ;-)
I was also using java for the representations, mostly because I wanted to 
brush up my java skills.  The thing I found most frustrating about using java 
was not having operator overloading for vector and matrix maths.

If you (or anyone else) is interested I got as far as creating a set of 
general purpose Graph and Node classes and algorithms (modelled on a C++ 
library whose name I've forgoten), which could be viewed graphically using 
the dot utility (http://www.graphvis.org/)  
As far as the rest of its concerned I got as far as being able 'grow' a 
morphology graph from a genotype graph, but didn't get time to implement the 
control networks, or any of the rest of the work required.  If any of that 
code could be useful I'd be happy to share it.  Can't remember if its any 
good or not tho ;-P

I also had a few hand wavy ideas about how to extend the model to distributed 
environments (the idea being that you could run as a SETI@home style 
screensaver, except far more interesting to watch), whereby each machine 
would be an evolutionary 'island', where organisms would be far more likely 
to come into contact with, eat or breed with organanisms on the same island 
on remote islands.  It turns out that this kind of scheme (usually 
implemented in a different way) can result in far more robust populations 
than a more naive, anyone can breed with anyone simulation, as populations 
arn't so likely to converge on local minima.

And again, most importantly of all it would be a cool screensaver ;-)

> In a simple test scenario a ball socket and amotor worked for me, but it
> somehow does not look very nice when the amotor limits are set to 90
> degrees on each side. Working without any limits but with collision
> detection even between connected body segments (*) looks better at the cost
> of more computation time for the collision detection. Maybe this is a
> matter of taste.
> (*) Identifying connected bodies in the nearCallback and setting their
> contactJoints' mu to '0' and the CFMs a little bit higher makes the
> movements quite smooth.
You've got a lot further than me in playing with ODE :-)  I seem to remember 
that one of the Sims's original paramaters that was tweaked by the GP process 
was the joint limits.

> > Consequently, it breaks many laws of physics - such a conservation
> > of energy.  For example, a freely rotating body in space, without
> > any damping (e.g. air resistance), will continuously gain angular
> > momentum. As Karl Sims quickly discovered himself, if you're doing
> > evolution at this level - where the fitness depends on the physics - a
> > physics model that is as accurate as possible is paramount.
> > Evolution is great at discovering and exploiting the holes in the physics
> > to the advantage of the organisms (since that is what you're doing it
> > for).
> > For example, you may find that despite your best efforts to combat it,
> > that organisms continually evolve that exploit the 'free energy'
> > available in rotating bodies in increasingly ingenious ways.
> 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'.
> 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!
> ;-)
> -
> Some of you seem to have some more background information about Karl Sims'
> research, that goes beyond the (two?) standard papers describing his work.
> I am especially interested in some details concerning the gene
> representation that he uses (and surely everything else, too ;-) )
> So, if you know more, please give us a hint.
I think that I've only seen at the most three papers by him on the subject, 
I'll dig out my paper copies and check.  

All facsinating stuff, I'd love to see what people can come up with.  Or win 
the lottery and do it myself ;-)