Engineers at the University of Cambridge are teaching robots how to breed and evolve. They built a “mother robot” and instructed her to procreate. Then she watched her brood try to walk. By learning what traits caused the babies to go farther, she was able to make better robots in the next generation.

The study has been published in PLoS ONE. The mother robot is basically a gripper arm with a hot-glue gun attached. She uses that to glue together bot babies made up of little cubes — some with a motorized side that spins — allowing them to potentially move forward if constructed in the right way. This is what that process looks like:

In the first generation, the design was random — the mom would just try a bunch of configurations, making 10 offspring in total. Then she’d watch them try to move, and measure how far they went. In the next generation, configurations that worked the best were repeated, and others were mutated into something different. This was repeated over 10 generations for five experiments, resulting in 500 different baby robots. You can watch some of them in action here:

The mom, and therefore the babies, learned quickly. In one experiment, the top-three performers in the first generation traveled an average of 1.1 inches per second — that improved to 2.6 inches per second among the top-fastest in the tenth generation.

Human engineers can get stuck in one way of thinking about a solution to a problem. But this design relies on randomness to stumble on things that work. Lead researcher Fumiya Iida told Reuters that some of the successful offspring in these experiments were built using surprising designs that a human wouldn’t necessarily think to try.

This sort of mechanical evolution could be applied to a wide range of design problems, the authors conclude in the article. The same process could be simulated using a computer, too, they write. The program would evolve imagined solutions to an engineering problem, and prototypes would be built for only the best ideas.

Photos via www.flickr.com/photos/julochka/