【NVIDIA Isaac ROS GEMs 入門】第1話 NVIDIA Isaac ROS GEMs の概要

はじめに

ロボット向けアプリケーション ソフトウェアの開発に、ROS(Robot Operating System)を利用する事例が増えてきました。これからご紹介するNVIDIA Isaac ROS GEMsはROS開発者向けに提供されている、NVIDIA社製ハードウェアに対するアクセラレーション パッケージの集まりです。
NVIDIA Isaac ROS GEMsには、自律移動ロボットにAI機能を付加するために有用な数々のパッケージが含まれています。

 

本連載では、NVIDIA Jetson上で、このNVIDIA Isaac ROS GEMsをお試しいただくための情報を3話にわたって提供します。2話以降をご覧になりたい方は、記事の末尾の簡単なフォームへご登録すると閲覧できます。

 

第1話 NVIDIA Isaac ROS GEMs の概要

第2話 物体検出を試す

第3話 セマンティック画像セグメンテーションを試す

 

※"Isaac"は「アイザック」と読みます。

NVIDIA Isaac ROS GEMsの構成

下図のとおり、NVIDIA Isaac ROS GEMsはCUDAやTensorRTなど十分な実績のあるハードウェア高速化ライブラリーを基礎として構築され、これによりNVIDIA社製ハードウェアの性能を最大限に活用できます。ROS2に準拠しているため、他のROS2パッケージと組み合わせて、ROS2アプリケーションを開発することができます。

NVIDIA Isaac ROS GEMsの構成

出典:NVIDIA Isaac ROS GEMs

NVIDIA Isaac ROS GEMsパッケージ

2023年2月現在、提供されているパッケージは以下のとおりです。

AprilTag NVIDIA社製ハードウェアに最適化された、AprilTag 基準マーカーのコード読み取りおよび姿勢検出
Argus Camera NVIDIA Jetsonに接続されたMIPI-CSIカメラから画像をキャプチャー
Common NVIDIA Isaac ROS GEMsで共通に利用されるユーティリティー、パッケージ、スクリプト、Dockerファイル、テスト環境
Compression NVIDIA社製ハードウェアに最適化された、動画の圧縮伸張(エンコード・デコード)
DNN Inference NVIDIA Tritonおよび、NVIDIA TensorRTによるディープニューラルネットワーク推論
DNN Stereo Disparity ディープニューラルネットワークによるステレオカメラの視差計算
Image Pipeline カメラ画像の処理を、NVIDIA社製ハードウェアを利用して効率良くおこなう仕組みを提供
Image Segmentation NVIDIA社製ハードウェアに最適化された、セマンティック画像セグメンテーション
Mission Client 自律移動ロボットのフリート管理システムから各ロボットに対してタスクを割り当て、それを監視するためのソフトウェアパッケージ
NITROS NVIDIA社製ハードウェアによる処理高速化に適したデータ転送の仕組みを提供する。
Nvblox NVIDIA社製ハードウェアに最適化された、3次元シーン再構築とNav2ローカル コスト マップ生成
Object Detection NVIDIA社製ハードウェアに最適化された、DetectNetモデルによる物体検出
Pose Estimation NVIDIA社製ハードウェアに最適化された、3次元物体姿勢推定
Proximity Segmentation NVIDIA社製ハードウェアに最適化された、Bi3Dモデルによるステレオ画像深度推定
Visual SLAM NVIDIA社製ハードウェアに最適化された、Visual SLAM(自己位置推定および環境地図作成)

最新の内容は以下のリンクからご覧ください。
Isaac ROS Package Index and Examples

サポートされるプラットフォーム

Isaac ROS GEMsはNVIDIA Jeton Orin/AGX Xavier/Xavier NX、および、NVIDIA社製GPUカードを搭載したx86_64アーキテクチャーのPC、ワークステーションでご利用可能です。

※JetPack 5.0.2以降が必要なため、Jetson NanoやJetson TX2などでは動作しません。

プラットフォーム

ハードウェア

ソフトウェア

Jetson NVIDIA Jetson
Orinシリーズ、AGX Xavier、Xavier NX)
JetPack 5.0.2以降
x86_64 NVIDIA社製GPUカードを搭載したx86_64 PC、ワークステーション Ubuntu 20.04以降
CUDA 11.6.1以降

※ROS2バージョンはHumble以降に対応します。Humbleより古いROS2バージョンや、ROS1では動作しません。

実行環境について

NVIDIA Isaac ROS GEMsの実行環境構築のためユーティリティーが、NVIDIA社からIsaac ROS Commonリポジトリーで提供されています。これを利用した場合、NVIDIA Isaac ROS GEMsの実行環境は、Dockerコンテナ内に構築されます。このコンテナ内には、Ubuntu、ROS2、各種ライブラリー、NVIDIA TensorRTNVIDIA VPINVIDIA Triton Inference Serverなどが自動的にインストールされます。必要なソフトウェアを一つずつインストールするのは、手間がかかるだけでなく、それぞれのバージョンの整合を取ることが難しい場合もありますので、NVIDIA社から用意されているこのユーティリティーはとても有用です。

 
ユーザーはROS2アプリケーションの開発に必要な、NVIDIA Isaac ROS GEMsパッケージやROS2パッケージを選んで、ROS2ワークスペースを作成しますが、これは(コンテナ内ではなく)ホストOS上に用意します。このROS2ワークスペースのディレクトリーを、コンテナからマウントすることで、コンテナ内からROS2ワークスペースの読み書き実行ができます。マウントの設定なども、このユーティリティーがおこないますので、あまりDockerに詳しくなくても、ご心配は無用です。

Isaac ROS実行環境
Isaac ROS実行環境

NVIDIA Isaac Simとの連携

NVIDIA社からは、NVIDIA Isaac ROS GEMsの他、NVIDIA Isaac Simと呼ばれるロボティクス向けシミュレーション ツールキットが提供されています。NVIDIA Isaac SimはNVIDIA Omniverseを基盤とするスケーラブルなロボティクス シミュレーション アプリケーション、および合成データ生成ツールです。NVIDIA Isaac SimはROS2とのブリッジ機能を有するので、Isaac ROS GEMsとの連携が可能です。Jetson上で動作するROS2アプリケーションを、NVIDIA Isaac Simが提供する、ロボット稼働現場を忠実に再現したフォトリアリスティックな仮想環境内部でデバッグおよびテストすることができます。

※(NVIDIA Isaac ROS GEMsはROS2 Humble以降に対応ですが、)NVIDIA Isaac SimはROS2ブリッジ以外に、ROS1ブリッジ機能も有します。そのため、ROS1アプリケーションとも連携可能です。

まとめ

NVIDIA Isaac ROS GEMsはROS2に準拠するパッケージの集まりであり、物体検出、セグメンテーション、自己位置推定・環境地図作成など、自律ロボットの実現に不可欠な機能を提供します。しかも、NVIDIA社製ハードウェアに最適化していますので、非常に効率良く、かつ、高速に動作します。

 
次回は、Isaac ROS GEMsの中からIsaac ROS物体検出パッケージを試す方法と、そのパッケージの構成について説明いたします。下記ボタンをクリックいただき、フォームを入力いただくと続きの記事をご覧いただけます。