Open Source Robotics

Una raccolta curata di progetti, strumenti e software di robotica open source di alta qualità per la comunità della robotica.

pySLAM

Pipeline ibrida Python/C++ di SLAM visivo con front-end classici e basati sul deep learning

Licenza

GPL-3.0

Panoramica

pySLAM è un framework ibrido Python/C++ di SLAM visivo di Luigi Freda che esegue lo SLAM completo (tracciamento delle feature, mappatura dei keyframe, chiusura dei loop, rilocalizzazione e ricostruzione densa volumetrica) su input monoculari, stereo e RGB-D. La sua caratteristica distintiva è la modularità: decine di feature locali intercambiabili (da ORB e SIFT a SuperPoint, XFeat e LightGlue), più back-end di chiusura dei loop e riconoscimento dei luoghi e moduli opzionali di predizione della profondità e mappatura semantica ne fanno un vero laboratorio per la ricerca e la didattica sullo SLAM moderno.

pySLAM implementa lo stack completo di SLAM visivo con un'enfasi sui componenti sostituibili. Il front-end supporta oltre venti rilevatori/descrittori di feature locali, sia progettati a mano (ORB, SIFT, AKAZE, BRISK) sia appresi (SuperPoint, DISK, ALIKED, XFeat), con matching tramite i classici ratio test o matcher appresi come LightGlue e LoFTR. Il back-end offre il bundle adjustment sparso su g2o, la chiusura dei loop con diversi metodi di aggregazione (DBoW2/3, VLAD, descrittori globali in stile NetVLAD) e l'ottimizzazione del grafo delle pose. Oltre allo SLAM sparso offre la predizione monoculare della profondità (ad esempio DepthAnything), la ricostruzione densa volumetrica con opzioni TSDF/Gaussian splatting e la mappatura semantica che fonde nella mappa la segmentazione di ogni frame. Le parti critiche per le prestazioni girano in C++ con binding Python, così il codice resta facile da modificare per la ricerca e i corsi, pur restando abbastanza veloce per l'uso con una telecamera dal vivo.

Perché è importante

pySLAM è diventato il banco di prova di riferimento per lo SLAM visivo: è uno dei pochissimi sistemi in cui pipeline classiche in stile ORB-SLAM e front-end deep moderni convivono dietro un'unica interfaccia, e permette a ricercatori e studenti di confrontare componenti progettati a mano e appresi in un sistema completo e funzionante, anziché in isolamento.

Il problema che risolve

Valutare una nuova feature, un nuovo matcher o un nuovo metodo di chiusura dei loop all'interno di un sistema SLAM completo significa di norma un intervento invasivo su un codice C++ monolitico. pySLAM rende ogni componente un plugin, così esperimenti e laboratori didattici passano dall'idea a uno SLAM funzionante in poche ore.

Punti chiave

  • SLAM visivo completo: tracciamento, mappatura locale, chiusura dei loop, rilocalizzazione e ricostruzione densa
  • Supporto monoculare, stereo e RGB-D con oltre 20 rilevatori di feature e matcher intercambiabili
  • Componenti appresi di prima classe: SuperPoint, XFeat, LightGlue, LoFTR, DepthAnything e altri
  • Mappatura densa volumetrica con back-end TSDF e Gaussian splatting
  • Il modulo di mappatura semantica fonde la segmentazione nella mappa 3D

A chi si rivolge

  • Ricercatori SLAM che confrontano componenti
  • Studenti di dottorato e magistrale che imparano lo SLAM visivo sul campo
  • Ingegneri della percezione che prototipano la localizzazione basata su telecamera
  • Docenti che tengono corsi sullo SLAM

Limiti

  • Codice di livello ricerca: non è irrobustito per il deployment in produzione sui robot
  • Su hardware poco potente i livelli Python limitano le prestazioni in tempo reale rispetto a sistemi C++ ottimizzati
  • La licenza GPL-3.0 limita l'uso in prodotti closed source
  • L'installazione completa con tutti gli extra di deep learning è pesante e dipende da CUDA

Questo sito richiede JavaScript. Attiva JavaScript per esplorare i nostri progetti di robotica open source.