论文调研之——基于CUDA加速的SLAM系统

2025-10-02

引言

传统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 Github stars
2025 CoRR cuVSLAM: CUDA accelerated visual odometry and mapping Github stars 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 Github stars 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 Github stars
2017 TRO Orb-slam2: An open-source slam system for monocular, stereo, and rgb-d cameras Github stars CUDA
Github stars

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中:

  1. 加速双目特征匹配(基于pinhole或者鱼眼相机的)。采用已有的基于GPU实现的ORB特征提取(基于图像金字塔的特征提取);而双目匹配也是在GPU上实现的,对于每个点可以独立的进行匹配而无需依赖其他点。
  2. 搜索当前帧中的局部map point。将Search Local Points任务加载到GPU上;Search Local Points负责将局部地图点鱼当前帧的特征点进行匹配,这步也是非常耗时的,因此在GPU上并行运算处理。并且地图点相互之间上独立的,不受影响,因此可以执行并行加速的操作;

此外,还需要确保CPU-to-GPU数据传输的开销最小化。

下图为加速前后的算法框架对比:

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