mcpField
I
isaac-sim-validator

isaac-sim-validator

github.com/isaac-simテスト・品質4.4k48 回インストール5 日前に更新
リポジトリ

isaac-sim-validator について

isaac-sim-validator は、Isaac Sim のライブラリ、Kit スクリプト、シーン、レンダー、学習出力、納品物を検査するスキルです。静的チェックに加え、明示的な許可を得て呼び出し元の権限でスクリプトを実行するレベルもあります。

主な機能

  1. 01レベル1~2の静的チェック
  2. 02許可が必要なレベル3の実行
  3. 03Kitシミュレーションとレンダー検査
  4. 04USD関節構造とファイル検査
  5. 05RL出力とアセット検査

活用シーン

  1. 01納品前のIsaac Simスクリプト確認
  2. 02照明や画像の不具合の検査
  3. 03ロボットUSD関節構造の検証
  4. 04RL学習成果物とメトリクスの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/isaac-sim/isaacsim --skill isaac-sim-validator

インストール後、Claude Code で/isaac-sim-validatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
feedback-log.md
quality-criteria.md
scripts/
validate_sim.sh

詳細

Isaac Sim Validator

警告: レベル 3 では、対象スクリプトをユーザーの全権限で実行します。コンテナやサンドボックスによる分離はありません。十分に信頼できるスクリプトに対してのみ、--confirm-execute を使用してください。

目的

ライブラリ単体または Kit アプリケーション/拡張機能を管理する境界で、よくある納品上の不備を検出します。

レベル 1~2 は静的チェックのみを行います。レベル 3 では、呼び出し元ユーザーの権限で timeout を使用して対象の Python スクリプトを実行します。 レベル 3 を実行するには、明示的な --confirm-execute(または CONFIRM_EXECUTE=1)によるオプトインが必要です。サンドボックスではありません。

前提条件

  • ライブラリ単体の場合、設定済みのビルド環境またはインストール済みのテスト環境が必要です。
  • Kit のチェックにはビルド済みの Isaac Sim ツリーが必要です。GPU が必要なのは、GPU を使用するチェックに限られます。

制限事項

  • レベル 1~2 では、あらゆるワークロードで実行時の正しさを証明できません。
  • レベル 3 では、--confirm-execute の指定後にのみ、信頼できないスクリプトの内容を実行します。コンテナ/firejail による分離はありません。
  • しきい値はよくあるデモ/SDG の問題を対象としており、すべての製品機能を網羅するものではありません。

トラブルシューティング

エラー/症状原因解決方法
Kit 拡張機能が見つからない$ISAAC_SIM_DIR の誤り、または古いビルド環境変数を _build/linux-x86_64/release に設定するか、再ビルドします
フレームが真っ黒、または空ライトがない、または非 RTX レンダリングモードドームライト/キーライトを追加し、RTX/PathTracing の設定を確認します
ステージの読み込み時または初回レンダリング時にハングするMDL のコンパイル、またはステージが大きすぎるisaac-sim-troubleshooting の切り分け手順に従います

納品前の最終ゲートです。以下のチェックに不合格となる出力を拒否し、結果を甘く評価しないでください。

ライブラリ単体の場合は、通常プロセスでのパブリックインポート、宣言されたパッケージ/ネイティブ依存関係、再配置、該当する場合は SDK コンシューマー、および isaacsim.common.logging.Logger の診断を検証します。SimulationApp、レンダリング、GPU は必須ではありません。

Kit 専用の検証ヘルパー

スクリプト目的引数
scripts/validate_sim.shシミュレーションを検証しますスクリプトヘッダーに記載された位置引数(スクリプトを参照)

スクリプトの実行

スキル実行ヘルパーを利用できるエージェントランタイムからは、run_script() を使用してヘルパーを呼び出します。

run_script("scripts/validate_sim.sh", args=[])

ビルド済みの Isaac Sim ツリーからは、_build/*/release にある ./python.sh(Linux)または python.bat(Windows)を使って同じファイルを実行します。シミュレーターを必要としない場合は、シェルヘルパーを直接実行することもできます。

Kit シミュレーションチェックリスト

チェック項目合格条件不合格時の対応
スクリプトのパス存在し、読み取り可能拒否:Script path invalid: <path>
ファイルサイズ> 1 KB拒否:Script empty or corrupted
isaacsim のインポートomni.isaac.core ではなく isaacsim.* を使用拒否:Use isaacsim.* namespace; omni.isaac.core is deprecated
SimulationApp の設定width と height を明示拒否:SimulationApp without window args causes swapchain-capture size mismatch
ライトの設置DomeLight(intensity >= 100)および DistantLight(>= 500)拒否:No lighting; render will be black
レンダリングモード反復作業では RayTracedLighting、ヒーローショットのみ PathTracing拒否:PathTracing too slow for iteration; use RayTracedLighting
ACES トーンマップcarb rtx.post.tonemap.op = 4、filmIso はデフォルトで 200/深い通路では 600/空撮では 400提案:Enable ACES (op=4) for contrast
最終レンダリング>= 150 KB かつ mean_RGB > 30拒否:Render is black or low-energy; check lighting
ユーザーパス/home/<user>/、ハードコードされた C:\path\to\...、エージェントごとのホームパスを使わない。%USERPROFILE%、環境変数、または argparse を優先拒否:Hardcoded user path; use $ISAAC_SIM_DIR, $ISAAC_LAB_DIR, $WORKSPACE_DIR, or argparse
ネットワークエンドポイントIP アドレス(192.168.x.x、10.x.x.x)を直接記述せず、localhost 以外のホストも指定しない拒否:Hardcoded endpoint; parameterize via env var or config
出力ディレクトリ設定可能(環境変数、CLI、または関数パラメーター)拒否:Output dir hardcoded; accept as parameter or read $OUTPUT_DIR
VRAM の余裕安定後の nvidia-smi の空き容量が 20% 超使用率が >90% の場合は警告。リークまたはスケールの問題が考えられます
pkill -f "kit/kit" の使用強制終了と再起動のバグを検出警告:Verify zero kit processes before next launch
シミュレーション時間物理シミュレーションが >= 3 s拒否:Sim ran < 3 s; physics has not settled

ファイル構造の検証(USD シーン)

項目有効無効対応
$ISAAC_LAB_DIR/scripts/読み取り専用の参照先ここに出力を書き込む$OUTPUT_DIR または $WORKSPACE_DIR/outputs/ に出力先を変更
get_assets_root_path() -> s3://...実行時には OK配布する出力に埋め込むローカルにキャッシュし、設定可能なパスで参照
Melting/Splat の MDL 専用シェーダー未加工の状態なら OKエクスポート時に MDL 専用除外する。MDL 専用ではレンダリングが黒くなります
RL の MakeInstanceable必須(make_instanceable: true)なし拒否
サーフェスの usdPreviewSurface必須なし拒否。UsdPreviewSurface の追加を提案
convex_decompose_meshfalse(clean_sdf_dc と併用)true安定性のため false を推奨
mpu=0.01倉庫の外殻(13 m タイル)では OKロボットに使用拒否

レンダリングの検証(フレーム分析)

指標良好不良対応
ファイルサイズ1–4 MB~82 KB82 KB は黒画像。拒否
平均 RGB80–160< 20拒否:Too dark; add lights
最大 RGB200–2500拒否:No light in scene
ピクセルの分散> 15< 5平坦な画像は影が欠落しています。アクセントを追加
カラーヒストグラム複数のピーク単一のピーク露出過多または平坦なライティングです。強度を調整
オブジェクトの視認性ロボットが >= 3 体、またはアセットが 50 個以上視認できるものが < 10 個提案:Scene too sparse; add set dressing
影の一貫性影に一貫性がある不規則な黒い塊拒否:Shadow artifacts; check light cone bounds

動画の検証

納品する MP4/GIF はすべて、開始・中間・終了のフレームを抽出して確認します。最初のフレームにレンダリングのウォームアップが映っている、被写体が遮られている、またはカメラがタスクを捉えられていない場合は、プレゼンテーション用の動画を拒否するか再編集します。短いプレゼンテーション用動画を作成する場合も、元のレンダリング全体とメトリクスを保持してください。

RL トレーニングの検証

問題対応
AppLauncher が先頭にない拒否:AppLauncher must precede any isaaclab imports
タスクの __init__.py が空でない拒否:Task __init__.py must be empty; do not import configs
omni.isaac.lab のインポート拒否:Use isaaclab.*; omni.isaac.lab is deprecated
PhysX バックエンド(Newton が適用される場合)拒否:Use Newton; it is the default on Kit 110
PYTHONUNBUFFERED=1 がない警告:Set PYTHONUNBUFFERED=1 to see logs in real time
GPU メモリのログ記録がない提案:Log torch.cuda.memory_allocated()/1e6 to W&B
バッチサイズが VRAM を超過提案:Reduce num_envs (try 2048)
チェックポイント名が不正拒否:Must be model_XXXX.zip, not policy.pt
シードが 1 つだけ提案:Run seeds 42, 123, 456 for valid comparison

アセットとシェルの検証

入力チェック項目対応
docker run コマンド/workspace/output の -v マウント拒否:Output folder not mounted
サブエージェントの起動workdir=$WORKSPACE_DIR拒否:Sub-agent workdir hardcoded; use $WORKSPACE_DIR
Blender の USD エクスポート正しい mpu、デュアルシェーダー(UsdPreviewSurface + MDL)、正しいエクスポートタイプいずれかが欠けていれば拒否
シーンの複雑さ安定化ステップ 10 回以内にレンダリングされること拒否:Scene too complex; simplify assets
ゴーストアーティファクト/dev/shm/carb-* のクリーンアップ拒否:Use workspace_cleanup.py to clear /dev/shm/carb-*

Kit の判断ツリー

graph TD
    A[Received Output] --> B{Has script?}
    B -->|No| C[Reject: "No script provided"]
    B -->|Yes| D{File size >1KB?}
    D -->|No| E[Reject: "Script empty or corrupted"]
    D -->|Yes| F{Python?}
    F -->|Yes| G{isaacsim.* imports?}
    G -->|No| H[Reject: "Use isaacsim.* not omni.isaac.core"]
    G -->|Yes| I{SimulationApp or --exec?}
    I -->|Neither| J[Reject: "Must use SimulationApp with window args OR isaac-sim.sh --exec"]
    I -->|SimulationApp| K{width and height set?}
    K -->|No| L[Reject: "SimulationApp requires explicit width and height"]
    K -->|Yes| M{Dome + Distant lights?}
    M -->|No| N[Reject: "Add DomeLight and DistantLight (min intensity 100 and 500)"]
    M -->|Yes| O{RayTracedLighting?}
    O -->|No| P[Reject: "Use RayTracedLighting for iteration"]
    O -->|Yes| Q{Render output exists?}
    Q -->|No| R[Reject: "No render output"]
    Q -->|Yes| S{>= 150 KB and mean_RGB > 30?}
    S -->|No| T[Reject: "Render is black, too dark, or corrupted"]
    S -->|Yes| U{Hardcoded user paths or bare IPs?}
    U -->|Yes| V[Reject: "Replace hardcoded user paths/IPs with env vars or args"]
    U -->|No| Y[VALID - deliver]

トレーニング出力

項目対応
policy_only_XXXX.pt許可
model_XXXX.zip許可
log.csv または wandb URL許可
エピソードデータを含む results.json許可
報酬曲線/メトリクスがない拒否:Log episode/reward_mean and train/value_loss

返信形式

  • 合格:Valid: <one-line summary>
  • 不合格:Invalid: <list of failed checks>
  • 提案(ほかの項目がすべて有効な場合のみ):Could be improved: <tip>

曖昧な表現(「そう思います」「たぶん」など)は使わないでください。黒いフレームを出力しないでください。

入力ソース

  • isaac-sim-orchestrator、isaac-sim-rendering、その他の生成スキル、およびサブエージェントの出力。
  • Isaac Sim の成果物に対して呼び出されます:「この Isaac Sim スクリプトを検証」「この Isaac Sim レンダリングをチェック」「このシミュレーション出力をレビュー」。

自動検証

scripts/validate_sim.sh を使用し、CLI から上記のチェックを実行します。

# Levels 1–2: static only
bash scripts/validate_sim.sh --level <1|2> <script.py> [--output-dir <dir>] [--timeout <seconds>]

# Level 3: EXECUTES the script — requires explicit opt-in
bash scripts/validate_sim.sh --level 3 --confirm-execute <script.py> [--output-dir <dir>] [--timeout <seconds>]
# or: CONFIRM_EXECUTE=1 bash scripts/validate_sim.sh --level 3 <script.py> ...

フィードバックループ

  • 拒否内容は、生成スキルの失敗モードカタログにフィードバックされます。
  • 繰り返し発生する失敗は、新しいバリデータールールになります。
  • 継続的に適用する評価基準:references/quality-criteria.md。各イテレーションを references/feedback-log.md に記録します。

コメント