Skip to content

Add SimReady search to agentic environment generation. - #964

Closed
qianl-nv wants to merge 5 commits into
mainfrom
qianl/feature/sim-ready
Closed

Add SimReady search to agentic environment generation.#964
qianl-nv wants to merge 5 commits into
mainfrom
qianl/feature/sim-ready

Conversation

@qianl-nv

@qianl-nv qianl-nv commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

Add SimReady search to agentic env generation

Detailed description

  • Agentic env gen can search Isaac Sim 6.0 SimReady props and spawn them via simready_usd_object when Arena registry assets are missing
  • Select SimReady Physics=physics on spawn/contact so rigid bodies resolve for PickAndPlace sensors

/isaac-sim/python.sh isaaclab_arena_examples/agentic_environment_generation/environment_generation_runner.py --mode resolve --enable_simready_search --prompt "Droid picks up a disinfectant from the maple table and places it into a grey bin on the table."

Previous generated yaml: isaaclab_arena_environments/droid_disinfectant_into_grey_bin.yaml

qianl-nv added 5 commits July 28, 2026 23:14
Normalize prompts before spec inference, optionally query Isaac Sim GA
SimReady props, and emit simready_usd_object candidates so generated YAML
carries concrete USD paths without per-asset registry classes.

Signed-off-by: Qian Lin <qianl@nvidia.com>
Keep prompts like "maple table" as background-only so the resting surface is the background asset itself rather than inventing an in-scene object_reference.

Signed-off-by: Qian Lin <qianl@nvidia.com>
Select the authored Physics variant when spawning SimReady USD objects and when locating rigid bodies for contact sensors, preferring body prims when multiple rigid bodies share a depth.

Signed-off-by: Qian Lin <qianl@nvidia.com>
OR path-token filters so phrases like "disinfectant bottle" still match assets whose USD paths contain only one of the words.

Signed-off-by: Qian Lin <qianl@nvidia.com>
@qianl-nv

Copy link
Copy Markdown
Collaborator Author

Work continued on #982

@qianl-nv qianl-nv closed this Jul 31, 2026
xyao-nv added a commit that referenced this pull request Aug 3, 2026
## Summary
Enable SimReady search API in agentic env gen

## Detailed description
- Remove NormalizeSpec from
#964. Instead it sticks
to SpecInference. And objects the catalog cannot cover now carry
thesimready_usd_object` registry name and are searched in the SimReady
library after spec inference
- Matching is on whole words, and the phrase's last word — the object
itself — must appear in the asset path. To avoid substring matching,
e.g. "bin" turns into cabinet USD.
- Each candidate is read before it is accepted, and only assets with
exactly one rigid body are kept; multi-part props are turned down with
the reason recorded in the traces.
- When nothing usable is found, the object ids are named back to the
model for one further inference pass; an id already searched for is not
searched again. If the replacement still cannot be spawned, the runner
names the unavailable objects and shows the traces to users.
- Opt-in, off by default: `--enable_simready_search` on the environment
generation runner, or the "SimReady search" expander in the review GUI.

simready_droid_pick_place_cans_hammer_maple_table.yaml
<img width="1280" height="720" alt="image"
src="https://github.com/user-attachments/assets/e296cac2-720a-4e40-bfc6-4c439b73e9a1"
/>
<img width="3019" height="1140" alt="Screenshot from 2026-07-30
22-36-30"
src="https://github.com/user-attachments/assets/fea47cd6-8bff-468b-86cc-112d18f4d521"
/>
<img width="3019" height="1140" alt="Screenshot from 2026-07-30
22-34-57"
src="https://github.com/user-attachments/assets/cbcc2217-1bd2-434b-a773-9e5823c90421"
/>


Other examples
<img width="1280" height="720" alt="image"
src="https://github.com/user-attachments/assets/96c26dae-5e62-4c5d-8cca-8ebc98dfdec3"
/>
<img width="2977" height="1284" alt="image"
src="https://github.com/user-attachments/assets/df5a64de-31f7-4ea2-863f-ecb492b96e01"
/>

When Simready ones are not valid, fall back to the closest from Simready
/ Arena registry.
```
[runner] generation traces:
  simready search found no usable asset for 'pancake'
  no SimReady asset for object 'pancake'; it cannot be spawned
  asking for a replacement of: pancake

=== ArenaEnvGraphSpec (env_name='droid_pick_bagel_into_grey_bin') ===

assets:
  droid                    role=embodiment         registry_name=droid_abs_joint_pos
  maple_table              role=background         registry_name=maple_table_robolab
  bagel                    role=object             registry_name=bagel_00_objaverse_robolab
  grey_bin                 role=object             registry_name=grey_bin_robolab

```
```
[runner] generation traces:
  simready search found no usable asset for 'disinfectant spray'
  no SimReady asset for object 'disinfectant_spray'; it cannot be spawned
  asking for a replacement of: disinfectant_spray

=== ArenaEnvGraphSpec (env_name='droid_pick_soft_scrub_into_grey_bin') ===

assets:
  droid                    role=embodiment         registry_name=droid_abs_joint_pos
  maple_table              role=background         registry_name=maple_table_robolab
  soft_scrub               role=object             registry_name=soft_scrub_ycb_robolab
  grey_bin                 role=object             registry_name=grey_bin_robolab

relations:
  is_anchor        subject=maple_table
  on               subject=soft_scrub  reference=maple_table
  on               subject=grey_bin  reference=maple_table

task: composition=TaskCompositionType.ATOMIC
  description: Pick up a soft scrub cleaner from the maple table and place it into a grey bin on the table.
  [0] kind=PickAndPlaceTask
```

---------

Signed-off-by: Xinjie Yao <xyao@nvidia.com>
Signed-off-by: Qian Lin <qianl@nvidia.com>
Co-authored-by: Qian Lin <qianl@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant