[Robot swarms in action]

Multi-agent systems Robots AI Added on 28/06/2017

I've been spending a lot of time at the Bristol Robotics Laboratory working with a swarm of e-puck robots. I am currently looking at foraging with various types of robot swarms, previously explored in my PhD thesis and my recent publication, and comparing how the swarms work in simulation and in the real world.

A swarm of e-puck robotsDuring foraging, robots start from the base and search the arena for worksites that contain resource. They then travel back and forth between a found worksite and the base, delivering resources (if you've ever played any kind of strategy game, or watched ants forage, you know what I am talking about). This kind of research helps us to understand how to design algorithms for robots doing autonomous collection of raw resources or package delivery, or for autonomous taxis that have to respond to people booking trips.

The lab is a semi-virtual environment, where four cameras track the robot movement. There is a program running on a computer that keeps track of where virtual worksites are located and how much resource they hold, as well as where the robots are. The program informs a robot when it is near a worksite. The robot then remembers the worksite's position and starts foraging from it. In a real-world application, such virtual sensing could be replaced by cameras mounted on robots.

Here is an example of robots collecting virtual items from three different worksites:

What I am mostly interested in is whether sharing of information about where worksites are located helps the robots to collect resources faster. Looking at how ants and bees do foraging, it looks like sharing of information can be advantageous for the swarm. However, as we have previously shown in simulation, having a lot of information is not always good. For example, when a lot of robots get "persuaded" to collect from the same worksite, congestion is created, which prevents the robots from working efficiently. Here is an example of how such congestion looks like:

While the previous simulation work helped us to learn a lot about the advantages and disadvantages of communication in swarms,  doing similar experiments with real robots is already revealing interesting new things. In the real world, robots often fail and become obstacles for the rest of the swarm. Also, their movement and obstacle avoidance is not as smooth as in a simulation, which impacts the ability of the swarm to find and exhaust worksites. Another interesting thing is that every robot seems to have a  "personality" of its own, depending on its particular hardware. One robot might not "see" far enough, while another moves a bit slower than others. More annoyingly, some robots decide to stop working when others hit them too often or too hard. Similarly as people, it looks like some robots are simply hard-wired to be more difficult to work with that others.

This work was possible thanks to Prof. Alan Winfield and the Bristol Robotics Laboratory.

{Please enable JavaScript in order to post comments}

How to compile code for e-puck robots on your computer

Compiling code natively on e-puck robots or cross-compiling on your computer can be very tedious. Luckily, there is a third option: compiling code on a virtualised robot system on your computer, then sending the program onto the robot.

Are Robot Swarms Like Brains?

I have recently explored a way of measuring how information flows within a robot swarm. I think that there is something intriguing behind this idea - a swarm's resemblance to the human brain.

Designing robot swarms

In software engineering, a design pattern associates a particular class of known problem with a particular class of effective solution. Analogously, swarm robot engineers would benefit from design patterns that each associate specific robot control schemes with desired collective performance. In this project, we characterise such design patterns for robot swarms in the context of collective foraging and task allocation.


The main purpose of pyCreeper is to wrap tens of lines of python code, required to produce graphs that look good for a publication, into functions. It takes away your need to understand various quirks of matplotlib and gives you back ready-to-use and well-documented code.

Novelty detection with robots using the Grow-When-Required Neural Network

The Grow-When-Required Neural Network implementation in simulated robot experiments using the ARGoS robot simulator.

Fast Data Analysis Using C++ and Python

C++ code that processes data and makes it available to Python, significantly improving the execution speed.