├── .gitignore ├── Flat ├── collaborative_config.ini ├── collaborative_sequences.txt ├── global_config.ini ├── global_poses.txt └── global_sequences.txt ├── House ├── collaborative_config.ini ├── collaborative_sequences.txt ├── global_config.ini ├── global_poses.txt └── global_sequences.txt ├── Lab ├── collaborative_config.ini ├── global_config.ini ├── global_poses.txt └── global_sequences.txt ├── Priory ├── collaborative_config.ini ├── global_config.ini └── global_poses.txt ├── README.md ├── download-big.sh ├── download-normal.sh ├── reconstruct-collaborative.sh ├── reconstruct-global.sh └── teaser.png /.gitignore: -------------------------------------------------------------------------------- 1 | frames/ 2 | frames_resized/ 3 | meshes/ 4 | zips/ 5 | -------------------------------------------------------------------------------- /Flat/collaborative_config.ini: -------------------------------------------------------------------------------- 1 | [SceneParams] 2 | mu=0.06 3 | voxelSize=0.015 4 | 5 | [CollaborativeComponent] 6 | stopAtFirstConsistentReconstruction=1 -------------------------------------------------------------------------------- /Flat/collaborative_sequences.txt: -------------------------------------------------------------------------------- 1 | turret2sittingroom study2sittingroom kitchen2study bathroom2study 2 | -------------------------------------------------------------------------------- /Flat/global_config.ini: -------------------------------------------------------------------------------- 1 | [SceneParams] 2 | mu=0.06 3 | voxelSize=0.015 -------------------------------------------------------------------------------- /Flat/global_poses.txt: -------------------------------------------------------------------------------- 1 | bathroom2study [(0.919967,0.00830128),(0.00338598,4.59253),(-0.39198,0.0568171),(-0.00113867,0.804425)] 2 | kitchen2study [(0.721676,0.193518),(0.00686736,2.96101),(-0.692191,0.229313),(-0.00274813,0.459551)] 3 | study2sittingroom [(0.721676,0.0475766),(0.00686717,0.87385),(-0.692191,0.0555533),(-0.002748,0.684948)] 4 | turret2sittingroom [(1,0),(0,0),(0,0),(0,0)] 5 | -------------------------------------------------------------------------------- /Flat/global_sequences.txt: -------------------------------------------------------------------------------- 1 | turret2sittingroom study2sittingroom kitchen2study bathroom2study 2 | -------------------------------------------------------------------------------- /House/collaborative_config.ini: -------------------------------------------------------------------------------- 1 | [SceneParams] 2 | mu=0.06 3 | voxelSize=0.015 4 | 5 | [CollaborativeComponent] 6 | stopAtFirstConsistentReconstruction=1 -------------------------------------------------------------------------------- /House/collaborative_sequences.txt: -------------------------------------------------------------------------------- 1 | frontroom2study hall2frontbedroom hall2oldkitchen mainbedroom2studio diningroom2kitchen 2 | -------------------------------------------------------------------------------- /House/global_config.ini: -------------------------------------------------------------------------------- 1 | [SceneParams] 2 | mu=0.06 3 | voxelSize=0.015 -------------------------------------------------------------------------------- /House/global_poses.txt: -------------------------------------------------------------------------------- 1 | hall2frontbedroom [(0.251064,0.190829),(0.00154578,-0.465639),(0.967968,-0.0440877),(-0.0015092,2.99167)] 2 | hall2oldkitchen [(0.675149,0.107849),(0.00197005,-3.57336),(0.737673,-0.0900249),(-0.00295613,-0.214625)] 3 | mainbedroom2studio [(0.995822,0.10154),(-0.00248109,-0.359374),(-0.0912708,1.15603),(-0.0014133,-2.48019)] 4 | diningroom2kitchen [(0.342461,0.122123),(0.00242226,1.90992),(0.939515,-0.0623586),(0.00516944,2.34805)] 5 | frontroom2study [(1,0),(0,0),(0,0),(0,0)] 6 | -------------------------------------------------------------------------------- /House/global_sequences.txt: -------------------------------------------------------------------------------- 1 | frontroom2study hall2frontbedroom hall2oldkitchen mainbedroom2studio diningroom2kitchen 2 | -------------------------------------------------------------------------------- /Lab/collaborative_config.ini: -------------------------------------------------------------------------------- 1 | [SceneParams] 2 | mu=0.06 3 | voxelSize=0.015 4 | 5 | [CollaborativeComponent] 6 | stopAtFirstConsistentReconstruction=1 -------------------------------------------------------------------------------- /Lab/global_config.ini: -------------------------------------------------------------------------------- 1 | [SceneParams] 2 | mu=0.08 3 | voxelSize=0.02 -------------------------------------------------------------------------------- /Lab/global_poses.txt: -------------------------------------------------------------------------------- 1 | firstfloor [(0.396228,-0.0795174),(-0.000410459,0.572221),(0.918146,0.0337818),(-0.00344818,-0.210323)] 2 | groundfloor [(0.00453998,0.0869759),(0.00543024,0.314715),(0.999963,-0.00438249),(-0.00482054,-0.472661)] 3 | secondfloor [(0.939403,1.14365),(-0.00134583,6.12863),(-0.342764,2.98066),(0.00574392,-7.7368)] 4 | atrium [(1,0),(0,0),(0,0),(0,0)] 5 | -------------------------------------------------------------------------------- /Lab/global_sequences.txt: -------------------------------------------------------------------------------- 1 | groundfloor firstfloor atrium secondfloor 2 | -------------------------------------------------------------------------------- /Priory/collaborative_config.ini: -------------------------------------------------------------------------------- 1 | [SceneParams] 2 | mu=0.06 3 | voxelSize=0.015 4 | 5 | [CollaborativeComponent] 6 | stopAtFirstConsistentReconstruction=1 -------------------------------------------------------------------------------- /Priory/global_config.ini: -------------------------------------------------------------------------------- 1 | [SceneParams] 2 | mu=0.06 3 | voxelSize=0.015 -------------------------------------------------------------------------------- /Priory/global_poses.txt: -------------------------------------------------------------------------------- 1 | bed2office [(0.192175,1.75091),(0.00374757,-1.74415),(-0.98133,0.33765),(-0.00683885,-0.204974)] 2 | dining2guest [(0.704801,0.542351),(-0.00821954,0.387522),(0.709357,-0.534065),(-0.000613011,0.361271)] 3 | guest2bath [(0.771728,-0.309986),(-0.00290339,0.780641),(0.635921,0.382736),(-0.00560192,0.338934)] 4 | kitchen2dining [(0.123573,0.715759),(-0.00529781,-0.698072),(0.992309,-0.101338),(0.00488485,1.7221)] 5 | living2dining [(0.86357,0.360676),(-0.013268,0.931877),(0.504044,-0.589189),(-0.00314882,0.675492)] 6 | bath2office [(1,0),(0,0),(0,0),(0,0)] 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Collaborative SLAM Dataset (CSD) 2 | 3 | ![teaser](teaser.png) 4 | 5 | *Project page:* [http://www.robots.ox.ac.uk/~tvg/projects/CollaborativeSLAM] 6 | 7 | This is the dataset associated with our ISMAR 2018 paper on collaborative large-scale dense 3D reconstruction (see below). Our dataset comprises 4 different subsets - Flat, House, Priory and Lab - each containing a number of different sequences that can be successfully relocalised against each other. Detailed information about the sequences in each subset can be found in the supplementary material for our paper. 8 | 9 | Each sequence was captured at 5Hz using an Asus ZenFone AR augmented reality smartphone, which produces depth images at a resolution of 224x172, and colour images at a resolution of 1920x1080. To improve the speed at which we were able to load sequences from disk, we resized the colour images down to 480x270 (i.e. 25% size) to produce the collaborative reconstructions we show in the paper, but we nevertheless provide both the original and resized images as part of the dataset. We also provide the calibration parameters for the depth and colour sensors, the 6D camera pose at each frame, and the optimised global pose produced for each sequence when running our approach on all of the sequences in each subset. Finally, we provide a pre-built mesh of each sequence, pre-transformed by its optimised global pose to allow the sequences from each subset to be loaded into MeshLab or CloudCompare with a common coordinate system. 10 | 11 | ## Acknowledgements 12 | 13 | We gratefully acknowledge the help of Christopher (Kit) Rabson in setting up the hosting for this dataset. 14 | 15 | ## Publications 16 | 17 | If you use this dataset for your research, please cite the following paper: 18 | ``` 19 | @article{Golodetz2018, 20 | author = {Stuart Golodetz* and Tommaso Cavallari* and Nicholas A Lord* and Victor A Prisacariu and David W Murray and Philip H S Torr}, 21 | title = {{Collaborative Large-Scale Dense 3D Reconstruction with Online Inter-Agent Pose Optimisation}}, 22 | journal = {TVCG (ISMAR Special Issue)}, 23 | year = {2018} 24 | } 25 | ``` 26 | 27 | # Installation Guide 28 | 29 | ## 1. Downloading the Dataset 30 | 31 | 1. Choose a directory for the dataset, hereafter referred to as ``. 32 | 33 | 2. Clone the CollaborativeSLAMDataset repository into ``. 34 | 35 | 3. Change to the dataset directory: 36 | 37 | ``` 38 | $ cd 39 | ``` 40 | 41 | 4. Run the normal download script: 42 | 43 | ``` 44 | $ ./download-normal.sh 45 | ``` 46 | 47 | 5. Run the big download script to download the full-size sequences (optional): 48 | 49 | ``` 50 | $ ./download-big.sh 51 | ``` 52 | 53 | ## 2. Running Global Reconstructions 54 | 55 | 1. Install SemanticPaint by following the instructions at [https://github.com/torrvision/spaint]. 56 | 57 | 2. Run the global reconstruction script, specifying the necessary parameters, e.g. 58 | 59 | ``` 60 | $ ./reconstruct-global.sh Flat frames_resized /c/spaint/build/bin/apps/spaintgui/spaintgui 61 | ``` 62 | 63 | Note that the second and third parameters default to `frames_resized` and `/c/spaint/build/bin/apps/spaintgui/spaintgui`, respectively. 64 | 65 | ## 3. Running Collaborative Reconstructions 66 | 67 | 1. Install SemanticPaint by following the instructions at [https://github.com/torrvision/spaint]. 68 | 69 | 2. Run the collaborative reconstruction script, specifying the necessary parameters, e.g. 70 | 71 | ``` 72 | $ ./reconstruct-collaborative.sh Flat frames_resized /c/spaint/build/bin/apps/spaintgui/spaintgui 73 | ``` 74 | 75 | Note that the second and third parameters default to `frames_resized` and `/c/spaint/build/bin/apps/spaintgui/spaintgui`, respectively. 76 | 77 | # Hints and Tips 78 | 79 | * You can generate a single sequence of posed RGB-D frames for each subset of the dataset by running the `reconstruct-global.sh` script and saving the sequence to disk in `spaintgui`. 80 | 81 | # Licence 82 | 83 | This dataset is licensed under a CC-BY-SA licence. See [https://creativecommons.org/licenses/by-sa/4.0/legalcode] for the full legal text. 84 | 85 | SemanticPaint itself is licensed separately - see the SemanticPaint repository for details. 86 | 87 | # History 88 | 89 | * 2018-OCT-17: first public release 90 | -------------------------------------------------------------------------------- /download-big.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash -e 2 | 3 | mkdir -p zips 4 | 5 | FILES='Flat-frames-bathroom2study.zip Flat-frames-kitchen2study.zip Flat-frames-study2sittingroom.zip Flat-frames-turret2sittingroom.zip House-frames-diningroom2kitchen.zip House-frames-frontroom2study.zip House-frames-hall2frontbedroom.zip House-frames-hall2oldkitchen.zip House-frames-mainbedroom2studio.zip Lab-frames-atrium.zip Lab-frames-firstfloor.zip Lab-frames-groundfloor.zip Lab-frames-secondfloor.zip Priory-frames-bath2office.zip Priory-frames-bed2office.zip Priory-frames-dining2guest.zip Priory-frames-guest2bath.zip Priory-frames-kitchen2dining.zip Priory-frames-living2dining.zip' 6 | 7 | for f in $FILES 8 | do 9 | if [ ! -f "zips/$f" ] 10 | then 11 | echo "Downloading $f..." 12 | curl -L "https://tvg-collaborativeslam.s3.eu-west-1.amazonaws.com/$f" > "zips/$f" 13 | 14 | echo "Unzipping $f..." 15 | unzip -qq "zips/$f" 16 | else 17 | echo "Skipping $f, already downloaded" 18 | fi 19 | done 20 | -------------------------------------------------------------------------------- /download-normal.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash -e 2 | 3 | mkdir -p zips 4 | 5 | FILES='Flat-frames_resized-bathroom2study.zip Flat-frames_resized-kitchen2study.zip Flat-frames_resized-study2sittingroom.zip Flat-frames_resized-turret2sittingroom.zip Flat-meshes.zip House-frames_resized-diningroom2kitchen.zip House-frames_resized-frontroom2study.zip House-frames_resized-hall2frontbedroom.zip House-frames_resized-hall2oldkitchen.zip House-frames_resized-mainbedroom2studio.zip House-meshes.zip Lab-frames_resized-atrium.zip Lab-frames_resized-firstfloor.zip Lab-frames_resized-groundfloor.zip Lab-frames_resized-secondfloor.zip Lab-meshes.zip Priory-frames_resized-bath2office.zip Priory-frames_resized-bed2office.zip Priory-frames_resized-dining2guest.zip Priory-frames_resized-guest2bath.zip Priory-frames_resized-kitchen2dining.zip Priory-frames_resized-living2dining.zip Priory-meshes.zip' 6 | 7 | for f in $FILES 8 | do 9 | if [ ! -f "zips/$f" ] 10 | then 11 | echo "Downloading $f..." 12 | curl -L "https://tvg-collaborativeslam.s3.eu-west-1.amazonaws.com/$f" > "zips/$f" 13 | 14 | echo "Unzipping $f..." 15 | unzip -qq "zips/$f" 16 | else 17 | echo "Skipping $f, already downloaded" 18 | fi 19 | done 20 | -------------------------------------------------------------------------------- /reconstruct-collaborative.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash -e 2 | 3 | # Check that the essential first parameter has been specified. 4 | if [ $# -eq 0 ] 5 | then 6 | echo "Usage: reconstruct-collaborative.sh [frames directory] [spaintgui location]" 7 | exit 8 | fi 9 | 10 | if [ ! -d $1 ] 11 | then 12 | echo "Error: The subset '$1' does not exist" 13 | exit 14 | fi 15 | 16 | # The frames subdirectory can be specified as the second parameter of the script. 17 | dir=${2:-frames_resized} 18 | 19 | # The location of spaintgui can be specified as the third parameter of the script. 20 | spaintgui=${3:-/c/spaint/build/bin/apps/spaintgui/spaintgui} 21 | 22 | # Change to the subset directory. 23 | cd $1 24 | 25 | # Determine which sequences to use, and in what order. 26 | if [ -f collaborative_sequences.txt ] 27 | then 28 | sequences=`cat collaborative_sequences.txt` 29 | else 30 | sequences=`ls $dir` 31 | fi 32 | 33 | # Construct the command line. 34 | args="--pipelineType=collaborative --subwindowConfigurationIndex=7 " 35 | 36 | if [ -f collaborative_config.ini ] 37 | then 38 | args="$args -f collaborative_config.ini " 39 | fi 40 | 41 | for f in $sequences 42 | do 43 | echo $f 44 | args="$args -s $dir/$f -t Disk " 45 | done 46 | 47 | # Run the application. 48 | $spaintgui $args 49 | -------------------------------------------------------------------------------- /reconstruct-global.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash -e 2 | 3 | # Check that the essential first parameter has been specified. 4 | if [ $# -eq 0 ] 5 | then 6 | echo "Usage: reconstruct-global.sh [frames directory] [spaintgui location]" 7 | exit 8 | fi 9 | 10 | if [ ! -d $1 ] 11 | then 12 | echo "Error: The subset '$1' does not exist" 13 | exit 14 | fi 15 | 16 | # The frames subdirectory can be specified as the second parameter of the script. 17 | dir=${2:-frames_resized} 18 | 19 | # The location of spaintgui can be specified as the third parameter of the script. 20 | spaintgui=${3:-/c/spaint/build/bin/apps/spaintgui/spaintgui} 21 | 22 | # Change to the subset directory. 23 | cd $1 24 | 25 | # Determine which sequences to use, and in what order. 26 | if [ -f global_sequences.txt ] 27 | then 28 | sequences=`cat global_sequences.txt` 29 | else 30 | sequences=`ls $dir` 31 | fi 32 | 33 | # Construct the command line. 34 | args="--pipelineType=slam --relocaliserType=none --subwindowConfigurationIndex=3 -g global_poses.txt " 35 | 36 | if [ -f global_config.ini ] 37 | then 38 | args="$args -f global_config.ini " 39 | fi 40 | 41 | for f in $sequences 42 | do 43 | echo $f 44 | args="$args -s $dir/$f -t Disk " 45 | done 46 | 47 | # Run the application. 48 | $spaintgui $args 49 | -------------------------------------------------------------------------------- /teaser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/torrvision/CollaborativeSLAMDataset/e2690f2d1a650969c1830a7dc38f32ef2a112206/teaser.png --------------------------------------------------------------------------------