Skip to main content

Beginner-friendly yet powerful SLAM library for robotics and research

Project description

EasySLAM

EasySLAM is a production-ready Python package that makes Simultaneous Localization and Mapping (SLAM) accessible to beginners while providing advanced features for researchers and professionals.

PyPI version License: MIT Python 3.7+

🚀 Features

Core SLAM Algorithms

  • ORB-SLAM: Feature-based visual SLAM with loop closure
  • FastSLAM: Particle filter SLAM for mobile robots
  • GraphSLAM: Graph optimization-based SLAM
  • Visual-Inertial SLAM: Camera + IMU fusion
  • RGB-D SLAM: Depth camera SLAM with Open3D

Sensor Support

  • Webcam: Standard USB cameras
  • RealSense: Intel RealSense depth cameras
  • Stereo Cameras: Dual camera setups
  • LiDAR: 3D laser scanners
  • Datasets: TUM, KITTI, custom datasets

Advanced Features

  • Semantic Mapping: Object detection and labeling
  • Sensor Fusion: Multi-sensor data fusion with EKF
  • Map Merging: Combine multiple SLAM sessions
  • Performance Profiling: Real-time monitoring and optimization
  • GUI Interface: PyQt6-based visualization tool

Output Formats

  • Trajectory: TUM format, JSON, CSV
  • Point Clouds: PLY, PCD formats
  • 3D Maps: Mesh reconstruction
  • Performance Reports: Detailed analytics

📦 Installation

From PyPI (Recommended)

pip install easy-slam

From Source

git clone https://github.com/Sherin-SEF-AI/EasySLAM.git
cd EasySLAM
pip install -e .

Optional Dependencies

# For 3D visualization
pip install easy-slam[3d]

# For RealSense cameras
pip install easy-slam[realsense]

# For advanced optimization
pip install easy-slam[g2o]

# For development
pip install easy-slam[dev]

🎯 Quick Start

Basic Usage

from easy_slam import EasySLAM

# Initialize with webcam
slam = EasySLAM(camera=0, algorithm='orb_slam')
slam.start()

Advanced Usage

from easy_slam import EasySLAM

# Configure with advanced features
slam = EasySLAM(
    camera='realsense',
    algorithm='rgbd_slam',
    semantic_mapping=True,
    sensor_fusion=True,
    save_trajectory=True,
    output_dir='./results'
)

# Start SLAM processing
slam.start()

# Get results
trajectory = slam.get_trajectory()
map_data = slam.get_map()

GUI Interface

# Launch the GUI
easy-slam-gui

# Or run programmatically
python -m easy_slam.gui

📖 Documentation

API Reference

EasySLAM Class

class EasySLAM:
    def __init__(self, 
                 camera: Union[int, str] = 0,
                 config: Optional[str] = None,
                 mode: str = 'realtime',
                 algorithm: str = 'orb_slam',
                 visualization: bool = True,
                 save_trajectory: bool = False,
                 output_dir: str = "./results",
                 **kwargs):
        """
        Initialize SLAM system.
        
        Args:
            camera: Camera index, path, or sensor type
            config: Optional path to YAML config file
            mode: 'realtime' or 'offline'
            algorithm: SLAM algorithm name
            visualization: Enable 3D visualization
            save_trajectory: Save trajectory to file
            output_dir: Directory for output files
        """

Available Algorithms

  • 'orb_slam': ORB-SLAM (default)
  • 'fastslam': FastSLAM particle filter
  • 'graphslam': Graph optimization SLAM
  • 'visual_inertial': Visual-inertial SLAM
  • 'rgbd_slam': RGB-D SLAM

Available Cameras

  • 0, 1, 2...: Webcam indices
  • 'webcam': Default webcam
  • 'realsense': Intel RealSense
  • 'stereo': Stereo camera setup
  • 'lidar': LiDAR sensor
  • 'path/to/dataset': Dataset file or directory

Configuration

Create a YAML configuration file:

slam:
  algorithm: orb_slam
  mode: realtime

sensor:
  type: webcam
  resolution: [640, 480]
  fps: 30

algorithm:
  max_features: 2000
  scale_factor: 1.2
  levels: 8

visualization:
  enabled: true
  update_rate: 10

output:
  save_trajectory: true
  directory: "./results"

performance:
  threading: true
  memory_limit: "2GB"

🎮 GUI Features

The EasySLAM GUI provides:

  • Real-time video display
  • 2D trajectory visualization
  • 3D map view
  • Feature point visualization
  • Performance monitoring
  • Live log output
  • Camera and algorithm selection
  • Advanced feature toggles

🔧 Advanced Features

Semantic Mapping

slam = EasySLAM(
    camera=0,
    semantic_mapping=True,
    semantic_model='yolov8'
)

Sensor Fusion

slam = EasySLAM(
    camera='realsense',
    sensor_fusion=True,
    imu_enabled=True
)

Map Merging

slam = EasySLAM(
    camera=0,
    map_merging=True,
    loop_closure=True
)

📊 Performance

EasySLAM is optimized for real-time performance:

  • 30+ FPS on standard webcams
  • Memory efficient for long sessions
  • Multi-threaded processing
  • GPU acceleration support (optional)

🤝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Development Setup

git clone https://github.com/Sherin-SEF-AI/EasySLAM.git
cd EasySLAM
pip install -e .[dev]
pytest tests/

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • OpenCV for computer vision algorithms
  • Open3D for 3D processing
  • PyQt6 for GUI framework
  • NumPy and SciPy for numerical computing

📞 Support

🔗 Links


Made with ❤️ by sherin joseph roy

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easy_slam-0.1.0.tar.gz (46.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

easy_slam-0.1.0-py3-none-any.whl (48.7 kB view details)

Uploaded Python 3

File details

Details for the file easy_slam-0.1.0.tar.gz.

File metadata

  • Download URL: easy_slam-0.1.0.tar.gz
  • Upload date:
  • Size: 46.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for easy_slam-0.1.0.tar.gz
Algorithm Hash digest
SHA256 26f58f763c62db2781ba322a47cc3c0f9d846ff5d5c39149b0b8e5b010a6f753
MD5 edd9090ba4e0ac48b3d0831a533541d6
BLAKE2b-256 fc6872f6653f5f0a39ba7825e1336ab9a5c2572e810d328f159876a5964432ca

See more details on using hashes here.

File details

Details for the file easy_slam-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: easy_slam-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 48.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for easy_slam-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4f84e7ee791d3c76d206fc8e41882e65287ea7e09cf880938dc748dbb7c413ea
MD5 710cce62f6a8944d56d2a1f22f065575
BLAKE2b-256 ab796338c68ee4bae9415e37a4c2d9de0dff87e2ccbd868136cd3a0bccea0a90

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page