Skip to content

darglein/Snake-SLAM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Darius Rueckert
May 8, 2023
abc5061 · May 8, 2023

History

11 Commits
May 8, 2023
Jan 6, 2023
Apr 27, 2021
May 8, 2023
Apr 27, 2021
Apr 27, 2021
Apr 27, 2021
May 8, 2023
Apr 27, 2021
Apr 27, 2021
Jan 6, 2023
Apr 27, 2021
Apr 27, 2021

Repository files navigation

Snake-SLAM

Abstract. Snake-SLAM is a scalable visual inertial SLAM system for autonomous navigation in low-power aerial devices. The tracking front-end features map reuse, loop closing, relocalization, and supports monocular, stereo, and RGBD input. The keyframes are reduced by a graph-based simplification approach and further refined using a novel deferred mapping stage to ensure a sparse yet accurate global map. The optimization back-end decouples IMU state estimation from visual bundle adjustment and solves them separately in two simplified sub problems. This greatly reduces computational complexity and allows Snake-SLAM to use a larger local window size than existing SLAM methods. Our system implements a novel multi-stage VI initialization scheme, which uses gyroscope data to detect visual outliers and recovers metric velocity, gravity, and scale. We evaluate Snake-SLAM on the EuRoC dataset and show that it outperforms all other approaches in efficiency while also achieving state-of-the-art tracking accuracy.

Prerequisites

Download and install the following libraries before continuing with the build instructions.

Build Instructions (Ubuntu 20.04, Cuda 11.1)

sudo apt install libyaml-cpp-dev

cd Snake-SLAM
git submodule update --init --recursive

# Other compilers should also work here
export CXX=clang++-10
export CUDAHOSTCXX=g++-9

mkdir build
cd build
cmake ..
make -j8

Run Snake-SLAM on the EuRoC dataset

  • Open the file configs/euroc.ini
  • Update the line [Dataset] -> dir=XX
  • For example: dir = /ssd2/slam/euroc/MH_01/mav0
  • Run Snake-SLAM with
cd Snake-SLAM
./build/bin/snake_slam configs/euroc.ini

Notes on Efficiency

At the time of release, Snake-SLAM is the most efficient VI-SLAM system. This can be validated by adjusting the Dataset-playback_fps in the config file.

By default we have set async = false in the config file and which disables all non-deterministic parallelism. Maximum performance will be only be achieved by setting async = true. However this can reduce tracking accuracy, if the playback_fps is unreasonably high. Our recommendation therefore is:

Debugging, Testing, Development

async = false
playback_fps = 200

Deployment, Real-world Usage

async = true
playback_fps = 30

Additional Information

  • All trajectories used in the paper are included here in euroc_mono_25_runs_each.zip and euroc_stereo_25_runs_each.zip
  • Feel free to use these trajectories for further analysis or recompute them using the config file configs/euroc.ini
  • The Snake-SLAM source code is released under the MIT License. You are allowed to use the code in commercial or non-commercial projects, however a reference to this repository and the respective paper (see below) must be made.

Publication

Rückert, Darius, and Marc Stamminger. "Snake-SLAM: Efficient Global Visual Inertial SLAM using Decoupled Nonlinear Optimization." Proceedings of the 2021 International Conference on Unmanned Aircraft Systems (ICUAS), Athen 2021.

https://ieeexplore.ieee.org/abstract/document/9476760

@INPROCEEDINGS{9476760,
  author={Rückert, Darius and Stamminger, Marc},
  booktitle={2021 International Conference on Unmanned Aircraft Systems (ICUAS)}, 
  title={Snake-SLAM: Efficient Global Visual Inertial SLAM using Decoupled Nonlinear Optimization}, 
  year={2021},
  volume={},
  number={},
  pages={219-228},
  doi={10.1109/ICUAS51884.2021.9476760}}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published