DOI: 10.5061/dryad.xpnvx0knc
title: Data from: Self-organizing nervous systems for robot swarms

description: We present the self-organizing nervous system (SoNS), a robot swarm
 architecture based on self-organized hierarchy. The SoNS approach
 enables robots to autonomously establish, maintain,
 and reconfigure dynamic multilevel system architectures. For
 example, a robot swarm consisting of n independent robots could
 transform into a single n–robot SoNS and then into several
 independent smaller SoNSs, where each SoNS uses a temporary and
 dynamic hierarchy. Leveraging the SoNS approach, we showed that
 sensing, actuation, and decision making can be coordinated in a
 locally centralized way without sacrificing the benefits of
 scalability, flexibility, and fault tolerance, for which swarm
 robotics is usually studied. In several proof-of-concept robot
 missions—including binary decision making and search and
 rescue—we demonstrated that the capabilities of the SoNS approach
 greatly advance the state of the art in swarm robotics. The missions were
 conducted with a real heterogeneous aerial-ground robot swarm, using a
 custom-developed quadrotor platform. We also demonstrated the
 scalability of the SoNS approach in swarms of up to 250 robots in
 a physics-based simulator and demonstrated several types of system fault
 tolerance in simulation and reality.
description: Please refer to the accompanying article for information about
 the Methods.
description: # Data from: Self-organizing nervous systems for robot swarms
 [https://doi.org/10.5061/dryad.xpnvx0knc](https://doi.org/10.5061/dryad.xpnvx0knc) ##### **Authors** Weixu Zhu  (ULB,  co-first author) Sinan Oguz  (ULB,  co-first author) Mary Katherine Heinrich*  (ULB,  co-first author) Michael Allwright  (ULB) Mostafa Wahby  (ULB) Anders Lyhne Christensen  (SDU) Emanuele Garone  (ULB) Marco Dorigo*  (ULB) ##### \*Contact (Corresponding authors) [mary.katherine.heinrich@ulb.be](mailto:mary.katherine.heinrich@ulb.be) [mdorigo@ulb.ac.be](mailto:mdorigo@ulb.ac.be) This dataset accompanies the article *Self-organizing nervous systems for robot swarms*: [https://doi.org/10.1126/scirobotics.adl5161](https://doi.org/10.1126/scirobotics.adl5161) ## Description of the data The dataset is organized according to experiment type and contains folders of results from real robot experiments and experiments in simulation: * Each folder containing real robot experiments contains data from 5 or 6 trials. * Each folder containing simulation experiments contains folders for different system sizes (i.e., number of robots), which each contain data from 30 or 50 trials. * Some folders contain demos ### For details of the experiment types and setups, please refer to the accompanying article on self-organizing nervous systems (SoNSs): [https://doi.org/10.1126/scirobotics.adl5161](https://doi.org/10.1126/scirobotics.adl5161) ## File structure #### The directories containing results data are organized as follows: #### **1\_Mission\_Self-organized\_hierarchy** * Variant1_Clustered_start * Real_robots_experiments * Simulation_experiments * 8robots * 50robots * Variant2_Scattered_start * Real_robots_experiments * Simulation_experiments * 12robots * 50robots #### **2\_Mission\_Global\_local\_goals** * Variant1_Smaller_denser_obstacles * Real_robots_experiments * Simulation_experiments * 8robots * 50robots * Variant2_Larger_less_dense_obstacles * Real_robots_experiments * Simulation_experiments * 8robots * 50robots #### 3\_Mission\_Collective\_sensing\_actuation * Real_robots_experiments * Simulation_experiments * 8robots * 50robots #### 4\_Mission\_Binary\_decision * Real_robots_experiments * Simulation_experiments * 8robots * 65robots #### 5\_Mission\_Splitting\_merging * Variant1_Search_and_rescue_in_passage * Real_robots_experiments * Simulation_experiments * 8robots * Variant2_Push_away_obstruction * Real_robots_experiments * Simulation_experiments * 5robots * Large_scale_Simulation_experiments * 50robots #### 6\_Scalability\_setups\_a * Scalability_in_decision_making_mission * 35robots * 65robots * 95robots * 125robots #### 6\_Scalability\_setups\_\[b-h] * Scalability_in_SoNS_establishment_mission * \[5-250]robots #### 7\_Fault\_tolerance\_setups * Real_robots_experiments * Simulation_experiments * 8robots * 50robots * Variant1_One_third_chance_for_each_robot_to_fail * Variant2_Two_thirds_chance_for_each_robot_to_fail * Variant3_Temporary_system_wide_vision_failure * 0.5s_failure * 1s_failure * 30s_failure * Variant4_Temporary_system-wide_communication_failure * 0.5s_failure * 1s_failure * 30s_failure * Variants_additional * One_third_chance_for_each_aerial_robot_to_fail * One_third_chance_for_each_ground_robot_to_fail * Two_thirds_chance_for_each_aerial_robot_to_fail * Two_thirds_chance_for_each_ground_robot_to_fail #### 8\_Demos * Aerial_robot_hover_in_simulation * Ground_robot_brain * 3_Mission_Collective_sensing_actuation * Random_quality_values_at_initialization * 1_Mission_Self-organized_hierarchy * 3_Mission_Collective_sensing_actuation * Real_robots_with_failure_and_substitution * Brain_aerial_robot_failure * Ground_robot_failure * Non_brain_aerial_robot_failure ### Each of the above directories contain one folder for each trial, labeled as: run\[1-*n*] **Each run[1-*n*] folder contains the following:** *NOTE: in all csv files, each column corresponds to a variable and each row corresponds to a time step (in ascending order, starting with time step 0).* A. **experiment_data** folder * folder includes one csv file for each robot included in the experiment trial, labeled using the ID number of the robot, as:  * `drone[ID].csv` if the robot is an *S-drone* quadcopter * `pipuck[ID].csv` if the robot is an *e-puck* mobile robot with a *pi-puck* extension board - variables in the `drone[ID].csv` and `pipuck[ID].csv` files: * `position_x`, `position_y`, `position_z`: x,y,z position of the robot recorded by the external motion capture system **(meters)** * `orientation_x`, `orientation_y`, `orientation_z`: x,y,z orientation angles of the robot recorded by the external motion capture system **(Euler angles)** * `virtual_frame_x`, `virtual_frame_y`, `virtual_frame_z`: robot's self-recorded x,y,z orientation angles of its intermediary motion frame relative to its body frame **(Euler angles)** (for an explanation of the intermediary motion frame, please refer to the Supplementary Materials of the accompanying article) * `goal_position_x`, `goal_position_y`, `goal_position_z`: robot's self-recorded x,y,z target position relative to its intermediary motion frame **(meters)** * `goal_orientation_x`, `goal_orientation_y`, `goal_orientation_z`: robot's self-recorded x,y,z target orientation angles relative to its intermediary motion frame **(Euler angles)** * `target_id`: robot's self-recorded node ID in its SoNS target graph * `brain_name`: robot's self-recorded ID of the SoNS that it belongs to (i.e., the robot ID of the brain of the SoNS it belongs to) * *[OPTIONAL – column only included for some simulated experiments]* `parent_name`: robot's self-recorded ID of its parent, if it has one (i.e., the robot ID of its parent, if it has one) B. **error_measurements** folder * **error_per_robot** folder * includes one csv file for each robot included in the experiment trial, labeled using the ID number of the robot, as above * each `drone[ID].csv` or `pipuck[ID].csv` contains one column giving: the actuation error of the robot (please refer to Eq. 1 in the accompanying manuscript) * `error.csv`, which contains one column giving: the mean actuation error of all robots in the experiment (please refer to Eq. 2 in the accompanying manuscript) C. `_failed_robots.txt` *[OPTIONAL – only included for some experiments]* * contains a list of the robot IDs of all robots that were subject to failure in that trial D. `_timesteps_target_SoNS_change.txt` *[OPTIONAL – only included for some experiments]* * contains a list of time steps at which a brain triggered a change in the target graph of its SoNS #### The remaining directories contain videos of the experiments/demos and plots of the results data in the directories above, organized as follows: #### 9\_Videos * 1_Mission_Self-organized_hierarchy * Variant1_Clustered_start * Variant2_Larger_less_dense_obstacles * 2_Mission_Global_local_goals * Variant1_Smaller_denser_obstacles * Variant2_Larger_less_dense_obstacles * 3_Mission_Collective_sensing_actuation * 4_Mission_Binary_decision * 5_Mission_Splitting_merging * Variant1_Search_and_rescue_in_passage * Variant2_Push_away_obstruction * 6_Scalability_setups * 7_Fault_tolerance_setups * Demo_replace_a_robot * 8_Demos * Ground_robot_brain * 3_Mission_Collective_sensing_actuation * 6_Mission_Scalability_in_SoNS_establishment #### 10\_Plots * 1_Mission_Self-organized_hierarchy * 2_Mission_Global_local_goals * 3_Mission_Collective_sensing_actuation * 4_Mission_Binary_decision * 5_Mission_Splitting_merging * 6_Scalability_setups * 7_Fault_tolerance_setups ## Code/Software The code to run the experiments is primarily in C++ and Lua. The code to analyze the results data is primarily in Python. The simulation experiments require the ARGoS simulator and the real robot experiments require ARGoS libraries to be installed on the robots. The code and accompanying information is provided in the Zenodo software repository. ## Supplemental information The following documentation is provided in the Zenodo supplemental files repository: * SoNS theoretical analysis and mathematical proofs * Real indoor arena setup