Developer Tools & Techniques

フロンティア AI モデルを活用してロボティクス向け SimReady アセットを作成する 5 つのステップ

Reading Time: 4 minutes

ロボティクス シミュレーション用の CAD アセットを準備するには、ジオメトリを OpenUSD に変換するだけでは不十分です。開発者は、ロボットの動作をテストする前に、マテリアル、衝突ジオメトリ、ジョイント、その他の物理プロパティを設定し、検証する必要があります。

NVIDIA Omniverse ライブラリは、SimReady Foundation の仕様とエージェント型の NVIDIA スキルに基づき、シミュレーションに対応した (SimReady) アセットへの変換と検証を体系的に進めるワークフローを提供します。フロンティア AI モデルは、参照資料の内容を解釈し、開発者に代わって Omniverse ツールを呼び出すことで、各段階の作業を支援し、手作業による準備を減らすことができます。

この記事では、SimReady Foundation と NVIDIA Omniverse ツールを使用して、ABB Robotics の YuMi ロボットをシミュレーション用に準備する方法を紹介します。このプロセスを支援できるフロンティア AI モデルの一例として、GPT-6 Astra を使用します。ワークフローは、STEP ファイルの変換、外観の検証、物理設定、SimReady 検証、そして NVIDIA Isaac Sim で両腕と両方のグリッパーを使って行う最終的なピック アンド プレース タスクという、5 つのステップで構成されます。

SimReady とは何か、シミュレーションにおいてなぜ重要なのか

SimReady は、特定のシミュレーション用途に合わせて OpenUSD アセットを準備するための要件を定義します。開発者は、目的の用途に合った SimReady プロファイルを選択し、その要件に照らしてアセットを検証します。プロファイルごとのチェックでは、アセットの構造、マテリアル、物理プロパティを検証し、開発者が修正して再検証できるように問題を指摘します。

ロボット モデルは、見た目が正しくても、シミュレーションに必要なプロパティが欠けていると、シミュレーション内で正常に動作しないことがあります。たとえば、衝突ジオメトリが欠けていると、物体がグリッパーをすり抜ける可能性があります。また、ジョイントの設定が不適切だと、協調動作ができなくなることがあります。質量や摩擦などのシミュレーション プロパティは、物体を安定して把持し続けられるかどうかに直接影響します。

このワークフローは、以下の技術とツールによって支えられています。

  • OpenUSD は、ジオメトリ、アセンブリ構造、マテリアル、シミュレーション プロパティを共通のアセット表現で記述します。
  • SimReady Foundation は、シミュレーションに対応したアセットを準備するための仕様と検証指針を提供します。
  • NVIDIA Omniverse ライブラリ は、開発者やエージェントが OpenUSD コンテンツを変換、検査、準備するために利用できる機能を提供します。
  • NVIDIA Isaac Sim は、物理設定とロボットの動作テストを行う環境を提供します。
  • NVIDIA Omniverse AI Agent スキル (CAD-to-SimReady スキルなど) は、アセットの変換、マテリアルと物理プロパティの割り当て、検証の各工程でエージェントをガイドします。

SimReady ロボティクス ワークフロー: ABB YuMi ロボットの例

この解説では、ABB YuMi ロボットを使って、5 つのステップからなる SimReady ワークフローを紹介します。ここでは、各段階で NVIDIA Omniverse ライブラリを呼び出す Python コードの作成を支援できるフロンティア AI モデルの一例として、GPT-6 Astra を使用します。ただし、このワークフローは、さまざまなモデルやロボット システムに適用できます。

この例では、ワークフロー内で設定した両腕と両方のグリッパーを使用します。ステップ 5 のデモには、立方体と Sharpie マーカーを使用しました。カメラを使った知覚機能は、別のワークフローで追加できます。

開始前の準備:

  • Isaac Sim をインストールする
    • Isaac Sim ディレクトリ内に「reference」という名前のフォルダーを作成します。このフォルダーには、ワークフローで使用する関連アセットを保存します。
  • フロンティア AI モデルをインストールする
    • このワークフローの例では、GPT-6 Astra を使用しました。
  • Isaac Sim ディレクトリで Codex CLI を起動する
    • エージェントがワークフローに必要なスキルを見つけられるように、Isaac Sim ディレクトリ内で Codex を起動することが重要です。

このワークフローの例では、Isaac Sim 6.1 と Codex CLI を使用し、Isaac Sim をウィンドウ モードで起動しました。

実行中の Codex CLI で、次のプロンプト例を使用して Isaac Sim を起動します。

リモート Python サーバーを有効にして、Isaac Sim をウィンドウ モードで起動してください。この操作には、新しいターミナルを使用してください。

Isaac Sim のリモート Python サーバーを利用すると、エージェントは Python を介して、実行中の Isaac Sim アプリケーションと通信できます。続行する前に、接続が正常に機能していることを確認してください。

各ステップでは、フロンティア AI エージェントに入力するプロンプト例を作業内容に合わせて調整してください。その後、シミュレーション結果と検証フィードバックを確認し、問題を特定してアセットを改善します。

1. STEP ファイルからロボットをインポートする

このワークフローの最初のステップでは、参照フォルダー内の STEP ファイルからロボットをインポートします。

この例では、Isaac Sim ディレクトリ内の参照フォルダーに、以下の入力データを用意します。

入力の例目的
ABB Robotics YuMi ロボットの STEP ファイル OpenUSD に変換するための元のジオメトリを提供します。
ABB Robotics の参照用画像と動画。このサンプル ワークフローでは、リンク先の ABB Robotics の動画と画像を使用します。アセットの外観とマテリアルの割り当てを決める際の参考にします。
SimReady Foundation 仕様リポジトリ
注: Isaac Sim 6.1 には simready-foundation-tier-core も同梱されています。
ロボットの要件、関連スキル、および検証指針を提供します。
CAD-to-SimReady スキルCAD の変換、マテリアルと物理プロパティの割り当て、SimReady 検証の指針を提供します。
表 1. YuMi ロボットをシミュレーション用に準備するための入力の例とその用途

注: Isaac Sim 6.1 には simready-foundation-tier-core が同梱されています。

提供された入力を使用して、OpenUSD への変換と Isaac Sim へのインポートを行うようエージェントに指示します。

プロンプト例:

参照フォルダー内の STEP ファイルと CAD-to-SimReady スキル (https://github.com/NVIDIA/skills/tree/main/skills/omniverse-cad-to-simready) を使用して、ロボットを Isaac Sim にインポートしてください。両方のグリッパーも必ずインポートし、ロボットの両腕の正しい取り付け位置に配置してください。

使用した NVIDIA スキル: omniverse-cad-to-simready、omniverse-cad-to-usd、isaac-sim-remote

続行前の確認事項: ロボット アセットがインポートされ、検査できる状態になっていること。作業内容と提示された要件が理解され、不足している情報が特定されていること。

2. 外観を合わせる

次のステップでは、インポートしたロボットを検査し、想定されるマテリアルとテクスチャが存在し、正しく読み込まれていることを確認します。アセットを、用意した ABB の画像や動画と比較し、スケール、向き、部品の配置を確認します。

これらの参照資料を使って、マテリアルとテクスチャを追加または調整するようエージェントに指示します。

プロンプト例:

参照フォルダー内の ABB の画像と動画を使用して、インポートしたロボットの外観を実機に合わせてください。マテリアルとテクスチャを追加または調整し、外観上の相違点や不足している参照情報を報告してください。

前提条件: エージェントは、CAD ジオメトリと取り付けトランスフォームを維持しながら、色、金属の反射特性、粗さを調整して、ロボットのマテリアルを視覚的に合わせます。マテリアル設定は見た目に基づく推定であり、実測に基づくマテリアルの再構成や AI 生成テクスチャは使用していません。

使用した NVIDIA スキル: isaac-sim-remote、usd-pipeline

続行前の確認事項: ロボットのスケール、向き、部品、外観が想定どおりであること。不足しているマテリアルやテクスチャ、その他の外観上の相違点が記録されていること。

3. 物理プロパティを設定する

この段階では、OpenUSD アセットにロボットの表示用ジオメトリは含まれていますが、ジョイント、剛体、衝突ジオメトリはまだ設定されていません。両腕と両方のグリッパーの物理プロパティを設定し、検証するようエージェントに指示します。エージェントは、reference フォルダー内のデータシートを使用し、シミュレーション内のロボットのジョイント可動範囲と速度制限が、データシートの仕様と一致するようにします。

メーカーのデータが不完全な場合は、不足しているパラメーターを特定し、該当モデルの技術マニュアルや入手可能な URDF ロボット記述を確認するようエージェントに指示できます。それでも質量特性が得られない場合は、NVIDIA の質量特性に関する指針に従い、密度や質量分布の仮定を明記したうえで、ジオメトリから推定します。たとえば、十分な情報を与えなかった際には、エージェントがロボットの公開 URDF を取得し、それを使ってジョイントの正しい軸とゼロ姿勢を特定する様子が確認されました。

プロンプト例:

YuMi の両腕と両方のグリッパーに物理リグを設定し、物理プロパティを検証してください。

ジョイントの定義、軸と制限、質量と慣性、衝突ジオメトリ、ベースの固定、グリッパーの動作を確認してください。

初期姿勢は異なる場合があります。

図 4. 物理設定後の YuMi の姿勢

このワークフローにおけるシミュレーションの仮定:

  • ジョイント設定: エージェントは、ロボットの公開 URDF を取得し、ジョイント軸とゼロ構成の特定に使用しました。
  • リンクごとの質量: STEP ジオメトリの体積から推定し、メーカーが指定する総質量 (ロボットは 38 kg、各グリッパーは 0.28 kg) に合うように正規化しました。
  • 重心と慣性: 各部品を密度が均一な中実体と仮定して計算しました。内部のモーター、ギアボックス、配線は個別にモデル化していません。
  • 接触特性: 静止摩擦係数を 0.8、動摩擦係数を 0.6、反発係数を 0 と仮定しました。
  • 衝突ジオメトリと外観: 凸形状の衝突ジオメトリ、表面粗さ、マテリアルの応答は近似しました。
  • キャリブレーション: これらのパラメーターは、実機の YuMi の測定値に基づくキャリブレーションを行っていません。

使用した NVIDIA スキル: usd-articulation、physics-simulation、isaac-sim-validator、isaac-sim-remote

続行前の確認事項: ジョイントが想定される軸の周りを、設定された制限の範囲内で動くこと。ベースの取り付けとグリッパーの動作は、設定どおりに機能します。推定したプロパティと検証で不合格となった項目が記録されていること。

4. SimReady プロパティを検証する

次のステップでは、目的のシミュレーション タスクに対応する SimReady 要件に照らして、ロボットの OpenUSD アセットを検証します。選択した SimReady Foundation のチェックを実行し、結果を確認して、必要に応じてアセットを修正するようエージェントに指示します。

プロンプト例:

Isaac Sim で最終的な YuMi アセットを検証してください。

ロボット向けの SimReady アセット検証を探し、SimReady スキーマ (https://github.com/nvidia/simready-foundation) を USD ファイルに適用してください。そのリポジトリ内の関連スキルも使用してください。

このワークフローでの検証結果:

  • SimReady Foundation: YuMi アセットの単位、アセットの依存関係、ジオメトリ、マテリアル、剛体、ジョイント、ドライブ、アーティキュレーションを、SimReady Foundation の要件に照らしてチェックしました。
  • Isaac Sim のアセット チェック: Isaac Sim 内の検証エンジンを使用して、スケール、向き、部品の配置、グリッパーの取り付け、マテリアルの適用範囲を検証し、テクスチャの依存関係を解決しました。
  • 質量と慣性: 21 個すべての剛体において、質量は正の値であり、慣性テンソルは物理的に妥当なものでした。実行時の値は、オーサリングされた値と一致していました。
  • ジョイント: 軸、座標系、制限、ドライブ、フィンガーのミミック動作、固定ベースの取り付けをチェックしました。
  • 実行時の動作: テストした軌道に沿って、アームとグリッパーの動作、接触、解放、および衝突をテストしました。

これらのチェックでは、シミュレーションの実装を検証しました。実機のロボットの動力学との整合性や、考えられるすべての姿勢における衝突安全性を確認したものではありません。

続行前の確認事項: シーケンスが合意した受け入れ基準を満たし、選択した SimReady チェックに合格していること。調整内容、推定したプロパティ、未解決の不合格項目が記録されていること。

5. ロボティクス シミュレーションの最終タスク

Isaac Sim で、外観、物理、SimReady のチェックとピック アンド プレース タスクを組み合わせた最終検証を実行します。

例 1: 立方体のピック アンド プレース

テスト シーンにカラーターゲットとボックスを追加し、ターゲットの位置とカラー メタデータを定義するようエージェントに指示します。その際、一致するカラー ターゲットは、シーンのメタデータを使用して選択されます。

プロンプト例:

両腕とグリッパーを使用して、立方体をピック アンド プレースしてください。テストシーンにカラーターゲットとボックスを追加し、それぞれの位置とターゲットのカラーメタデータを定義してください。

把持、持ち上げ、保持、移動、解放の一連の動作を実行してください。シーンのメタデータを使用して、各立方体に対応するカラーターゲットを選択してください。箱の中への配置もテストしてください。

スケール、向き、部品の配置、マテリアル、テクスチャ、ジョイント軸と制限、衝突ジオメトリ、グリッパーの動作を確認してください。選択した SimReady Foundation の検証チェックを実行してください。

シミュレーションの仮定:

  • 無次元の接触摩擦係数として、静止摩擦係数を 0.8、動摩擦係数を 0.6 と仮定しました。この設定で把持テストには合格しましたが、係数は物理的なフィンガーと物体の接触に基づいて測定またはキャリブレーションされたものではありません。
  • この例では、一辺 45 mm、質量 40 g のテスト用立方体と、ステップ 3 で説明したシミュレーションの仮定を使用します。

ピック アンド プレースの実行結果:

  • 完了したサイクル: 122.2 秒間の物理シミュレーションで、両腕とグリッパーが合計 4 回のピック アンド プレース サイクルを完了しました。
  • タスクの動作順序: 各腕が立方体を把持し、持ち上げて2秒間保持した後、移動させ、同じ色のターゲット上に置きました。その後、それぞれの腕が自身の立方体を再び拾い上げ、箱の中に入れました。
  • 接触時の挙動: フィンガーの接触と摩擦によって立方体を運びました。シミュレーション中に、固定用のジョイント、キネマティックな保持、立方体の姿勢の直接更新は使用していません。
  • 受け入れ基準: すべてのサイクルが、定義した把持、保持、移動、解放、配置の基準を満たしました。
  • 録画: MP4 と GIF は、このシミュレーションから生成しました。

図 6. 色付きの立方体とターゲットマーカーを使用した YuMi のピック アンド プレース シミュレーション

例 2: 画像から導出された物体のピック アンド プレース

別のデモでは、参照画像から作成された Sharpie マーカーを使用して、ロボットが拾い上げるための 3D アセットをエージェントに作成させました。

  • シミュレーションの仮定: エージェントは、マーカーの寸法を 140 mm、質量を 10 g と推定し、重心を Sharpie マーカーの幾何学的中心に設定しました。衝突ジオメトリは、キャップ、バレル、後端の栓をそれぞれ円柱形状で近似しました。
  • 実行結果: Isaac Sim 内で、YuMi のグリッパーがマーカーをテーブル上から持ち上げ、青いトレーの中に離しました。

シミュレーション テストの成功は、テストした条件下での動作を示します。結果は、使用するフロンティア AI モデルやプロンプトによって異なる場合があります。

使用した NVIDIA スキル: manipulation-ik、physics-simulation、isaac-sim-validator、isaac-sim-remote、isaac-sim-rendering

ワークフローを試す

SimReady Foundation と NVIDIA Omniverse ツールは、開発者が CAD ファイルや参照資料を、シミュレーション内で設定、検証、テストできるアセットに変換する作業を支援します。OpenUSD、SimReady Foundation、NVIDIA Omniverse のツールとスキルを活用して、ロボティクス シミュレーションのタスクに必要なアセットを準備してください。

この YuMi の解説は、フロンティア AI モデルとして GPT-6 Astra を使用した SimReady ロボティクス ワークフローの一例です。この手法を別のロボットやフロンティア AI モデルに適用するには、必要なツールとスキルにアクセスできることを確認し、関連する参照資料を用意して、アセットとタスクの検証を繰り返してください。結果は、使用するモデル、推論の労力、プロンプトによって異なる場合があります。

ABB Robotics のサンプル ワークフローを試す

詳細を見る

2026 年 10 月 20 日~22 日に開催される NVIDIA GTC Berlin にぜひご参加ください。フィジカル AI とロボティクスの最新動向に触れ、開発者、研究者、業界のリーダーと交流することができます。

翻訳に関する免責事項

この記事は、「5 Steps to Create SimReady Assets for Robotics with Frontier AI Models」の抄訳で、お客様の利便性のために機械翻訳によって翻訳されたものです。NVIDIA では、翻訳の正確さを期すために注意を払っておりますが、翻訳の正確性については保証いたしません。翻訳された記事の内容の正確性に関して疑問が生じた場合は、原典である英語の記事を参照してください。

Tags