Robot Evolution

Although it’s been almost a month since the end of the semester, I wanted to share some of the final project that consumed most of my time and mental capacity in April. I was taking CS266: Bio-inspired Multi-agent Systems from Prof. Rhadika Nagpal. It was a very fun course, emphasizing seminar-style discussion of research papers, with labs working with actual robot hardware and culminating in a final project that had both a physical robot competition component and a more open-ended simulation component.

My contribution to the final project focused on the simulation, while my partners Andrew Reiter and Pierre-Emile Duhamel focused on the robots. We decided to use the recommended MASON simulation library to implement a virtual version of the competitive foraging task, and then coupled that with a genetic programming implementation to attempt to evolve robot strategies. You can read a lot more detail about our methods and results in our final paper (pdf), including our approaches using the actual e-puck hardware. The simulation is discussed in Section 3. Long story short, the GP approach worked, in that it did successfully learn strategies, but I think that our fitness function could use some work in order to develop strategies that do something more interesting than the manually written strategies.

The complete source code is available on GitHub under a BSD license.

Various videos (some of which I’ve already posted elsewhere) are below the cut.

[iframe src=”http://www.youtube.com/embed/HX555NyftPI?rel=0″ frameborder=”0″ width=”560″ height=”315″]

[iframe src=”http://www.youtube.com/embed/naysgJMvJ1g?rel=0″ frameborder=”0″ width=”560″ height=”315″]

[iframe src=”http://www.youtube.com/embed/TzpFJNkePsY?rel=0″ frameborder=”0″ width=”560″ height=”315″]

[iframe src=”http://www.youtube.com/embed/PQuq2TvNjw8?rel=0″ frameborder=”0″ width=”560″ height=”315″]

[iframe src=”http://www.youtube.com/embed/pKGBX3Ztzag?rel=0″ frameborder=”0″ width=”560″ height=”315″]

[iframe src=”http://www.youtube.com/embed/gbtyiq0WeFo?rel=0″ frameborder=”0″ width=”560″ height=”420″]

[iframe src=”http://www.youtube.com/embed/s15U299f5OE?rel=0″ frameborder=”0″ width=”560″ height=”420″]