pySLAM
集经典与深度学习前端于一体的 Python/C++ 混合视觉 SLAM 流水线
许可证
GPL-3.0
概述
pySLAM 是 Luigi Freda 开发的 Python/C++ 混合视觉 SLAM 框架,可在单目、双目和 RGB-D 输入上运行完整 SLAM——特征跟踪、关键帧建图、回环闭合、重定位和体积化稠密重建。其标志性特点是模块化:数十种可互换的局部特征(从 ORB、SIFT 到 SuperPoint、XFeat 和 LightGlue)、多种回环与场景识别后端,以及可选的深度预测和语义建图模块,使它成为现代 SLAM 研究与教学的活体实验室。
pySLAM 以可替换组件为核心实现了完整的视觉 SLAM 技术栈。前端支持二十多种局部特征检测器/描述子,既有手工设计的(ORB、SIFT、AKAZE、BRISK),也有学习型的(SuperPoint、DISK、ALIKED、XFeat),匹配可用经典比值测试,也可用 LightGlue、LoFTR 等学习型匹配器。后端提供基于 g2o 的稀疏光束法平差(bundle adjustment)、多种聚合方法的回环闭合(DBoW2/3、VLAD、NetVLAD 式全局描述子)以及位姿图优化。在稀疏 SLAM 之外,它还提供单目深度预测(如 DepthAnything)、带 TSDF/高斯泼溅(Gaussian splatting)选项的体积化稠密重建,以及将逐帧分割融合到地图中的语义建图。性能关键部分用 C++ 实现并提供 Python 绑定,让代码库既便于研究和课程改造,又足够快以支持实时相机运行。
为何重要
pySLAM 已成为视觉 SLAM 的参考试验场:它是极少数让经典 ORB-SLAM 式流水线与现代深度前端共存于同一接口之下的系统,让研究人员和学生能在完整可运行的系统中(而非孤立地)对比手工设计与学习型组件。
解决的问题
在完整 SLAM 系统中评估一个新特征、匹配器或回环方法,通常意味着对庞大的 C++ 代码库动侵入式手术。pySLAM 把每个组件都做成插件,让实验和教学实验室从想法到跑通 SLAM 只需几小时。
要点
- 完整视觉 SLAM:跟踪、局部建图、回环闭合、重定位和稠密重建
- 支持单目、双目和 RGB-D,20+ 种可替换的特征检测器和匹配器
- 学习型组件一等公民:SuperPoint、XFeat、LightGlue、LoFTR、DepthAnything 等
- 体积化稠密建图,提供 TSDF 和高斯泼溅后端
- 语义建图模块将分割结果融合到三维地图中
适用人群
- 对组件做基准测试的 SLAM 研究人员
- 动手学习视觉 SLAM 的研究生
- 为基于相机的定位做原型的感知工程师
- 开设 SLAM 课程的教育工作者
局限
- 研究级代码——未针对机器人生产部署进行加固
- Python 层限制了实时性能,在弱硬件上不及优化过的 C++ 系统
- GPL-3.0 许可证限制其在闭源产品中的使用
- 包含全部深度学习组件的完整安装很重且依赖 CUDA