DOI: 10.5061/dryad.3j9kd51j8
title: Data from: Secure and secret cooperation in robot swarms

description: The importance of swarm robotics systems in both academic research and
 real-world applications is steadily increasing. However, to reach
 widespread adoption, new models that ensure the secure cooperation of
 large groups of robots need to be developed. This work introduces a method
 to encapsulate cooperative robotic missions in an authenticated data
 structure known as Merkle tree. With this method, operators can provide
 the "blueprint" of the swarm's mission without disclosing
 its raw data. In other words, data verification can be separated from data
 itself. We propose a system where robots in a swarm, to cooperate towards
 mission completion, have to "prove'' their integrity to
 their peers by exchanging cryptographic proofs. We show the implications
 of this approach for two different swarm robotics missions: foraging and
 maze formation. In both missions, swarm robots were able to cooperate and
 carry out sequential tasks without having explicit knowledge about the
 mission's high-level objectives. The results presented in this work
 demonstrate the feasibility of using Merkle trees as a cooperation
 mechanism for swarm robotics systems in both simulation and real-robot
 experiments, which has implications for future decentralized robotics
 applications where security plays a crucial role. This dataset includes
 all experimental data generated for this paper. 
description: <strong>Content and structure</strong>
 This dataset is composed of four compressed tarball files
 (tar.gz), each one representing one of the following categories:
 <code>real_robots</code> This file contains all the data collected during the real-robot experiments presented in the paper. The structure of the subdirectory hierarchy is the following:     |-- (type of mission) -&gt; either foraging or maze_formation<br>     |   `-- R (number of robots)<br>     |       `-- T (number of tasks) At the end of this tree hierarchy, two folders can be seen: data and videos. Within videos, you will find one <code>.avi</code> file for each real-robot experiment. The name of the file is generated based on the experiment's timestamp (e.g., 2020-07-23-04-49-43). For each video file there is one corresponding data file (with the same timestamp) in the data folder. <code>real_robot data file (.bag)</code> Within the data folder you will find one <code>.bag</code> file per experiment. As mentioned in the supplementary material of the paper, ROS (Robot Operating System) was used in order to publish/subscribe information to/from the robots. Accordingly, we used the rosbag toolbox to record every message the robots sent/received during the experiment into a <code>.bag</code> file. Therefore, you can recreate each experiment by "playing" each <code>.bag</code> file in your ROS environment: <code>$ rosbag play file.bag    </code> For more information about how to filter, reindex, or obtain additional information from these files, please take a look here. <code>simulation</code> This file contains all the data collected during the simulation experiments presented in the paper. The structure of the subdirectory hierarchy is the following:     |-- (type of mission) -&gt; either foraging or maze_formation<br>     |   `-- R (number of robots)<br>     |       `-- T (number of tasks)<br>     |           `-- SIM (number of simulation run)<br>     <code>simulation data files (.dat & .json)</code> Within each SIM folder you will find two files: <code>.dat</code>, this file contains information about the progress of the simulation. In particular, how many robots completed their Merkle tree copy and at what time they did it. The structure of this file is the following:   time step     number of robots with a completed Merkle tree   For instance, in simulations where there are two robots involved (R2), the value for the last row for the "number of robots with a completed MT" field would be 2. In this regard, the last value of the column "time step" would be the time all robots completed their Merkle tree copies. <code>.json</code>, this file contains a list of objects (one for each time step) that describes the folllowing information: <code>robots</code> -&gt; list containing all information from the robots: <code>id</code> -&gt; id of the robot currently displaying information <code>mk</code> -&gt; Merkle tree object for robot with <code>id</code> as identifier <code>by_robot</code> -&gt; leaf id completed by the robot itself <code>leaf_received</code> -&gt; leaf id received from another robot <code>from_robot</code> -&gt; robot id that sent the leaf described in <code>leaf_received</code> <code>neighbors</code> -&gt; information about the robot neighbors <code>id</code> -&gt; robot neighbor id <code>range</code> -&gt; robot neighbor range <code>time</code> -&gt; current time step <code>Merkle_tree_statistics</code> This file contains all the data collected in order to recreate Table 1. Each <code>.pickle</code> file contains three lists (one for each LEGO model) for the following concepts: <code>merkle_creation</code> -&gt; creation time of the complete Merkle tree <code>proof_generation</code> -&gt; proof generation time for a random leaf in the Merkle tree <code>proof_validation</code> -&gt; proof validation time for a random leaf in the Merkle tree These files have been generated using the pickle python library. This library allows to convert a python variable to bytestream and viceversa. You can read each <code>.pickle</code> file and convert it into a python "list of lists" variable by ussing the following command in your python environment: <code>    # Load the pickle library<br>     import pickle</code> <code>    merkle_creation_times = pickle.load( open( "merkle_creation.pickle", "rb" ) )   </code> More information about the pickle library can be found here. <code>marketplace</code> This file contains all the data collected during the IRIDIA marketplace set of experiments. The folder structure of this directory is the following: data -&gt; <code>.bag</code> files for the completed services videos -&gt; <code>.avi</code> files for the completed services pics -&gt; <code>.png</code> files for the completed services <strong>Demos</strong> This list contains one high-quality demo video for each scenario presented in this dataset: M1. Foraging - 16 Robots, 8 Tasks (Simulation).mp4 M2. Foraging - 16 Robots, 8 Tasks.mp4  M3. Maze formation - 16 Robots (Simulation).mp4  M4. Maze formation - 16 Robots.mp4 M5. Tangible Swarm (Supporting features).mp4