はじめに
ロボット向けアプリケーション ソフトウェアの開発に、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パッケージ
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 TensorRT、NVIDIA VPI、NVIDIA Triton Inference Serverなどが自動的にインストールされます。必要なソフトウェアを一つずつインストールするのは、手間がかかるだけでなく、それぞれのバージョンの整合を取ることが難しい場合もありますので、NVIDIA社から用意されているこのユーティリティーはとても有用です。
ユーザーはROS2アプリケーションの開発に必要な、NVIDIA Isaac ROS GEMsパッケージやROS2パッケージを選んで、ROS2ワークスペースを作成しますが、これは(コンテナ内ではなく)ホストOS上に用意します。このROS2ワークスペースのディレクトリーを、コンテナからマウントすることで、コンテナ内からROS2ワークスペースの読み書き実行ができます。マウントの設定なども、このユーティリティーがおこないますので、あまりDockerに詳しくなくても、ご心配は無用です。
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物体検出パッケージを試す方法と、そのパッケージの構成について説明いたします。ボタンをクリックすると簡単なフォーム入力画面へと遷移します。入力完了後に後編ページのURLがメールで通知されます。