Spring-Mass Creature Evolution

We are proposing to build a system inspired by Karl Sims’ Evolved Virtual Creatures 1994.


Sims Evolved Virtual Creatures

Each creature in Sims’ simulation evolves with a physical rule set whereby skeletal elements are composed of interconnected masses which rotate at their joining points in various ways in order to allow the evolved creature to move about in the environment.

Another interesting project in this area is The Golem Project, where similar techniques were used to create evolved creatures, and then physical robot models of these creatures were built based on the most successful creatures.

We have decided to use a skeletal system for our creatures made up of masses and springs, as seen in this example built by ilteris.

Sodaplay is a highly developed system using this technique, where the movement of their creatures is generated by applying oscillations of various frequencies to the springs in each system (http://www.sodaplay.com/constructor/how/works.htm). The SodaConstructor allows the user to construct their own creature and manipulate the conditions under which it lives, ie: Gravity, Environmental Friction, Spring Stiffness, Spring Oscillation Frequency.

We intend to use this system to evolve creatures as in Karl Sims’ project, by placing randomly generated creatures in a space, and give them a fitness rating based on how far they are able to move from the starting point. Those who move the furthest under the conditions set by the user (gravity, friction, etc) will have greater influence over the next generation of creatures produced.

We discovered a group which is experimenting with evolving these types of creatures, although we weren’t sure exactly how their system worked. It has a somewhat confusing interface.

This is the source code of our applet. This is a working version in 2d draw.
Documentation:

- Tom Carden's SodaRip. This applet is run based one of the xml files from sodaplay. The mode is the famous daintywalker. This is a good example of how we can store information about the models for next generations thinking we want to implement some kind of evolution in our system. This example is also helpful to us seeing alternative ways of structuring our code building such a system.

- Processing forums. We cannot stress how much they are helpful along the way for creating a mass-spring system. It turns out people already tried different ways to create a system like this. One great example of this was from a french guy nicknamed v3ga which helped us great to understand to build such a system. I totally advice to study his code and Tom Carden's code at the same time.

-SodaplayCentral. This is a huge book-let from Jeckyll which he describes the physics behind sodaconstructor in details. It looks like the site is down at the moment(the word on the street is they are coming with a 3.0 version) but I was ambitious and find the documents through webarchive.org. I find it an invaluable source if you are interested in mass-spring and physics. Muscleplacement , Advanced Structure are all helpful to grasp the concept.

-Advanced Character physics. This denmark based research paper is also could be helpful to understand step integrations which is cruicial in time-based animations.

 
Eliot Rosenberg / ilteris kaplan