Welcome to the Evolve-A-Robot web portal!
Evolve-A-Robot is a real-time, 3D evolutionary robotics simulation environment built with PhysiJS, ThreeJS and WebGL. Code is available on GitHub Evolutionary Robotics harnesses the process that has led to the complexity we observe in natural organisms: evolution. Brain and body are optimized through an iterative process modifying an individual's genome. This web portal provides an online tool to observe evolution happening in real-time. Beginning with a randomly generated initial individual, the robot's genome changes under evolutionary pressures, allowing the animat to move effectively.
Launching a simulation is simple. First, select one of the animats listed below. The simulation will then load on this web page, with statistics about the evolutionary process detailed below. A scatter plot tracks the performance of every individual, and a table presents the performance and genomes of the best individuals. Clicking on a row in the table will initiate a playback of the selected individual (playbacks are green robots).
The interface is composed of three components. Robots are simulated in real-time and shown in the main window. The dark blue sphere indicates the starting location (the origin), and the grid on the floor represent 10 x 10 units. While a robot is moving, bread-crumbs (light blue spheres) are placed on the ground, indicating the robot's position at evenly spaced time steps. Larger distances between the bread-crumbs indicate higher speeds. As you might expect, a straight line of bread-crumbs is generally more effective than one that wanders. Over the course of many iterations, you may notice a blue circle growing outward as more effective genomes evolve. The blue circle denotes how far the best performing individual traveled during its simulation. This means that at any point during evolution you can have an idea of how well an individual measures up to the historical best.
The second component of the interface is the fitness log. Only the best individuals are noted here. The iteration number shows when that individual was first seen, and its fitness is in the second column. Following those two columns is the genome, where each column shows the value of a specific gene. Green shaded boxes indicate an increase in a genes value when compared to the previous best individual, while red shaded boxes indicate a decrease in value. As mentioned above, clicking on a row will allow you to rerun any of the historically best individuals. The rerun will be colored green, and it will not effect the flow of evolution.
The final component of the interface is the scatterplot. All individuals seen during evolution are included. Axes are updated automatically as new, and hopefully better, individuals are created through the evolutionary process.
Optimization is handled by the 1+1 Algorithm. Initially, the robot is setup and governed by a randomly generated genome. The robot is then simulated, and the genome's fitness is measured as its distance from the blue sphere at the end of simulation. Next, a new individual is generated by mutating a copy of the initial genome. This new genome is evaluated the same way as the initial genome, and the two fitnesses are compared. The individual with a higher fitness value is then used to create any subsequent genomes. This process of mutation, evaluation, and selection is repeated for each iteration. Over time, fitness of the new individuals increases, leading to more effective individuals.
This video shows what is possible when evolving individuals in this simulator. Here, an initial quadrupus is not very good at walking. However, after a few iterations, the movements are becoming coordinated. Ultimately, the final individual shown here is an effective walker, moving a total of 82 units during the simulation time.