引言
传统SLAM算法一般都是运行在CPU上的(除了基于Learning的或者部分dense SLAM需要GPU)。 最近有一些工作基于CUDA实现SLAM的加速进而提升实时性。 本博文对相关工作进行调研与整理.
PS:对于CUDA加速SLAM从两个层面来看待:
1. 最大化SLAM系统的实时性。
2. 最大化利用硬件资源。将SLAM一部分算子(如特征提取、数据关联等)迁移到GPU上运行,既减轻CPU的压力,又可以把GPU的资源利用上,不至于浪费~
经典论文阅读
下面是整理的相关paper list:
Year | Venue | Paper Title | Repository | Note |
---|---|---|---|---|
2025 | arXiv |
FastTrack: GPU-Accelerated Tracking for Visual SLAM | — | |
2025 | CoRR |
cuVSLAM: CUDA accelerated visual odometry and mapping | NVIDIA | |
2024 | ICRA |
JacobiGPU: GPU-Accelerated numerical differentiation for loop closure in visual SLAM | — | — |
2023 | RAL |
High-speed stereo visual SLAM for low-powered computing devices | Jetson-SLAM | |
2023 | In Proceedings of the 35th ACM Symposium on Parallelism in Algorithms and Architectures |
Brief announcement: Optimized gpu-accelerated feature extraction for orb-slam systems | GitLab | — |
2023 | ICRA |
Improving the performance of local bundle adjustment for visual-inertial slam with efficient use of gpu resources | — | — |
2019 | IROS |
Data flow ORB-SLAM for real-time performance on embedded GPU boards | — | |
2017 | TRO |
Orb-slam2: An open-source slam system for monocular, stereo, and rgb-d cameras | CUDA |
1. FastTrack: GPU-Accelerated Tracking for Visual SLAM
对于大部分的SLAM系统,为了保证实时性(特别是资源受限的平台),往往会drop掉一些图像帧(比如30HZ的只按20HZ甚至10HZ来处理)但这会导致定位精度变差,回环失败,甚至更极端的——tracking loss。 因此,为了跟上系统和环境状态的变化,尽快/实时(越快越好)运行pose tracking非常重要~
此外,将计算资源加载到GPU的标准是该资源可以并行化的程度。并且也需要考虑到CPU和GPU之间数据迁移的耗时(作者通过实现发现,tracking the local map, ORB extraction, and stereo matching这三个上最耗时间的模块),不然会导致并行化加速并没有带来增益。
该论文通过利用GPU来加速ORB-SLAM3中的双目特征匹配及局部地图tracking两个部分。速度提升达2.8倍。同时性能精度保持相似水平。 如下图所示,分别是在desktop(表格2)和Jetson Xavier NX(表格3)上的实时性及精度对比:

这篇论文将pose tracking的几个不同的部分加载到GPU中:
- 加速双目特征匹配(基于pinhole或者鱼眼相机的)。采用已有的基于GPU实现的ORB特征提取(基于图像金字塔的特征提取);而双目匹配也是在GPU上实现的,对于每个点可以独立的进行匹配而无需依赖其他点。
- 搜索当前帧中的局部map point。将
Search Local Points
任务加载到GPU上;Search Local Points
负责将局部地图点鱼当前帧的特征点进行匹配,这步也是非常耗时的,因此在GPU上并行运算处理。并且地图点相互之间上独立的,不受影响,因此可以执行并行加速的操作;
此外,还需要确保CPU-to-GPU数据传输的开销最小化。
下图为加速前后的算法框架对比:


- 对于更新地图点(Update Local Map),如果将所有的局部关键帧观察到的map point都进行转移,会非常耗时,因此此处仍然保留在CPU上做;
- 对于位姿优化,作者并没有加载到GPU上,并且将其关掉了。从下图可以看到,姿态优化在跟踪局部地图部分时耗占比是很大的。关掉可以大大的减少tracking的时间并且对误差的影响不大。
![]() |
![]() |