NVIDIA-ISAAC-ROS/isaac_ros_visual_slam

Visual SLAM/odometry package based on NVIDIA-accelerated cuVSLAM

NVIDIA‑ISAAC‑ROS / isaac_ros_visual_slam

What it is – A ROS 2 package that runs NVIDIA‑accelerated visual‑inertial SLAM (VSLAM) on Jetson or compatible NVIDIA hardware. It consumes stereo camera images (and optionally an IMU) and outputs high‑rate odometry and a map that can be used by the robot’s navigation stack.

Why it matters – By off‑loading the heavy image‑processing and key‑point matching to the GPU, the system can track hundreds of thousands of features at >250 fps with sub‑percent translation error, far faster than classic CPU‑only SLAM (e.g., ORB‑SLAM2). This makes real‑time localisation feasible on embedded platforms where power and latency are critical.

Core components

  • isaac_ros_visual_slam – the main node that runs the cuVSLAM library, publishes /odom and /map topics, and integrates loop‑closure.
  • isaac_ros_visual_slam_interfaces – ROS 2 message definitions used by the node.
  • GPU‑accelerated cuVSLAM library (built from source for both x86_64 and aarch64).

Key features

  • Stereo visual‑inertial odometry – uses disparity from a pair of cameras plus IMU data to estimate 6‑DoF motion.
  • GPU‑accelerated feature detection & matching – enables real‑time processing of many more key points than CPU‑only methods.
  • Loop‑closure with statistical optimization – reduces drift when the robot revisits a previously mapped area.
  • ROS 2‑native – integrates directly with Nav2, TF2, and other ROS 2 tools.
  • Benchmarked performance – 0.007 s per frame on a Jetson AGX Xavier, with 0.94 % translation error on the KITTI odometry benchmark (better than ORB‑SLAM2).

Typical use‑cases

  • Indoor mobile robots operating where GPS is unavailable.
  • Drones that need a lightweight, vision‑only odometry source.
  • Multi‑camera rigs that fuse several VSLAM streams for redundancy.
  • Any ROS 2‑based platform that already runs on NVIDIA Jetson hardware and wants high‑rate pose estimates without a LIDAR.

Getting started

  1. Prerequisites – ROS 2 (humble/iron), an NVIDIA Jetson (or a compatible x86_64 system with CUDA), a calibrated stereo camera pair, optional IMU.
  2. Installation – Follow the Quickstart link in the README to pull the package via vcs or apt, then build with colcon build. The latest commit (2026‑08‑18) automatically builds the cuVSLAM library from source for your architecture.
  3. Run the demo – Launch the provided launch file (e.g., ros2 launch isaac_ros_visual_slam visual_slam.launch.py) with your camera topics mapped to the expected ROS topics.
  4. Visualization – Use rviz2 to view the odometry, map, and loop‑closure markers. The README includes a GIF showing the live output.

Limitations / gotchas

  • The performance benchmarks are only guaranteed on a Nova Orin‑compatible system; other hardware may see slower frame rates.
  • VSLAM relies on sufficient visual texture; feature‑poor scenes (blank walls) fall back to IMU‑only VIO, which can degrade accuracy.
  • Requires CUDA‑compatible GPU; it will not run on pure CPU machines.
  • Loop‑closure is statistical and may not handle extreme long‑term drift without additional map management.

Further resources

  • On‑demand webinar: Pinpoint, 250 fps, ROS 2 Localization with VSLAM on Jetson.
  • Detailed documentation and API reference linked in the README.
  • Comparison with ORB‑SLAM2 and KITTI benchmark results.

All information above is taken directly from the repository’s README; no external assumptions have been added.

Related

  • Project
  • Project
  • Project
  • Project
  • Project