Monday, July 26, 2004

New Videos

I posted two videos of some almost-stable walking.  Go to the Gallery page on the Verve site to see them.

Tuesday, July 20, 2004

New Thoughts about Python

I met with Michael McLay ( yesterday for a few hours.  We talked about Python and how I could use it in Verve.  
Here's what I'm thinking:  If I only needed a scripting language for the desired behavior files, I would probably stick with Lua; however, I'm thinking more and more about going back and writing most of Verve with a scripting language.  In this case I would probably choose Python since it has a larger community and a ton of existing libraries.  I need to reimplement NEAT anyway, so I might write it (except for the parts that need to be really fast) in Python, too.
Of course, I'll need to spend some time learning Python first...
Please post comments if you have an opinion on any of this.

Wednesday, July 14, 2004


Since my last post I have added a lot of little things. The most significant additions are:

1. I can now use NEVT (NeuroEvolution Visualization Toolkit ) to generate SVG files from the neural networks and statistics files.

2. The desired behaviors are written in Lua script files. I'm still not sure if this is the best way to do things. Maybe users should just be able to decide how to implement the "fitness evaluation" functions on their own. They could have the choice of scripting them or deriving evaluator objects from a base class provided by Verve.

3. A high level Training Script XML file (for each behavior) contains info about evolution stages, among other things. It also contains the location of a Lua script containing evaluation functions for that behavior. It might still be better to have a single Lua script per behavior that specifies evolution stages and contains all the functions needed to evaluate the behavior.

Besides that, I have tweaked and rewritten chunks of the NEAT source code.

The main problem I have now is trying to get walking behavior easily. I can get decent results with "training wheels" (forces that keep the body from falling; see the Reil & Massey papers). Once I take off the training wheels, the fittest individuals die off because of the sudden change in the environment. I've tried gradually removing the training wheels, but I haven't had much better results yet.

My next big tasks are the following:

1. Get walking behavior to evolve more easily and reliably. This is such a fundamental behavior for simulated humans that I don't want to move to other behaviors until it works well.

2. Reimplement NEAT. I have been using Ken Stanley's NEAT source code for a while. The problem is that his code is under the GPL license, and Verve will use a less-restrictive license. There is a chance that he could change it for me, but that would probably be complicated since others have probably already used it in GPL-license projects. Also, implementing NEAT myself would give me an even better understanding of how the algorithm works.