The software uses MPI (a standard supercomputing computing library) and DroneKit to allow a set of vehicles (drones, rovers, etc) to move as a "bird's swarm" using a simplified version of the Vicsek model.
Each vehicle is to be executed on an independent computer, virtual machine, companion computer etc., running ArduPilot SITL or MAVProxy correspondingly. Moreover, all the computers are to be set as a High Performance Robotic Computing Cluster, see here for the configuration of a simple HPRC cluster
The software can be used in real vehicles running ArduPilot (e.g. PX4 boards, etc) with little modification.
pip install dronekit geographiclib pymavlink
apt-get install python-matplotlib python3-matplotlib
To use this software, please cite the article Towards High Performance Robotic Computing
The user of this software accepts that possible damages to moving vehicles can occur and release the author(s) of this software of any complaint or reclamation.
- Simplified Vicsek model: The software does not currently consider the noise feature in the Vicsek model
- Required modifications for real vehicles: The software does not currently include conflict detection
To execute the software, launch the following command:
mpirun -np X --rankfile <rankfile> python parallelVicsek.py -v <vehicleType> -s <simTime> -t <telemetryFolder>
Where
X = Quantity of vehicles
vehicleType = <drone, rover>
simTime = Simulation time in seconds
telemetryFolder = Shared folder in the HPRC cluster
Finally the rankfile is used to execute a single MPI process per vehicle (HPRC node). An example is the following:
rank 0=<hostname_vehicle_1> slot=0
rank 1=<hostname_vehicle_2> slot=0
rank 2=<hostname_vehicle_3> slot=0
rank 3=<hostname_vehicle_4> slot=0
rank 4=<hostname_vehicle_5> slot=0