[A Highly Customisable Multi-Robot Foraging Simulation]

Simulation models C++ Bash script Date: Feb 2017

Technologies used: C++ 11, CMake, ARGoS simulator, Bash scripts, Git

An ARGoS simulation of multi-robot robot foraging using various robot controllers and environments. This code has been used in various papers (see References) and thus allows to run different types of simulations.

This code repository includes:
  • Parameterisable libraries for three different robot controllers
  • A parameterisable library that controls the environment
  • A bash script that makes use of CMake to setup and build the project

Screenshot of the simulation environment All robots start in the base, placed in the centre of the arena. The base is divided into three sections: an interior circular resting bay with an annular observation bay around it and an annular unloading bay around that. A light source, placed above the centre of the base, is used by the robots as a reference for navigation towards and away from the base centre.

There are two foraging missions possible:
  • Central-place foraging [2,3,4,5], where robots search for worksites (green cylinders, also referred to as "tasks" or "deposits" in the code) and carry resources back to the unloading bay. Robots in the bee-inspired swarm [1,2,3,4,5] then use the observation bay to recruit other robots nearby.
  • Basic foraging [2,3], robots do not bring resources back to the base and consume the deposits while near them over time.

Each worksite can require N robots to work on it, meaning that no resource can be extracted unless at least N robots are nearby. Also, each worksite can have a "quality" associated with it, which is the amount of resource a robot gets by extracting one unit of volume from the worksite (see [4]).

There are three different robot controllers:
  • Solitary [1,2]: Robots do not communicate
  • Local broadcaster [1,2,3]: Robots recruit each other near worksites
  • Bee [1,2,3,4,5]: Robots recruit each other in the base


[1] Pitonakova, L., Crowder, R. & Bullock, S. (2018). Information exchange design patterns for robot swarm foraging and their application in robot control algorithms. Frontiers in Robotics and AI, DOI: 10.3389/frobt.2018.00047

[2] Pitonakova, L., Crowder, R. & Bullock, S. (2018). The Information-Cost-Reward framework for understanding robot swarm foraging. Swarm Intelligence, 12(1), 71-96.

[3] Pitonakova, L., Crowder, R. & Bullock, S. (2018). The importance of information flow regulation in preferentially foraging robot swarms. Proceedings of the Eleventh International Conference on Swarm Intelligence (ANTS 2018), Springer.

[4] Pitonakova, L., Crowder, R. & Bullock, S. (2016). Information flow principles for plasticity in foraging robot swarms. Swarm Intelligence, 10(1), 33–63.

[5] Pitonakova, L., Crowder, R. & Bullock, S. (2016). Task allocation in foraging robot swarms: The role of information sharing. In Gershenson, C. et al. (eds.), Proceedings of the Fifteenth International Conference on the Synthesis and Simulation of Living Systems (ALIFE XV), MIT Press, 306-313.

{Please enable JavaScript in order to post comments}

Fast Data Analysis Using C++ and Python

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

Designing Robot Swarms

This project looks at the challenges involved in modeling, understanding and designing of multi-robot systems.

V-REP, Gazebo or ARGoS? A robot simulators comparison

Let’s have a look at three commonly used open-source simulators for robotics: V-REP, Gazebo and ARGoS, to find out which one suits your project the best.

Robot swarms in action

Watch e-puck robots collect resources and bring them back to base. 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.


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.