Isaac Sim 入門 (7) - リファレンスアーキテクチャとタスクグループ
「Isaac Sim」のリファレンスアーキテクチャとタスクグループについてまとめました。
前回
1. リファレンスアーキテクチャとタスクグループ
「Isaac Sim」は、通常、より大規模なソリューションの一部として運用されます。この記事では、さまざまなユースケースや要件に応じて適用できるリファレンスアーキテクチャを提示します。
多くのユースケースには共通する構成要素があり、これらは下図で示すタスクグループとして整理されています。各タスクグループ内では、アーキテクチャ要件に応じて、記載されている製品やコンポーネントの一部または複数を組み合わせて構成できます。
・Geometry Authoring
・Importing
・Scene Setup
・Interact
・Use Case

2. Geometry Authoring
シミュレーション環境(シーン) は、ロボット・静的オブジェクト・動的オブジェクトなど、様々なコンポーネントで構成されています。これらのコンポーネントの機械設計と形状設計は、通常、Solidworks・Pro-E・Catia・AutoCAD・Creo などのCADソフトウェアで行われます。様々な複雑さのパーツやコンポーネントを設計・組み立てることができます。
開発者は、膨大な数の既存3Dアセットを提供する既存の3Dアセットライブラリを活用することもできます。「Omniverse」と「Isaac Sim」は、「OpenUSD」と呼ばれるファイル形式を採用しています。
すべてのアセットは、「Isaac Sim」で使用する前にOpenUSDに変換する必要があります。「Isaac Sim」のデフォルトの単位はメートルです。

NVIDIAは、OpenUSDの「SimReady」アセットの膨大なコレクションを提供しています。SimReady (シミュレーション対応) アセットは、物理的に正確な3Dオブジェクトであり、正確な物理特性、動作、そして接続されたデータストリームを備えており、シミュレーションされたデジタル世界で現実世界を表現するために使用されます。開発者はこれらのビルディングブロックを使用して、シーンを構築し、要件に応じてデータを生成できます。Warehouseアセットコレクションには、フォークリフト・パレット・ラック・棚など、倉庫で一般的に使用されるツール・機器・アイテムの3Dアセットが800点以上含まれています。



3. Importing
CADファイルを「Isaac Sim」にインポートし、OpenUSDへの変換を可能にする拡張機能があります。拡張機能は、「Isaac Sim」の機能と連携し、追加または拡張するためのコアとなる構成要素です。
3-1. 環境のインポートと作成
「Asset Importer」は、OBJ・FBX・glTF形式のインポートに利用できます。「CAD Converter Extension」は、Catia・Solidworks・AutoCAD・Creoなどのアプリケーションで作成された様々な一般的なCADファイルをサポートしています。これにより、環境を「Isaac Sim」に素早く変換してインポートできます。
「OpenUSD Connections」と「Data Exchange」(旧称Omniverse Connect)は、インポーター、エクスポーター、コンバーター、およびUSDファイル形式プラグインのコレクションです。これらを使用することで、様々な3Dアプリケーション、製品、ファイル形式間でOpenUSDを使用したデータ交換が可能になります。
一部のCADアプリケーションには「Omniverse」とのコネクタがあり、USDへの変換時に、より関連性の高いコンテキスト情報を取り込むことができます。例えば、PTC Creo・Autodesk Revit・Autodesk Aliasには対応するコネクタがあります。これらの「CAD Converter」から生成されたファイルには、OpenUSDで表現されたすべてのビジュアルメッシュが含まれます。



3-2. ロボットのインポート
「Isaac Sim」には、様々なロボットがあらかじめインポートされています。インポート済みのロボットは、「Robot Assets」ページから入手できます。「Isaac Sim」には、他のロボットをインポートするための高度なオプションも用意されています。
ロボットがURDF形式の場合、GUIまたはPythonから「URDF Importer Extension」を使用できます。この拡張機能は、ビジュアルメッシュとプリム階層 (親子関係) に加え、コリジョンメッシュ・ジョイント・センサーのエンコード方法に関する追加情報をインポートします。
「Onshape Importer」と「MJCF Importer Extension」も使用できます。これらのインポーターを使用する場合、ジョイントドライブを追加し、場合によっては調整する必要があります。「Gain Tuner Extension」を使用すると、ジョイントを視覚化して調整できます。
4. Scene Setup
必要なアセットをすべて「OpenUSD」に変換し、「Isaac Sim」にインポートしたら、シーンを設定できます。
現実世界の状況を適切にシミュレートするには、物理特性を定義する必要があります。例えば、物理特性はオブジェクトが重力の影響を受けるかどうか、あるいはどの程度の固さであるかを定義します。

4-1. 物理演算の追加
必要なアセットを「Isaac Sim」にインポートしたら、正確なシミュレーションを行うために適切な「物理演算」が適用されていることを確認してください。「URDF」や「Onshape Importer」などの一部のアセットインポーターは、ほとんどの物理演算パラメータと設定を引き継ぎますが、インポートした残りのアセットについては、処理を進める前に物理演算を追加する必要があります。「NVIDIA Omniverse」の物理演算シミュレーション拡張機能は、「NVIDIA PhysX SDK」をベースにしています。リジッドボディシミュレーション、キャラクターコントロール、デフォーマブルボディシミュレーション、パーティクルシミュレーション、アーティキュレーションをサポートしています。
シーンに物理演算を追加するための重要な手順は、次のとおりです。
(1) 物理シーンの作成
最初のステップは、物理演算シーンを作成し、そのデフォルトパラメータが適切であることを確認することです。例えば、シーン内の重力の方向と大きさを確認します。インポートしたシーンに地面が含まれていない場合は、先に進む前に必ず追加してください。これにより、物理演算対応オブジェクトが地面の下に落ちるのを防ぎます。数百の剛体やロボットをシミュレートする場合を除き、GPUソルバーではなくCPUソルバーを使用する方が効率的です。「Tutorial 1: Stage Setup」チュートリアルを参照してください。
(2) コリジョン設定の割り当て
コリジョンは、剛体が環境内で相互作用することを可能にします。オブジェクトのジオメトリは、凸包、凸包分解、バウンディングスフィア、バウンディングボックス、SDF衝突メッシュによって近似できます。それぞれ異なる方法でジオメトリを近似するため、特定のユースケースにはより適している場合があります。PhysXは、立方体、カプセル、球体の形状の正確な表現をサポートしています。円錐と円柱はカスタムジオメトリフラグを通じてサポートされており、ロボットの車輪の衝突近似を設定する際に特に便利です。Rigid-body physics materialは、摩擦、反発 (いわゆる「弾力性」)、マテリアル密度の特性を提供します。
(3) ジョイントとドライブの追加
シーン内のプリムに適切な衝突メッシュを追加したら、プリム同士が正しく相互作用することを確認する必要があります。これは、互いに接続したプリム間に適切なジョイントを定義することで実現できます。ジョイントを使用すると、オブジェクト同士の相対的な動きを定義することで、物理オブジェクトを接続できます。回転ジョイント、直動ジョイント、球状ジョイント、固定ジョイントなど、さまざまなジョイントタイプから選択できます。
4-2. センサーの追加
「Isaac Sim」センサーシミュレーション拡張機能は、グラウンドトゥルース知覚と物理ベースセンサーをシミュレートでき、リアルなセンサーモデルのライブラリを備えています。カメラ、ライダー、レーダー、物理ベースセンサーをシミュレートできます。OpenCV または ROS から取得したカメラキャリブレーションパラメータを Isaac Sim 単位に変換して使用することも可能です。Camera Sensorのページを参照してください。RTX ライダーおよびレーダーセンサーは、RTX ハードウェアを搭載した GPU 上でレンダリング時にシミュレートされます。接触センサー、IMU センサー、力センサー、努力センサー、近接センサーなど、さまざまな物理ベースセンサーも含まれています。これらのセンサーは、ステージ階層内の適切な場所に追加できます (たとえば、カメラやライダーをロボットの前面または上部付近に追加できます)。Camera and Depth Sensor、およびNon-Visual Sensorのページでは、「Isaac Sim」で利用可能なすべての物理センサーアセットが紹介されています。
4-3. マテリアルのインポートと作成
「Isaac Sim」のマテリアルは、NVIDIA Material Definition Language (MDL)によってサポートされています。MDLは、コンピュータグラフィックスにおけるマテリアルの外観を定義および記述するために設計されたシェーディング言語です。アーティストや開発者は、MDLを使用することで、マテリアルの物理的特性、表面特性、光との相互作用を指定することにより、非常にリアルなマテリアルを作成できます。「Omniverse」には、物理ベースのガラス、誘電体および非誘電体材料、皮膚、髪、液体、その他サブサーフェス・スキャタリングや透過効果を必要とするマテリアルに有用な汎用マルチローブ・マテリアル、そしてUSDのUsdPreviewSurfaceなど、複数のテンプレート・マテリアルが付属しています。
・Robot Setup Tools and Standards
・Robot Setup Tutorials
・Synthetic Sensors
5. Interact
アセットをインポートし、シーンを設定したら、シミュレートされた環境とインタラクションするさまざまな方法があります。以下にまとめます。

5-1. GUI
「GUI」は、シーン管理、オブジェクト操作、リアルタイムモニタリングを直感的に操作できるコントロールを提供し、ロボットシステムの開発とテストのための効率的なインターフェースを提供します。GUIから、あらかじめパッケージ化されたサンプル、ロボット、環境に簡単にアクセスし、シーンに追加できます。Createツールを使用すると、大小さまざまなシーンの組み立て、照明、シミュレーション、レンダリングを簡単に実行できるため、仮想世界の構築、ロボットの組み立て、物理特性の検証に最適です。GUIチュートリアルの開始方法については、GUIリファレンスを参照してください。
5-2. Standalone Python
「Isaac Sim」は、システムレベルのPythonインストールと同様に、パッケージが使用できる組み込みのPython環境を提供します。これは、Isaac SimでPythonスクリプトを実行するための推奨環境です。すべてのIsaac Simライブラリと依存関係は、このPython環境からインポートおよびアクセスできます。また、ユーザーはスクリプトを作成して、すべての作業をヘッドレスで実行することもできます。Isaac Simに含まれていないライブラリやツールを使用する場合は、まずPython 3.10で動作することを確認してください。 Isaac Simには、Standalone Pythonサンプル集が付属しており、全体的な手順を理解するための良い出発点となります。Jupyter NotebookとVisual Studio Codeのサポートも利用可能です。GUIからのワークフローはPythonで完全にスクリプト化でき、ヘッドレスモードでも実行できます。
5-3. Extensions
「Extensions」を使用すると、開発者は「Isaac Sim」に機能を追加したり、他のツールを統合したりできます。「Extensions」は個別に構築されたアプリケーションモジュールです。「Isaac Sim」で使用されるすべてのツールは拡張機能として構築されています。様々な「Extensions」により、シーン内のセンサー、ロボット、プリムとのインタラクションが容易になります。ROS 2 Bridge拡張機能を使用すると、ROSパッケージとコードを「Isaac Sim」に接続できます。開発者はC++、Python、その両方を使用して独自の「Extensions」を作成できます。
5-4. OmniGraph
「OmniGraph」は、「Omniverse」用のビジュアルスクリプティング言語です。単一のグラフタイプではなく、単一のフレームワークの下で複数の異なるグラフシステムを組み合わせたものです。多くの「Isaac Sim Extensions」は、一般的なユースケース向けのグラフを構築するためのノードを提供します。
・Robot Simulation and Controllers
・Robot Articulation and Physics Tools
・Motion Generation
・Omnigraph
6. Use Case
6-1. 合成データ生成 (SDG : Synthetic Data Generation)
開発者は、「Omniverse Replicator.」を使用することで、ロボティクス向けAI知覚ネットワークの学習と性能を向上させる、物理的に正確な合成データを生成できます。Replicator は、合成データ生成タスクを可能にする拡張機能、Python API、ワークフロー、ツールのコレクションです。
シーンのセットアップが完了すると、Replicatorを使用して、シーン内のアセットの位置、回転、ライティング、サイズ、テクスチャなど、さまざまな特徴を変更したりランダム化したりできます。2D バウンディングボックス、3Dバウンディングボックス、セマンティックセグメンテーションマスクとインスタンスセグメンテーションマスク、法線、深度、ポイントクラウドなど、幅広いアノテーションがサポートされ、データはCOCOやKITTIなどの一般的な形式で書き込まれます。ポーズ推定などの高度なユースケース向けに、カスタムアノテーターとライターを実装することもできます。これにより、開発者は生成されたデータを学習パイプラインにシームレスに統合できます。

開発者は、「Omniverse Replicator」が提供する「Python API」を利用して合成データを生成することができます。同じスクリプトを使用して、開発者が選択したCSP (AWS、Alibaba、Azure、GCP) 上のIsaac Sim Dockerコンテナ (コンテナのインストール手順) を介して、クラウド上でヘッドレスでデータを生成することもできます。Cloud Deployment Guideも参照してください。「Replicator YAML」は、技術に詳しくない人でもスクリプトを簡単に編集できるローコード環境で使用できます。クラウドのユースケースに適した高い移植性と柔軟性を備えています。
6-2. Software in the Loop (SIL)
シミュレーションシナリオが設定されると、開発者はロボティクスソフトウェアスタックのさまざまな側面を調整およびテストできます。ソフトウェアスタックとシミュレーション対象ロボットのパラメータや構成を変更することで得られる知見により、実際のロボットへの移行を容易かつ正確に行うことができます。以下に、一般的なユースケースをいくつか示します。
6-3. 単一および複数ロボットのナビゲーション
ロボットのナビゲーションスタックは、さまざまなシナリオで簡単にテストできます。環境内のアセットをランダム化することで、これらのシナリオを作成できます。複数のロボットでナビゲーションを実行する場合は、マルチGPU構成を活用できます。 「Isaac Sim」は、「ROS 2 Bridge」を介して 「ROS 2 Nav2 Stack」をサポートします。
6-4. AIモデル評価
シミュレーションでは、物理特性、ロボットの状態、センサーの読み取り値など、グラウンドトゥルースに直接アクセスできるため、モデルの評価が容易です。これらの予測値をモデルの予測値と比較することで、評価指標を得ることができます。
例えば、コンピュータービジョンのタスクでは、シミュレーションカメラからレンダリングされた画像をモデルに渡して予測値を得ることができます。そして、この予測値をグラウンドトゥルース値(シミュレーションから直接、または Replicator 経由で取得可能)と比較することで、評価指標を得ることができます。これは、LiDAR などの他のセンサーにも適用でき、マルチモーダルアプリケーションにも容易に拡張できます。
6-5. パーセプション
「Isaac Perceptor」は、NVIDIA アクセラレーションライブラリと AI モデルのリファレンスワークフローであり、倉庫や工場などの非構造化環境で認識、位置特定、操作を行う堅牢な自律移動ロボット (AMR) を迅速に構築するのに役立ちます。「Isaac Sim」のシミュレートされた環境からの入力を処理できます。
6-6. マニピュレーション
「Isaac Manipulator」は、マニピュレーションタスクに活用でき、シミュレーションで検証できます。これは、知覚駆動型マニピュレーションのための GPUアクセラレーションパッケージのコレクションであり、物体検出や姿勢推定などの機能を提供します。cuMotion を使用すれば、時間最適の衝突回避動作を生成できます。Nvblox は、ローカル 3D 再構成や障害物検出に使用できます。「MoveIt」は、「Isaac Sim」の「ROS Bridge」経由でもサポートされています。
6-7. 強化学習
「Isaac Lab」は、ロボット学習のための統合型モジュールフレームワークであり、ロボット研究における一般的なワークフロー (強化学習、デモンストレーションからの学習、動作計画など) を簡素化することを目的としています。「Isaac Sim」上に構築されています。
6-8. HIL (Hardware in the Loop)
HILのテストと評価は、「Isaac Sim」で実行できます。ターゲット展開デバイスは、シミュレートされたロボットとセンサーからのすべてのデータを受信し、必要なソフトウェアスタック/アルゴリズムに供給できます。 ROS 2は、シミュレーションコンピュータからターゲットデバイスへのすべてのデータの送受信を処理するミドルウェアとして活用できます。例えば、「Isaac Sim」でシミュレートされたカメラは、ROS 2ブリッジを介して「Isaac Sim」から「NVIDIA Jetson Orin」(ロボットに搭載され、コンピュータービジョンアプリケーションを実行するデバイス) にすべての画像データをストリーミングします。これは、ロボットを物理的にセットアップする前に、必要なソフトウェアスタックを実行できるかどうかを確認するために、ターゲットのデプロイメントデバイスを選択する際に特に役立ちます。
6-9. CI/CD
・OSMO
「OSMO」は、オンプレミスからプライベートクラウド、パブリッククラウドまで、分散環境全体でワークロードを容易にスケーリングできるクラウドネイティブのワークフローオーケストレーションプラットフォームです。早期アクセスにお申し込みいただけます。
・サイジング計算ツール
「Isaac Sim」のパフォーマンスベンチマークについては、「Isaac Sim Benchmarks」を参照してください。
