公众号致力于点云处理,SLAM,三维视觉,具身智能,自动驾驶等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。
文章:cuVSLAM: CUDA accelerated visual odometry andmapping
作者:Alexander Korovko , Dmitry Slepichev , Alexander Efitorov, Aigul Dzhumamuratova , Viktor Kuznetsov,Joydeep Biswas, Hesam Rabeti1and Soha Pouya
编辑:点云PCL
摘要
在过去很多年里,视觉 SLAM 一直有一个很尴尬的问题:论文里效果很好,实验室里效果不错,但一旦到了真实机器人上,尤其是低功耗边缘设备、复杂光照、多摄像头、弱纹理环境、动态场景,系统就很容易出现漂移、丢失、重定位失败、实时性不足等问题。
而 NVIDIA 最新发布的 cuVSLAM,可以说是在“工程化落地”这个方向上,把视觉 SLAM 做到了一个非常成熟的阶段。
它不是简单地在 ORB-SLAM、VINS、SVO 这类传统系统上做一些 CUDA 加速,而是从底层架构开始,重新围绕 GPU、边缘部署、多摄像头和异构传感器进行了设计。它的目标不是“跑出一个好看的轨迹”,而是让机器人真的能在 Jetson 上稳定工作。

cuVSLAM 是什么?
cuVSLAM 是 NVIDIA 推出的 CUDA 加速视觉 SLAM / Visual Odometry 系统,支持:
也就是说,它不是一个“只支持双目+IMU”的传统 VIO,而是一个可以覆盖无人机、轮式机器人、AMR、人形机器人、叉车、巡检机器人、多相机感知平台等多种场景的统一 SLAM 框架。很多传统系统默认只有前向双目,而 cuVSLAM 可以同时利用多个方向的相机。例如前、后、左、右甚至顶部相机同时参与定位。这样做最大的好处是:
NVIDIA 在官方资料中提到,多相机版本的导航成功率,相比单相机方案有非常明显的提升。
cuVSLAM 的系统结构
从论文和 Isaac ROS 文档来看,cuVSLAM 可以大致分为四层:

1
1. 前端视觉里程计(VO)
这一层负责做:
前端的核心目标不是建图,而是保证机器人“每一帧都能得到一个稳定的位姿增量”。因为这部分需要高频运行,所以 GPU 加速收益最大。

2
Landmark 管理
cuVSLAM 不是简单保存“所有历史特征点”,而是维护 Landmark。Landmark 本质上是:“被多次观测到、已经具有稳定三维位置的地图点。”系统会记录:
这种设计的好处是:
官方文档提到,Landmark 和 PoseGraph 使用的数据结构会尽量避免“重复存储已经访问过的地图点”。这对于大规模长期运行尤其重要。

3
Localizer 与重定位
除了连续跟踪外,cuVSLAM 还包含独立的 Localizer 模块。这一层的核心作用是:
Localizer 本质上是连接“当前观测”和“历史地图”的桥梁。如果没有这一层,系统一旦因为遮挡、快速转身、动态物体、强光等原因丢失跟踪,就很难恢复。尤其是在工厂巡检、人形机器人和 AMR 场景中,机器人经常会出现:
这时候,Localizer 的作用就会非常明显。

4
Pose Graph 与回环检测
只靠 VO,一定会累积漂移。因此 cuVSLAM 中还包含 Pose Graph。可以把 Pose Graph 理解为:
当机器人重新回到以前走过的位置时,系统会尝试识别之前的 Landmark 和关键帧,从而触发闭环检测。闭环成功后,就可以通过图优化把之前累计的漂移“拉回来”。这也是为什么很多机器人系统里,短时间看轨迹可能有误差,但长时间跑下来整体仍然能维持全局一致性。回环不仅影响地图质量,也直接决定:
很多 Reddit 用户在讨论 cuVSLAM 时也提到,真正难的往往不是“SLAM 算法本身”,而是多摄像头同步、TF 树、时间戳对齐和传感器配置,因为这些因素会直接影响 Landmark 关联和回环成功率。

为什么多摄像头对机器人尤其重要?
这一点对你做人形机器人、巡检机器人、多传感器系统其实非常关键。传统 SLAM 最大的问题之一,是“看不到就丢”。例如:
这时,如果系统只有一个前向相机,SLAM 很容易直接漂掉。而多摄像头系统可以在不同方向上同时寻找稳定特征。例如:
这些都可以帮助系统继续保持跟踪。尤其在人形机器人和 AMR 上,多摄像头 SLAM 的价值会远远高于单目或单双目方案,因为机器人经常会发生:
NVIDIA 的测试中,多相机方案相比单相机方案,机器人完成导航任务的成功率提升非常明显。官方甚至提到,单相机在某些弱纹理场景下成功率不足 25%,而多相机可以显著提升任务完成率。

很多视觉 SLAM 算法在 PC 上跑得不错,但一到边缘设备上就很难实时。原因很简单:
而 Jetson 的特点恰好是:
所以 cuVSLAM 从一开始就是围绕 Jetson 设计的。NVIDIA 官方给出的数据里,cuVSLAM 的运行时间大约只有 5ms,而传统方法如 FRVO、S-PTAM 约为 30ms,ORB-SLAM2 则可能达到 60ms。也就是说,cuVSLAM 在机器人实时导航场景里,确实具备明显的性能优势。对于现在比较关注的人形机器人、工厂巡检、数字孪生、点云建图这些方向,其实都很适合这种 GPU 原生的视觉里程计方案。因为未来机器人感知系统一定会越来越偏向:
cuVSLAM 更像是这种未来感知栈里的“视觉定位底座”。

cuVSLAM 的局限性
1
依赖时间同步
多摄像头、IMU、RGB-D 一旦时间戳不同步,很容易导致:
很多工程问题其实不在算法,而在同步。Reddit 上不少使用者都提到,硬件同步比软件同步可靠得多。哪怕只有几毫秒误差,都可能让多相机融合效果明显下降。
2
对标定质量要求高
如果相机内参不准,外参有偏差,IMU 和相机之间的位姿没标好,TF 树配置错误那么系统很可能表现很差。因为多相机系统本质上比单目系统更依赖几何关系。
3
cuVSLAM 仍然更偏“视觉前端”
虽然 cuVSLAM 已经带有完整的 SLAM 能力,但很多工业系统仍然会把它作为“高质量 VO 前端”,再叠加自己的后端优化、地图管理和导航系统。最新的一些工业 benchmark 也提到,很多团队会使用“cuVSLAM 前端 + 自定义后端”的混合方案,以获得更好的全局建图能力。

总结
cuVSLAM 真正有价值的地方,不是它提出了一个全新的理论,而是它把视觉 SLAM 从“论文算法”推向了“机器人基础设施”。它更像一个工程系统,而不是一个单独的学术算法。
对于未来的人形机器人、AMR、巡检机器人、无人叉车、仓储机器人、无人机来说,这种 GPU 原生、多相机、边缘实时、可扩展的 SLAM 框架,很可能会逐渐成为主流。
以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除