pySLAM
Pipeline híbrido Python/C++ de SLAM visual com front-ends clássicos e de deep learning
Licença
GPL-3.0
Visão geral
O pySLAM é um framework híbrido Python/C++ de SLAM visual criado por Luigi Freda que executa SLAM completo — rastreamento de features, mapeamento por keyframes, fechamento de loops, relocalização e reconstrução densa volumétrica — em entradas monoculares, estéreo e RGB-D. Sua característica definidora é a modularidade: dezenas de features locais intercambiáveis (de ORB e SIFT a SuperPoint, XFeat e LightGlue), múltiplos back-ends de fechamento de loops e reconhecimento de lugares, e módulos opcionais de predição de profundidade e mapeamento semântico fazem dele um laboratório funcional para pesquisa e ensino de SLAM moderno.
O pySLAM implementa a stack completa de SLAM visual com ênfase em componentes substituíveis. O front-end suporta mais de vinte detectores/descritores de features locais, tanto artesanais (ORB, SIFT, AKAZE, BRISK) quanto aprendidos (SuperPoint, DISK, ALIKED, XFeat), com matching via testes de razão clássicos ou matchers aprendidos como LightGlue e LoFTR. O back-end fornece bundle adjustment esparso sobre g2o, fechamento de loops com vários métodos de agregação (DBoW2/3, VLAD, descritores globais no estilo NetVLAD) e otimização de grafo de poses. Além do SLAM esparso, oferece predição de profundidade monocular (por ex., DepthAnything), reconstrução densa volumétrica com opções de TSDF/Gaussian splatting, e mapeamento semântico que funde a segmentação por frame no mapa. As partes críticas de desempenho rodam em C++ com bindings Python, mantendo a base de código hackeável para pesquisa e disciplinas enquanto permanece rápida o suficiente para uso com câmera ao vivo.
Por que importa
O pySLAM tornou-se o playground de referência para SLAM visual: é um dos pouquíssimos sistemas onde pipelines clássicos no estilo ORB-SLAM e front-ends modernos de deep learning coexistem atrás de uma única interface, permitindo que pesquisadores e estudantes comparem componentes artesanais versus aprendidos em um sistema completo em funcionamento, e não isoladamente.
Problema que resolve
Avaliar uma nova feature, matcher ou método de fechamento de loops dentro de um sistema de SLAM completo normalmente significa cirurgia invasiva em uma base de código C++ monolítica. O pySLAM torna cada componente um plug-in, de modo que experimentos e laboratórios de ensino vão da ideia ao SLAM rodando em horas.
Pontos principais
- SLAM visual completo: rastreamento, mapeamento local, fechamento de loops, relocalização e reconstrução densa
- Suporte monocular, estéreo e RGB-D com mais de 20 detectores de features e matchers substituíveis
- Componentes aprendidos como cidadãos de primeira classe: SuperPoint, XFeat, LightGlue, LoFTR, DepthAnything e mais
- Mapeamento denso volumétrico com back-ends TSDF e Gaussian splatting
- Módulo de mapeamento semântico funde a segmentação no mapa 3D
Para quem é
- Pesquisadores de SLAM fazendo benchmark de componentes
- Estudantes de pós-graduação aprendendo SLAM visual na prática
- Engenheiros de percepção prototipando localização baseada em câmera
- Educadores ministrando cursos de SLAM
Limitações
- Código de nível de pesquisa — não endurecido para implantação em produção em robôs
- As camadas Python limitam o desempenho em tempo real em relação a sistemas C++ otimizados em hardware fraco
- A licença GPL-3.0 restringe o uso em produtos de código fechado
- A instalação completa com todos os extras de deep learning é pesada e dependente de CUDA