Installation
This page provides the recommended installation workflow, matching the
procedure in the project README.md.
For detailed task descriptions, manual CMake notes, and debugging guidance, see Detailed Installation.
Download
Clone the repository and initialize submodules:
# Clone SLAM-MER
git clone <slam-mer-repository-url>
# Go to the repository directory
cd slam-mer
# Sync optional module URLs before initializing submodules
./scripts/sync_optional_modules.sh
# Initialize and update submodules
git submodule update --init --recursive
Setup
The code was tested on Ubuntu 24.04 with CUDA 12.8, CUDA_ARCH=86, and
TORCH_CUDA_ARCH_LIST=8.6. To simplify compilation, SLAM-MER uses mise
tasks. Check and update mise.toml accordingly, especially the CUDA version
and architecture.
Run the following from the repository root:
# Set up trusted configuration
mise trust
# Install tools
mise install
# Create venv and install dependencies
uv sync
Build
Build from scratch using the standard workflow:
# Install system dependencies
mise run install_dependencies
# Build third-party dependencies
mise run build_thirdparties
# Configure SLAM-MER extensions
mise run configure_modules
# Build extensions
mise run build_modules
# Build SLAM-MER libraries
mise run build
What Each Step Does
./scripts/sync_optional_modules.shSets optional module submodule URLs based on the current repository naming: repositories ending with_privateuse private optional module repos.git submodule update --init --recursiveInitializes third-party submodules used by the project, includingthirdparty/gtsam,thirdparty/PoseLib,thirdparty/faiss,thirdparty/depth_inference, andthirdparty/visual_place_localization.mise run install_dependenciesInstalls Ubuntu packages used by the standard build, including Ninja, GCC/G++, CUDA Toolkit 12.8, Boost, GTSAM prerequisites, OpenBLAS/LAPACK, YAML-CPP, Eigen3, TBB, libpng, libjpeg-turbo, and cuDNN when available.mise run build_thirdpartiesBuilds and installs core dependencies required by SLAM-MER:GTSAM (
thirdparty/gtsam/build/install)Rerun SDK (
thirdparty/rerun_cpp_sdk/build/install)PoseLib (
thirdparty/PoseLib/build/install)FAISS with GPU support (
thirdparty/faiss/build/install)
mise run configure_modulesPrepares module repositories used by SLAM-MER by running their localmise trust,mise install, anduv syncworkflows:thirdparty/depth_inferencethirdparty/visual_place_localization
mise run build_modulesBuilds the optional modules used by the defaultmise run buildprofile:depth_inference: downloads ONNX Runtime and depth-model assets, then builds and installs tothirdparty/depth_inference/build/installvisual_place_localization: downloads ONNX Runtime and MegaLoc assets, builds FAISS for this module, then builds and installs tothirdparty/visual_place_localization/build/install
mise run buildDownloadsthirdparty/libtorchwhen missing, then configures and builds SLAM-MER libraries with CMake + Ninja and installs them tobuild/install. This task enables ALIKED, depth inference, and visual place localization by default.
To control which transformation templates are compiled, pass
-DSLAM_TRANSFORMATION_INSTANTIATIONS=ALL|POSE3|SIMILARITY3 when
configuring CMake (default: ALL).
References
Compilation flags: top-level
COMPILATION_OPTIONS.mdExamples repository: slam-mer_examples
Detailed manual setup and extra notes: Detailed Installation