NVIDIA-ISAAC-ROS/isaac_ros_visual_slam

Visual SLAM/odometry package based on NVIDIA-accelerated cuVSLAM

NVIDIA‑ISAAC‑ROS / isaac_ros_visual_slam

何であるか – Jetsonまたは同等のNVIDIAハードウェア上でNVIDIA加速型視覚慣性SLAM(VSLAM)を実行するROS 2パッケージ。ステレオカメラ画像(およびオプションでIMU)を入力として、高頻度のオドメトリとロボットのナビゲーションスタックで使用可能なマップを出力する。

なぜ重要か – 画像処理やキーポイントマッチングの重い処理をGPUにオフロードすることで、>250 fpsで数十万の特徴点を追跡でき、トランスレーション誤差は1%未満。これは従来のCPUオンリーSLAM(例:ORB‑SLAM2)よりもはるかに高速であり、電力とレイテンシが重要な組み込みプラットフォーム上でリアルタイムのローカライゼーションを可能にする。

主要コンポーネント

  • isaac_ros_visual_slam – 主要ノードでcuVSLAMライブラリを実行し、/odom および /map トピックを公開し、ループクロージャーを統合する。
  • isaac_ros_visual_slam_interfaces – ノードで使用されるROS 2メッセージ定義。
  • GPU加速型cuVSLAMライブラリ(x86_64およびaarch64の両方でソースからビルド)。

主な機能

  • ステレオ視覚慣性オドメトリ – 2台のカメラからの視差とIMUデータを使用して6自由度の運動を推定。
  • GPU加速型特徴検出・マッチング – CPUオンリー手法よりもはるかに多くのキーポイントをリアルタイム処理可能。
  • 統計的最適化によるループクロージャー – ロボットが以前にマッピングした領域に戻ったときにドリフトを低減。
  • ROS 2ネイティブ – Nav2、TF2、その他のROS 2ツールと直接統合可能。
  • ベンチマーク性能 – Jetson AGX Xavierで1フレームあたり0.007 秒、KITTIオドメトリベンチマークで0.94 %のトランスレーション誤差(ORB‑SLAM2より優れる)。

一般的な利用事例

  • GPSが利用できない屋内移動ロボット。
  • 軽量で視覚のみのオドメトリが必要なドローン。
  • 複数のVSLAMストリームを統合して冗長性を確保するマルチカメラレジ。
  • NVIDIA Jetson上で既に動作しているROS 2プラットフォームで、LiDARなしで高頻度の姿勢推定を必要とするすべての用途。

導入方法

  1. 前提条件 – ROS 2(humble/iron)、NVIDIA Jetson(またはCUDA対応のx86_64システム)、校正済みステレオカメラペア、オプションでIMU。
  2. インストール – README内の「Quickstart」リンクに従い、vcsまたはaptでパッケージを取得し、colcon buildでビルドする。最新コミット(2026‑08‑18)は、アーキテクチャに応じてcuVSLAMライブラリを自動的にソースからビルドする。
  3. デモ実行 – カメラトピックを期待されるROSトピックにマッピングして、提供された起動ファイル(例:ros2 launch isaac_ros_visual_slam visual_slam.launch.py)を起動する。
  4. 可視化rviz2を使用してオドメトリ、マップ、ループクロージャーマーカーを表示。READMEにはライブ出力のGIFが含まれている。

制限事項 / 注意点

  • パフォーマンスベンチマークは、Nova Orin互換システムでのみ保証される。他のハードウェアではフレームレートが低下する可能性がある。
  • VSLAMは十分な視覚テクスチャに依存する。特徴が乏しいシーン(白い壁など)ではIMUオンリーのVIOにフォールバックし、精度が低下する可能性がある。
  • CUDA対応GPUが必要。純粋なCPUマシンでは動作しない。
  • ループクロージャーは統計的であり、長期的なドリフトが極端な場合、追加のマップ管理が必要になる可能性がある。

その他のリソース

  • オンデマンドウェビナー:Pinpoint, 250 fps, ROS 2 Localization with VSLAM on Jetson
  • READMEにリンクされた詳細ドキュメントとAPIリファレンス。
  • ORB‑SLAM2との比較およびKITTIベンチマーク結果。

上記のすべての情報はリポジトリのREADMEから直接取得したものであり、外部の仮定は一切追加されていない。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト