Support graph-YAML environments in typed YAML Experiments - #970
Conversation
The typed YAML experiment frontend previously resolved environment.type only against registered environment names; graph-spec YAML environments (e.g. the robolab tasks) were reachable only through the legacy JSON format or the CLI. An environment.type ending in .yaml/.yml now routes through the same LegacyGraphEnvironmentCfg compatibility path the JSON frontend uses, and the camera pre-launch guard recognizes such runs. Signed-off-by: Alex Millane <amillane@nvidia.com>
language_instruction is not a flag on the graph-environment parser (it is injected from the typed builder config after parsing, as is device), so rendering it as a token made argparse swallow the value as the example-environment positional. Signed-off-by: Alex Millane <amillane@nvidia.com>
osmo/submit_arena_experiment.py embeds the effective Experiment by re-serializing it, which failed for graph-YAML environments because the serializer only resolves registry-registered configs. The compatibility config now records its graph-spec path and source environment values, and the serializer emits them as the environment section. Graph runs also now execute with the Run's typed environment_builder config instead of one re-derived from CLI tokens, so post-load Hydra overrides (e.g. environment_builder.num_envs on an OSMO submission) take effect; tokens carry only environment values. Signed-off-by: Alex Millane <amillane@nvidia.com>
c4c0125 to
eb420ac
Compare
alexmillane
left a comment
There was a problem hiding this comment.
Self review 1
alexmillane
left a comment
There was a problem hiding this comment.
Self review 2
alexmillane
left a comment
There was a problem hiding this comment.
self review 3
|
/review |
🤖 Isaac Lab-Arena Review BotSummaryThis routes an Findings🟡 🟡 Run names swapped ( 🟡 🔵 Stale header comment ( Test CoverageGood — load, serialize-and-reload round-trip, the pre-startup camera assertion, the OSMO embed handoff, and the legacy JSON path are all covered. These are pure-config paths, so no SimulationApp inner/outer tests are needed. VerdictMinor fixes needed |
Greptile SummaryThe PR allows typed Experiment YAML files to select graph-spec YAML environments, preserves those environments through serialization and OSMO embedding, and executes them through the legacy graph-construction adapter.
Confidence Score: 4/5The swapped Robolab graph paths should be corrected before merging because both new runs currently execute and report results for the opposite task. The graph-YAML loading path is coherently connected through execution and serialization, but the newly added example maps each named Run to the other task’s graph, producing incorrectly attributed evaluations. Files Needing Attention: isaaclab_arena_environments/robolab/experiment_configs/robolab_2_tasks_pi0.yaml Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
A[Typed Experiment YAML] --> B{environment.type ends in YAML?}
B -- No --> C[Registered typed environment config]
B -- Yes --> D[LegacyGraphEnvironmentCfg]
D --> E[Reconstruct graph CLI overrides]
E --> F[Load graph spec]
C --> G[ArenaEnvBuilder]
F --> G
G --> H[Experiment rollout]
D --> I[Serialize effective Experiment]
I --> J[OSMO embedded Experiment YAML]
Reviews (1): Last reviewed commit: "Remvoe yaml tag." | Re-trigger Greptile |
Summary
Run graph-YAML environments with
experiment_runner.py.Detailed description
environment.typeending in.yaml/.ymlnow routes through the sameLegacyGraphEnvironmentCfgcompatibility path the JSON frontend uses.osmo/submit_arena_experiment.pyembeds the experiment in the OSMO yaml by re-serializing it.