isaac-sim-headless-deployment について
Isaac Simをウィンドウなしで実行するためのスキルです。バッチシミュレーション、自動データ生成、サーバーワークロード向けに、CLIとSimulationAppの起動方法をレンダリングあり・物理演算のみの両方で説明します。
主な機能
- 01ヘッドレス起動モード
- 02バッチシミュレーションスクリプト
- 03物理演算のみの夜間ランナー
- 04KitとPythonの起動パターン
活用シーン
- 01シミュレーションの反復実行
- 02UIなしでのデータ生成
- 03物理演算のみの夜間チェック
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ isaac-sim/ isaacsim --skill isaac-sim-headless-deploymentインストール後、Claude Code で/isaac-sim-headless-deploymentを入力して読み込まれたか確認します。
同梱ファイルscripts/batch_simulation.pyscripts/ci_physics_nightly.sh
詳細
Isaac Sim のヘッドレス使用(--no-window)
目的
サポートされている CLI フラグと SimulationApp のパターンを使って、バッチシミュレーション、自動データ生成、サーバーワークロード向けにウィンドウなしで Isaac Sim を起動します。
前提条件
- ビルド済み Isaac Sim(
$ISAAC_SIM_DIRまたは_build/linux-x86_64/release)。 - 最新のドライバーを搭載した NVIDIA GPU(
nvidia-smi)。 isaac-sim-orchestratorのシェル環境変数要件:$ISAAC_SIM_DIR、$ISAAC_LAB_DIR、$WORKSPACE_DIR。
制限事項
- セクション内に別途記載がない限り、Isaac Sim 6/Kit 110 を対象とします。
- サポート対象外の特殊なケースについて、NVIDIA の公式ドキュメントに代わるものではありません。
トラブルシューティング
| エラー/症状 | 原因 | 解決策 |
|---|---|---|
| 拡張機能またはインポートが見つからない | $ISAAC_SIM_DIR が誤っている、またはビルドが古い | 環境変数を _build/linux-x86_64/release に設定するか、再ビルドします |
| フレームが黒い、または空になる | ライトがない、または RTX 以外のレンダリングモード | ドームライト/キーライトを追加し、RTX/PathTracing の設定を確認します |
| ステージの読み込み時または最初のレンダリング時に停止する | MDL のコンパイル、またはステージのサイズが大きすぎる | isaac-sim-troubleshooting の切り分け手順に従います |
このスキルでは、ビルド済みまたはインストール済みの Isaac Sim のヘッドレス使用を扱います。Docker イメージ、コンテナーオーケストレーション、CI/CD の構成は扱いません。これらは、このスキルではなく、Isaac Sim をラップするデプロイ用インフラストラクチャで扱います。
利用可能なスクリプト
| スクリプト | 目的 | 引数 |
|---|---|---|
scripts/batch_simulation.py | Isaac Sim(Kit 110)向けのヘッドレスバッチシミュレーションループ | script --help を参照 |
scripts/ci_physics_nightly.sh | python.sh または Kit CLI による CI の物理演算専用ナイトリーランナー | <test_script.py> [args...] |
スクリプトの実行
スキル実行ヘルパーを利用できるエージェントランタイムからは、run_script() を使ってヘルパーを呼び出します。
run_script("scripts/batch_simulation.py", args=["--help"])
ビルド済みの Isaac Sim ツリーからは、_build/*/release で ./python.sh(Linux)または python.bat(Windows)を使って同じファイルを実行します。または、シミュレーターを必要としない場合はシェルヘルパーを直接実行します。
起動モード
1. ウィンドウあり(デフォルト)
./isaac-sim.sh
# Launches isaacsim.exp.full.kit with full UI
2. レンダリングありのヘッドレス
ヘッドレス GPU レンダリングの場合(ウィンドウなしで画像を生成します):
# Native headless — uses EGL/Vulkan offscreen
./isaac-sim.sh --no-window
# With explicit display (required on some systems)
DISPLAY=:0 ./isaac-sim.sh --no-window
3. レンダリングなしのヘッドレス
物理演算のみのシミュレーションの場合(ビューポートなし、レンダリングなし):
./isaac-sim.sh --no-window --/app/renderer/enabled=false
4. Python スタンドアロンスクリプト
スタンドアロンの Python スクリプトからシミュレーションのロジックを実行します。
./python.sh my_simulation.py
# Uses Isaac Sim's Python environment with all extensions available
スクリプトは SimulationApp の設定でヘッドレス動作を制御します(下記のバッチシミュレーションのパターンを参照)。python.sh に --no-window フラグを指定する必要はありません。
5. スクリプト実行付き Kit CLI
# Default — full Isaac Sim experience with rendering enabled
./kit/kit apps/isaacsim.exp.full.kit --exec "my_script.py"
# Headless physics-only batch
./kit/kit apps/isaacsim.exp.full.kit \
--no-window \
--/app/renderer/enabled=false \
--exec "physics_batch.py"
主な CLI フラグ
| フラグ | 説明 |
|---|---|
--no-window | ウィンドウの作成を無効にします(ヘッドレス) |
--/app/renderer/enabled=false | レンダリングを完全に無効にします |
--/app/window/width=W | ビューポートの幅を設定します |
--/app/window/height=H | ビューポートの高さを設定します |
--/app/settings/fabricDefaultStageFrameHistoryCount=N | Fabric のフレーム履歴 |
--enable EXT_ID | 特定の拡張機能を有効にします |
--ext-folder PATH | 拡張機能の検索パスを追加します |
--exec SCRIPT | 起動時にスクリプトを実行します |
--no-ros-env | ROS 2 の自動ソース設定をスキップします |
アプリ設定
| 設定ファイル | 用途 |
|---|---|
isaacsim.exp.full.kit | フルシミュレーション(デフォルト) |
isaacsim.exp.full.newton.kit | Newton 物理エンジン |
isaacsim.exp.full.fabric.kit | Fabric シーンデリゲート |
isaacsim.exp.base.kit | 最小構成のベース(起動が高速) |
isaacsim.exp.base.python.kit | Python 専用のベース |
isaacsim.exp.base.python.physics.headless.kit | 物理演算専用ヘッドレス(CI ナイトリー) |
isaacsim.exp.base.zero_delay.kit | ゼロ遅延ベース |
CI の物理演算のみの夜間実行
レンダリングもウィンドウも使用しない、物理演算のみの夜間 CI では、専用のキットファイルを使用します。
# Kit CLI mode — self-contained headless physics config
./kit/kit apps/isaacsim.exp.base.python.physics.headless.kit \
--no-window \
--/app/renderer/enabled=false \
--exec "test_physics_batch.py"
SimulationApp を自分で初期化するスタンドアロンの Python スクリプトでは、レンダラーを無効にするフラグを付けて
python.sh を使用します。
# python.sh mode — flags passed through to Carbonite/Kit settings
./python.sh test_physics_batch.py \
--/renderer/enabled=false \
--/app/window/enabled=false \
--/app/livestream/enabled=false
キットファイル(isaacsim.exp.base.python.physics.headless.kit)には、次の設定が組み込まれています。
renderer.enabled = false— GPU レンダリングサブシステムを使用しませんapp.window.enabled = false— ウィンドウを作成しませんapp.livestream.enabled = false— ストリーミングを無効にします- すべての UI/ビューポート/マニピュレーター拡張機能を無効にします
- すべてのレンダリング拡張機能(
omni.hydra.rtx、omni.rtx.*、omni.syntheticdata、omni.replicator.core)を無効にします - 物理演算に最適化されたループ設定(
rateLimitEnabled = false、manualModeEnabled = true、useFixedTimeStepping = true)
ラッパースクリプト scripts/ci_physics_nightly.sh は、両方のモードをカプセル化します。
Kit CLI では CI_KIT_MODE=1 を設定し、python.sh を使用する場合(デフォルト)は未設定のままにします。
バッチシミュレーションのパターン
ヘッドレス起動の標準パターンは、次のファイルにあります。
source/standalone_examples/api/isaacsim.simulation_app/hello_world.py(最小構成)source/standalone_examples/api/isaacsim.simulation_app/load_stage.py(ステージを開き、--testモードでステップループを実行)
N エピソードのバッチドライバーでは、この起動処理を Python の for episode in range(N) ループで囲みます。現行の API を使用してください。
- ステージを開く/読み込みを待機するには
isaacsim.core.experimental.utils.stage - 物理演算を設定するには
isaacsim.core.simulation_manager.SimulationManager.setup_simulation(dt=..., device=...) - ループを進めるには
isaacsim.core.experimental.utils.app(enable_extension、play、stop、update_app)
スケルトン(load_stage.py を基に要約し、バッチ用に調整):
run_batch_simulation(scene_path, num_episodes, steps_per_episode, dt, device) — USD を開き、読み込みを待ち、物理演算を設定してステップを実行し、各エピソードを停止するヘッドレスの SimulationApp ループです。
scripts/batch_simulation.py を参照してください。
Kit 110 では非推奨の、旧式の isaacsim.core.api.World/isaacsim.core.utils.stage のパスは使用しないでください。
移行:
omni.isaac.core、omni.isaac.utilsなどを対象とするomni.isaac.*→isaacsim.*の対応表については、拡張機能の名称変更を参照してください。
バッチ/ヘッドレス実行のパフォーマンス調整
物理演算のみ(最速)
config = {"headless": True, "renderer": None}
# In step loop:
world.step(render=False)
スループット: シーンの複雑さに応じて、リアルタイムの 10~50 倍です。
メモリ管理
- エピソード間でステージをクリアする:
world.clear()+ ガベージコレクション - インスタンス化可能なアセットを使用する:config.yaml で
make_instanceable: trueを設定 - GPU メモリを監視する:
nvidia-smi— ステージが適切にクリアされないと Kit でメモリリークが発生します - GB10(Jetson):最大約 35K プリム、共有メモリ 16GB — シーンの複雑さを抑えてください
既知の問題(Kit 110)
- 複雑なステージを Kit 110 でヘッドレスビューポート表示する場合、一部の GPU 構成では DISPLAY=:0 が必要です
- 一部の構成では DISPLAY がないとビューポートが初期化されません —
--no-windowとオフスクリーンレンダリングを使用してください - CUDA OOM:
nvidia-smiで監視し、GPU VRAM 使用率を 90% 未満に保ってください - 起動時間:コールドスタートでは約 30~60 秒です。対話型のバッチ処理ではプロセスを常駐させてください
- Newton 物理演算と torch の競合:物理演算が安定する前に torch をインポートしないでください