Table of Contents
- We have updated the
README.mdand are preparing to open-source our code! - Code for main parts, including
optimizer,renderer,mapping modules,Voxelized Scene Representation - Installation setup
- 2D-3D Tracking Module
The code has been tested on:
- Ubuntu 22.04 LTS, Python 3.10.14, CUDA 12.2, GeForce RTX 4090/RTX 3090
- CentOS Linux 7, Python 3.12.1, CUDA 12.4, A100/A6000
Clone the repo with --recursive because we have submodules:
git clone --recursive [email protected]/dtc111111/vpgs-slam.git
cd VPGS-SLAM
Make sure that gcc and g++ paths on your system are exported:
export CC=<gcc path>
export CXX=<g++ path>
To find the gcc path and g++ path on your machine, you can use which gcc.
Then setup environment from the provided conda environment file,
conda create -n vpgs-slam -c nvidia/label/cuda-12.1.0 cuda=12.1 cuda-toolkit=12.1 cuda-nvcc=12.1
conda env update --file environment.yml --prune
conda activate vpgs-slam
pip install -r requirements.txt
You will also need to install hloc for loop detection and 3DGS registration.
cd thirdparty/Hierarchical-Localization
python -m pip install -e .
cd ../..
We tested our code on RTX4090 and RTX A6000 GPUs respectively and Ubuntu22 and CentOS7.5.
Here we elaborate on how to load the necessary data, configure Gaussian-SLAM for your use-case, debug it, and how to reproduce the results mentioned in the paper.
We tested our code on Replica, TUM_RGBD, ScanNet, and ScanNet++ datasets. We also provide scripts for downloading Replica and TUM_RGBD in scripts folder. Install git lfs before using the scripts by running git lfs install.
For reconstruction evaluation on Replica, we follow Co-SLAM mesh culling protocal, please use their code to process the mesh first.
For downloading ScanNet, follow the procedure described on here.
Pay attention! There are some frames in ScanNet with inf poses, we filter them out using the jupyter notebook scripts/scannet_preprocess.ipynb. Please change the path to your ScanNet data and run the cells.
For downloading ScanNet++, follow the procedure described on here.
The config files are named after the sequences that we used for our method.
Start the system with the command:
python run_slam.py configs/<dataset_name>/<config_name> --input_path <path_to_the_scene> --output_path <output_path>
You can also configure input and output paths in the config yaml file.
Our implementation is heavily based on Gaussian-SLAM and MonoGS and Loop-Splat. We thank the authors for their open-source contributions. If you use the code that is based on their contribution, please cite them as well.