This repository contains the code and the supplementary material for the study: A. Carminati, D. Azzalini, S. Vantini, and F. Amigoni, “A Distributed Approach for Fault Detection in Swarms of Robots,” Proceedings of the 2024 International Conference on Autonomous Agents and Multiagent Systems, 2024.
The code is tested on the version 3.0.0-beta56 of the ARGoS simulator.
To download this folder, use the following command-line instruction:
git clone --recurse-submodule [email protected]:AleCarminati/ml-faultdetection-epuck.git
Then, by using cd ml-faultdetection-epuck
you will enter the newly downloaded folder.
To build the executable, use the following list of commands:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
For end users: the main settings of the experiment can be found in the file experiments/fault_detection.argos
. Attention: modifying the parameters of the robots and the environment could invalidate the performances of the fault detection algorithm.
For developers: the parameters of the fault detection algorithm can be found in the file config.ini
. Modify them only if you know what you are doing!
To run the experiment, from the terminal in the root folder write:
argos3 -c experiments/fault_detection.argos
When you modify the code, from the root folder run the command:
./execute.sh
which recompiles the code and then executes the simulation.
To run one experiment for each type of fault, from the root folder run the command:
./execute_all_faults.sh
To run the experiment with more than one faulty robot, from the terminal in the root folder write:
argos3 -c experiments/fault_detection_multifault.argos
When you modify the code, from the root folder run the command:
./execute.sh m
which recompiles the code and then executes the simulation.
Before committing any changes, be sure to have installed the pre-commit hooks by running the following command from the root folder:
./bash/setup_pre_commit.sh
The pre-commit hooks contain some automatic checks to improve readability of the code. In particular, it uses the clang
package.
Commit 19f511f: this version of the software has been used to generate training data and to test the fault detection system when a single robot is fault, obtaining the results that are displayed in the master's thesis.
Commit c503768: this version of the software has been used to test the fault detection system when multiple robots are fault, obtaining the results that are displayed in the master's thesis.