One of the most fascinating developments in robotics research in the last twenty years is evolutionary robotics. Evolutionary robotics represents nothing less than a new way of designing robots. It uses an automated process based on Darwinian artificial selection to create new robot designs. Of course, selective breeding, as practised in human agriculture to create new improved varieties of crops, or farm animals, is (at least for now) impossible for real robots. Instead, evolutionary robotics makes use of an abstract version of artificial selection in which most of the process occurs within a computer. This abstract process is called a genetic algorithm.
The process of evolutionary robotics works as follows. We first represent the robot that we want to evolve with an artificial genome. Rather like DNA, our artificial genome contains a sequence of symbols but, unlike DNA, each symbol directly represents (or ‘codes for’) some part of the robot In evolutionary robotics we rarely evolve every single part of the robot. Imagine how we might construct a genome for a four-legged walking robot. Each leg has two segments and the genome specifies the length of each segment. Since there are four legs, the genome contains eight values in total. The box at the left shows the genome specifying a walking robot’s legs. Of course, there are many other dimensions of the robot that we could also code for in the artificial genome. We could, for instance, code the size of the robot’s torso in the genome, or the positions of the joints between the torso and the legs, or the number of segments in each leg, and soon. In theory we could code for every single aspect of the robot in the genome but that would not only slow down the artificial evolutionary process, but also reduce the likelihood of us evolving a ‘good’ robot. In practice therefore, we hand-design and fix some aspects of the robot, decide which parts of it we want to evolve, and code only those parts in the artificial genome.
Having determined the structure of the artificial genome, we now create a population of genomes in a computer program. It doesn’t need to be a large population; between ten and a hundred individuals is sufficient to maintain some genetic diversity. The individuals in the initial population are, as a rule, randomly initialized. For our imaginary four-legged walking robot this would mean that the initial population would consist of robots with mismatching leg sizes, many of which would not be successful walkers. The image underneath illustrates the overall four-stage process of artificial evolution. For each population, each individual in the population—represented by its genome—is subjected to a separate fitness evaluation. What this means is that each genome is used to create a robot. It would be hugely impractical to create a real physical robot for each genome, so in practice we create a simulated robot inside a computer.

