pyslam  by luigifreda

Advanced Visual SLAM pipeline

Created 6 years ago
3,092 stars

Top 15.3% on SourcePulse

GitHubView on GitHub
Project Summary

pySLAM is a comprehensive, hybrid Python/C++ Visual SLAM framework designed for researchers and developers. It offers a flexible and extensible platform for prototyping and developing Simultaneous Localization and Mapping (SLAM) pipelines, supporting monocular, stereo, and RGB-D cameras with advanced features like volumetric reconstruction, depth prediction, and semantic understanding.

How It Works

This project employs a modular architecture, with a core SLAM pipeline implemented in both Python and C++ (via pybind11 bindings) for performance and flexibility. It integrates a wide array of classical and modern feature detectors/descriptors, multiple loop-closing strategies (including BoW, VLAD, and global descriptors), and advanced volumetric reconstruction techniques like TSDF and incremental Gaussian Splatting. The framework seamlessly incorporates deep learning models for depth prediction and semantic segmentation, enabling rich scene understanding.

Quick Start & Requirements

Installation involves cloning the repository with submodules (git clone --recursive) and running a unified script (./install_all.sh). The process creates a dedicated Python environment (using pixi, conda, or venv) and requires an internet connection. Key dependencies include Python 3.11.9, OpenCV >=4.10, PyTorch >=2.3.1, Tensorflow >=2.13.1, Kornia >=0.7.3, and Rerun. CUDA is necessary for Gaussian Splatting and DUSt3R-based methods. Installation is noted to take a considerable amount of time ("Grab a coffee. It will take a while."). Further details are available for Ubuntu, macOS, Windows+WSL2, and Docker installations.

Highlighted Details

  • Hybrid Python/C++ core with pybind11 for high-performance SLAM.
  • Extensive support for classical and modern local/global features, matchers, and loop-closing methods.
  • Advanced volumetric reconstruction (TSDF, Gaussian Splatting) and unified 3D scene reconstruction from multiple views.
  • Integration of numerous deep learning models for depth prediction and semantic/panoptic segmentation.
  • Support for over 10 dataset types, including KITTI, TUM, EuRoC, and ROS bags.

Maintenance & Community

The project is authored by Luigi Freda and is described as a research framework and a work in progress. Contributions are welcomed via GitHub issues and pull requests. Direct contact is available via email. No specific community channels like Discord or Slack are listed.

Licensing & Compatibility

pySLAM is released under the GPLv3 license. This copyleft license may impose restrictions on linking with closed-source or proprietary software, particularly for commercial use.

Limitations & Caveats

As a research framework, pySLAM is explicitly stated to be a work in progress. The pixi installation method is experimental. Using depth prediction in the back-end of monocular SLAM is not recommended due to potential scale conflicts. Some integrated deep learning models, such as depth predictors, can be computationally intensive and slow down processing. IMU and LIDAR integration are listed as future development items.

Health Check
Last Commit

5 days ago

Responsiveness

Inactive

Pull Requests (30d)
2
Issues (30d)
4
Star History
298 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.