Agent Skills › isaac-sim/IsaacSim › action-and-event-data-generation

action-and-event-data-generation

GitHub

Isaac Sim合成数据生成(AEDG)入口技能,用于路由和提供共享上下文以执行包含人、机器人、事件及摄像头的仿真数据生成任务。

skills/action-and-event-data-generation/SKILL.md isaac-sim/IsaacSim

触发场景

需要生成包含人或机器人的合成数据集 计划进行仿真环境中的物理事件或事故数据生成 使用Isaac Sim进行场景标注或VLM图像描述生成

安装

npx skills add isaac-sim/IsaacSim --skill action-and-event-data-generation -g -y
更多选项

不安装直接使用

npx skills use isaac-sim/IsaacSim@action-and-event-data-generation

指定 Agent (Claude Code)

npx skills add isaac-sim/IsaacSim --skill action-and-event-data-generation -a claude-code -g -y

安装 repo 全部 skill

npx skills add isaac-sim/IsaacSim --all -g -y

预览 repo 内 skill

npx skills add isaac-sim/IsaacSim --list

SKILL.md

Frontmatter
{
    "name": "action-and-event-data-generation",
    "license": "Apache-2.0",
    "metadata": {
        "author": "NVIDIA Isaac Sim <isaac-sim@nvidia.com>"
    },
    "description": "Entry point for Isaac Sim synthetic data generation (SDG) with actors, humans, robots, events, incidents, captions, or cameras. Use when planning an Action and Event Data Generation (AEDG) run."
}

Action and Event Data Generation

Purpose

Route a synthetic data generation (SDG) request to the right Action and Event Data Generation (AEDG) skills, and carry the context every one of them assumes: the launcher, the extension stack, the env-var contract, and the order the stages compose in.

Use this whenever the goal is to do SDG with simulated humans and robots moving with behaviors, physical events and incidents (spills, fires, toppling), procedurally placed or packed objects, camera coverage, and scene captions — plus the ground-truth annotations that come with them.

Prerequisites

  • Isaac Sim with the AEDG app ($ISAAC_SIM_DIR) — launch with isaac-sim.action_and_event_data_generation.sh.
  • NVIDIA GPU with a current driver (nvidia-smi) for any actual run; the offline config generators need neither GPU nor simulator.
  • Shell env contract from isaac-sim-orchestrator: $ISAAC_SIM_DIR, $WORKSPACE_DIR.
  • $NVIDIA_API_KEY only for the LLM-backed features (captioning, behavior-tree generation).

Limitations

  • This skill routes and supplies shared context; it does not itself run a simulation. Every concrete workflow lives in a sub-skill below.
  • The AEDG extensions are authored in the metrosim repo and consumed here as exact registry pins. These skills drive them; API changes belong upstream.
  • Config version rules differ per extension and are not interchangeable — see Version rules below. This is the single most common cause of a config being rejected.

Troubleshooting

Error / symptom Cause Solution
Panels missing from Tools menu Launched the wrong app Use isaac-sim.action_and_event_data_generation.sh, not isaac-sim.sh
Config rejected on load version mismatch Derive it from the installed extension — the rule differs per extension (see below)
Run finishes, no images No camera in the config Actors alone render nothing; add a sensor group or place cameras first
Event never fires Prims not tagged, or play started before setup Load a tagged stage; set up all panels before pressing Play
Captions/labels empty Prims lack semantic labels Author labels, or enable auto-labelling
$VAR appears literally in a path Configs are yaml.safe_loaded Env vars expand in the shell, never inside YAML — substitute before running

The stack

Eight extensions. isaacsim.exp.action_and_event_data_generation.base.kit holds the exact version each one resolves to — read it there rather than from any skill, which would go stale the moment the app moves:

Sub-feature Extension Shorthand
Actor Simulation and SDG isaacsim.replicator.agent.core IRA
Object Simulation and SDG isaacsim.replicator.object.core IRO
Physical Space Event Generation isaacsim.replicator.incident.core IRI
VLM Scene Captioning isaacsim.replicator.caption.core IRC
RTX Sensor Placement isaacsim.sensors.rtx.placement ISP
RTX Sensor Calibration isaacsim.sensors.rtx.calibration ISC
Behavior Tree Generation omni.ai.behavior_tree_gen.core + .bridge —
Animated Robot Controller isaacsim.anim.robot.core IAR

Shared substrate: omni.metropolis.pipeline (OMP) and omni.metropolis.utils (OMU).

How the stages compose

Per the architecture in the product docs — object simulation defines the static scene, events and actors add dynamics, then sensors and captioning capture it:

   Object Simulation (IRO)          ← static environment, procedural placement
            │
            ├── Event Generation (IRI)      ← spills / fires / toppling
            └── Actor Simulation (IRA)      ← people + robots with behaviors
                     │
                     │  (IRA calls ISP itself — see below)
                     ▼
   Sensor Placement (ISP) → Calibration (ISC)   ← where cameras go, and their intrinsics
            │
            ▼
   VLM Scene Captioning (IRC)      ← scene graphs + captions over the rendered views

ISP is not always a separate step. An IRA config can place its own cameras, in which case the standalone placement skills are unnecessary — see the next section.

ISP is optional: IRA places cameras from its own config

Each sensor.groups.<name> in an actor config carries a placement block, and IRA's scene assembly calls straight into isaacsim.sensors.rtx.placement while building the scene (scene_assembly/sensor_loader.py imports CameraPlacementManager and CircularCameraPlacement). So for a config-driven actor run, camera placement is already handled:

  sensor:
    root_prim_path: /World/Cameras     # default
    groups:
      ceiling_cameras:
        num: 6
        aim_at_targets:                # or: maximum_coverage
          height_range: [7.0, 10.0]
          look_down_angle_range: [30.0, 45.0]
          distance_range: [5.0, 10.0]
          focal_length_range: [10.0, 15.0]
Placement key Maps to Notes
aim_at_targets CircularCameraPlacement.circular_camera_placement() The default when no placement key is given
maximum_coverage CameraPlacementManager.place_camera_in_target_scope_explicit() num: -1 auto-calculates the camera count

Two consequences worth knowing:

  • Placement is opt-out, not opt-in. SensorGroup.placement has a default factory, so a group with only num: still runs aim_at_targets. You get ISP whether or not you asked for it.
  • Typos fail fast. The group model is extra="forbid" and the placement key is extracted before that check, so aim_at_target (singular) is rejected rather than silently falling back to the default.

So when do you need the standalone camera skills?

Situation Use
Config-driven IRA run, cameras described in YAML Nothing extra — IRA calls ISP for you
Placing cameras on a stage outside an actor run, or iterating on layout interactively place-camera-max-coverage / place-camera-aim-at
You need parameters IRA's config does not expose (occlusion threshold, yaw arcs, explicit scope, coverage visualization) the standalone skills
You need calibration.json / FOV data for placed cameras calibrate-metropolis-camera — always separate; IRA does not call ISC
Cameras already exist and you only want to record neither; point the writer at them

Calibration (ISC) is genuinely a separate stage: IRA places cameras but never calibrates them.

I want to… → use this

I want to… Skill
Sweep an actor config into many dataset variants actor-sdg-sweep-config
Vary lighting across actor runs actor-sdg-generate-lighting-variations
Pack boxes/parcels into a bin, pallet, or container object-bin-packing
Author or debug an incident config (topple / fire / spill) generate-incident-config
Drive incidents on a live stage and record a report run-incident-events
Caption scenes / build scene graphs for VLM training vlm-scene-captioning
Turn a text scenario into a behavior tree behavior-tree-generation
Cover a floor area with as few cameras as possible place-camera-max-coverage
Ring one object with unoccluded cameras place-camera-aim-at
Extract intrinsics / extrinsics / FOV for placed cameras calibrate-metropolis-camera

Adjacent, outside AEDG: isaac-camera for hand-authoring one camera's intrinsics and AOVs, and isaac-sim-remote for the python_server socket several of these skills send payloads over.

Launch

# from the Isaac Sim build root
./isaac-sim.action_and_event_data_generation.sh

Runs kit/kit apps/isaacsim.exp.action_and_event_data_generation.full.kit. Panels appear under Tools > Action and Event Data Generation (Actor / Object / Incident) and Tools > Sensors (Camera Placement / Calibration).

Several sub-skills drive a running instance over the python_server socket rather than the GUI. Add the extension to expose it:

./isaac-sim.action_and_event_data_generation.sh --enable isaacsim.code_editor.python_server

Headless, config-driven actor runs use the bundled script. Before running, explain that the configuration and all referenced assets, including USD layers and scripts, can execute Python with the user's permissions. Obtain explicit acknowledgement that they are trusted; this is not a sandbox. Do not add --allow-trusted-scripts automatically or run without that acknowledgement.

./python.sh tools/actor_sdg/actor_sdg.py --config_file my_scene.yaml --allow-trusted-scripts

Version rules (read before authoring any config)

Each extension validates its config version differently. Copying a sample and editing it is the usual way to get rejected:

Config Compared against Rule
Actor (IRA) isaacsim.replicator.agent extension version major.minor.0 — extension X.Y.Z → version: X.Y.0
Captioning (IRC) settings.VERSION inside the extension, not its package version Exact match. The two have diverged, so copying the package version always fails
Incident (IRI) isaacsim.replicator.incident.core extension version Major component only — any 0.x config version passes against a 0.x build
Object (IRO) extension version see object-bin-packing

Always derive the value from the installed build — never hardcode it, and never copy a version out of a skill or a sample config. The sub-skills' generator scripts do this with --from-ext.

Env vars expand in the shell, not in YAML

Configs are read with plain yaml.safe_load, so $VAR and ${VAR} stay literal inside a config file. Substitute before running — in a shell command that writes the resolved path, via envsubst < in.yaml > out.yaml, or by hand.

Cost

  • Runtime scales with duration, frame rate, camera count, and render mode; path tracing is far slower than rasterization. Short warehouse runs are minutes, large multi-camera runs are hours.
  • GPU required. The first captured frame on a cold app pays one-time shader compilation.
  • NIM credits are consumed by captioning and behavior-tree generation. Scene-graph-only captioning needs no key.

Product documentation

docs/isaacsim/action_and_event_data_generation/ — index.rst for the extension table and architecture, plus per-extension tutorials (tutorial_replicator_agent.rst, tutorial_replicator_object.rst, tutorial_replicator_incident.rst, tutorial_replicator_caption.rst, tutorial_sensors_rtx_placement.rst, tutorial_behavior_tree_gen.rst, tutorial_telemetry.rst) and the worked example example_event_reactive_actors.rst.

版本历史

  • 2469084 当前 2026-09-22 15:46

同 Skill 集合

.claude/skills/action-and-event-data-generation/SKILL.md
.claude/skills/actor-sdg-generate-lighting-variations/SKILL.md
.claude/skills/actor-sdg-sweep-config/SKILL.md
.claude/skills/behavior-tree-generation/SKILL.md
.claude/skills/calibrate-metropolis-camera/SKILL.md
.claude/skills/data-collection-sim/SKILL.md
.claude/skills/generate-incident-config/SKILL.md
.claude/skills/isaac-camera/SKILL.md
.claude/skills/isaac-sim-assets/SKILL.md
.claude/skills/isaac-sim-headless-deployment/SKILL.md
.claude/skills/isaac-sim-installation/SKILL.md
.claude/skills/isaac-sim-migration/SKILL.md
.claude/skills/isaac-sim-orchestrator/SKILL.md
.claude/skills/isaac-sim-remote/SKILL.md
.claude/skills/isaac-sim-rendering/SKILL.md
.claude/skills/isaac-sim-robot-navigation/SKILL.md
.claude/skills/isaac-sim-ros-workspaces/SKILL.md
.claude/skills/isaac-sim-ros2-bridge/SKILL.md
.claude/skills/isaac-sim-sensor/SKILL.md
.claude/skills/isaac-sim-troubleshooting/SKILL.md
.claude/skills/isaac-sim-validator/SKILL.md
.claude/skills/isaac-sim-workflow/SKILL.md
.claude/skills/manipulation-ik/SKILL.md
.claude/skills/meta-skills/SKILL.md
.claude/skills/mobility-gen/SKILL.md
.claude/skills/motion-generation/SKILL.md
.claude/skills/navigation-primitives/SKILL.md
.claude/skills/object-bin-packing/SKILL.md
.claude/skills/occupancy-map/SKILL.md
.claude/skills/physics-simulation/SKILL.md
.claude/skills/place-camera-aim-at/SKILL.md
.claude/skills/place-camera-max-coverage/SKILL.md
.claude/skills/profile-isaac-sim/SKILL.md
.claude/skills/run-incident-events/SKILL.md
.claude/skills/skill-distillation/SKILL.md
.claude/skills/skills-eval-triage/SKILL.md
.claude/skills/spatial-reasoning/SKILL.md
.claude/skills/urdf-mjcf-to-usd-conversion/SKILL.md
.claude/skills/usd-articulation/SKILL.md
.claude/skills/usd-composition-architecture/SKILL.md
.claude/skills/usd-pipeline/SKILL.md
.claude/skills/validation-diff-gifs/SKILL.md
.claude/skills/vlm-scene-captioning/SKILL.md
skills/actor-sdg-generate-lighting-variations/SKILL.md
skills/actor-sdg-sweep-config/SKILL.md
skills/behavior-tree-generation/SKILL.md
skills/calibrate-metropolis-camera/SKILL.md
skills/data-collection-sim/SKILL.md
skills/generate-incident-config/SKILL.md

元信息

文件数
0
版本
2469084
Hash
4fb0fd5f
收录时间
2026-09-22 15:46

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-25 04:29
浙ICP备14020137号-1