welcome to supereight: a high performance template octree library and a dense volumetric SLAM pipeline implementation.
This software implements the octree library and dense SLAM system presented in our paper Efficient Octree-Based Volumetric SLAM Supporting Signed-Distance and Occupancy Mapping. If you publish work that relates to this software, please cite our paper as:
@ARTICLE{VespaRAL18, author={E. Vespa and N. Nikolov and M. Grimm and L. Nardi and P. H. J. Kelly and S. Leutenegger}, journal={IEEE Robotics and Automation Letters}, title={Efficient Octree-Based Volumetric SLAM Supporting Signed-Distance and Occupancy Mapping}, year={2018}, volume={3}, number={2}, pages={1144-1151}, doi={10.1109/LRA.2018.2792537}, ISSN={}, month={April}}
The core library is released under the BSD 3-clause Licence. There are part of the this software that are released under MIT licence, see individual headers for which licence applies.
supereight is made of three main different components:
se_core
: the main header only template octree libraryse_denseslam
: the volumetric SLAM pipelines presented in [1], which can be compiled in a library and used in external projects. Notice that the pipeline API exposes the discrete octree map via a shared_ptr. As the map is a template class, it needs to be instantiated correctly. You do this by defining aSE_FIELD_TYPE
macro before includingDenseSLAMSystem.h
. The field type must be consistent with the library you are linking against. Have a look at se_denseslam and se_apps CMakeLists to see how it is done in our examples.se_apps
: front-end applications which run the se-denseslam pipelines on given inputs or live camera.
Additionally, se_tools
includes the dataset generation tool and some libraries
required by se_denseslam
and se_apps
.
The following packages are required to build the se-denseslam
library:
- CMake >= 3.10
- Eigen3
- Sophus
- OpenMP (optional)
- GTest
The benchmarking and GUI apps additionally require:
- GLut
- OpenGL
- OpenNI2
- PkgConfig/Qt5
- Python/Numpy for evaluation scripts
From the project root:
make
This will create a build/ folder from which cmake ..
is invoked.
To run one of the apps in se_apps you need to first produce an input file. We use SLAMBench 1.0 file format (https://github.com/pamela-project/slambench). The tool scene2raw can be used to produce an input sequence from the ICL-NUIM dataset:
mkdir living_room_traj2_loop
cd living_room_traj2_loop
wget http://www.doc.ic.ac.uk/~ahanda/living_room_traj2_loop.tgz
tar xzf living_room_traj2_loop.tgz
cd ..
build/se_tools/scene2raw living_room_traj2_loop living_room_traj2_loop/scene.raw
Then it can be used as input to one of the apps
./build/se_apps/se-denseslam-sdf-main -i living_room_traj2_loop/scene.raw -s 4.8 -p 0.34,0.5,0.24 -z 4 -c 2 -r 1 -k 481.2,-480,320,240 > benchmark.log