In Fall, 2003, I took an artificial life graduate seminar with Dave Ackley at UNM. For the main semester project of the course I chose to coevolve walking behaviors for a legged creature using adversarial coevolution of the environment and/or details of the bodyplan against the success of the walking behaviors. Such adversarial factors included floor friction, floor pitch, floor bumpiness, joint strength, and limb length. I was not aware of anything like this having been attempted before. The walking behaviors are encoded in evolved neural networks and the evolution is performed using a fairly standard genetic algorithm. This project was implemented using Breve, by Jon Klein, similar to my Creature Evolver project.
I chose to evolve controllers for a quadruped. Hexapods are common in legged robotiics research due to their stability and bipeds are common due to the demand for humaniod robots, but quadrupeds receive little attention, while presenting interesting challenges of stability and coordination.
The crucial discovery of this research did not relate to the original goal of generating improved results by using coevolution. Instead, the result pertained to the neural network architecture. Using a single massive neural network simply did not work. The evolutionary process was unable to produce standing behaviors, much less walking. The trick I discovered was to have the bilateral symmetry of the body be inherant in the neural networks. I created a system in which four neural networks act in concert to coordinate the motion of the legs and further encoded the genotype to phenotype mapping such that a single neural network description in the genotype was duplicated in the phenotype, once for the left side of the body and once for the right, so the front and rear legs use different genotypes, but the left and right front legs use same genotype to make their phenotypic neural networks. This changed everything. All of a sudden, the evolution of standing and walking became a breeze, succeeding on virtually every run.
In order to ease the evolution of coordination, I invented a fake form of CPG, or central pattern generator. Rather than rely on complex neural circuitry to generate a periodic or cyclic signal that would keep the various legs' neural networks in sync, I imposed a square wave oscillating signal on one input node of the four phenotypic neural networks. This signal had a genetically determined phase offset between the left and right halves of the body and between the front and rear halves of the body, such that various combinations of phase offsets would correspond to various gaits.
I started with the evolution of standing. It was not too difficult to accomplish and I was even surprised to discover that there are multiple possible methods by which the body plan I had designed could stand up and that the evolutionary and neural system I had devised was capable of discovering multiple such methods for standing.
Here are two sequences showing two very different evolved methods for standing up:
The coevolution never really worked. I tried evolving numerous parameters against the walking behaviors, and in most cases there was no discernable improvement in the evolutionary process of producing walking. However, the success of the walkers in and of itself is fairly impressive, even without regard for coevolutionary factors. More to the point, I was able to evolve numerous gaits on a variety of surface angles and frictions, as shown below:
Download my final paper about Quadruped Evolver: