Add minimal ArenaWorld scene queries - #1173
Conversation
Move live pose and derived geometry lookup behind the environment-owned ArenaWorld. Keep ObjectOnDestinationTerm as a stateless manager adapter and cache only local AABBs for the environment lifetime. Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Document and assert the supported scene categories for pose and geometry queries. Use the initialized ArenaWorld field directly during cleanup. Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Name the rigid-object and scene-extra lookup paths explicitly, hide scene-extra reader caching behind a helper, and apply one output contract before returning the pose. Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Greptile SummaryThis PR introduces an environment-owned
Confidence Score: 5/5The PR appears safe to merge, with no concrete blocking or independently actionable non-blocking issues identified. The updated task callers supply the new placement arguments, live and cached scene data remain aligned for established task paths, and ArenaWorld is guarded across initialization and closure. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
Task[Task termination or progress predicate] --> World[ArenaWorld]
World --> Pose[Live entity poses]
World --> Velocity[Live rigid-object velocity]
World --> Bounds[Lifetime-cached entity-frame AABBs]
Task --> Sensor[Filtered contact force]
Pose --> Placement[Placement evaluation]
Velocity --> Placement
Bounds --> Placement
Sensor --> Placement
Placement --> Result[Boolean result per environment]
Reviews (1): Last reviewed commit: "Explain ArenaWorld pose dispatch" | Re-trigger Greptile |
🤖 Isaac Lab-Arena Review BotSummaryThis adds an environment-owned Findings🟡 Warning: isaaclab_arena/tasks/sorting_task.py:84 — 🔵 Improvement: isaaclab_arena/environments/isaaclab_arena_manager_based_env.py:75-83 — 🔵 Improvement: isaaclab_arena/tasks/predicates/spatial.py:192 — signature still says 🔵 Improvement: isaaclab_arena/tests/test_arena_world.py:60 — the explicit Test CoverageGood. One gap: nothing covers a scene-extra destination through the full CI
VerdictMinor fixes needed |
qianl-nv
left a comment
There was a problem hiding this comment.
Thanks for creating this minimal interface PR first! This should unblock adding deformable state on top.
I have a few nits mostly on naming. Will take a look again after update.
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
alexmillane
left a comment
There was a problem hiding this comment.
LGTM. A few smaller comments.
Use scene keys and local-frame bounds throughout the ArenaWorld API. Leave simulation lifecycle cleanup to Isaac Lab and document the returned tensor shapes. Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Motivation
Arena configuration objects describe the world before simulation, while predicates need a consistent way to query the live scene after it is spawned. An environment-owned, read-only
ArenaWorldseparates runtime access from configuration and avoids predicate-specific state and cache workarounds.Current scope
object_on_destination()onto this boundary, remove its stateful manager-term workaround, and have sorting combine one placement term per object. Sorting now requires destination-footprint containment, upward support, and low velocity for every object, so success-rate results are not directly comparable with older sorting runs.Broader direction
This is the first deliberately small slice of the broader ArenaWorld design.
RigidObjectSetgeometry variants and migrate further runtime consumers as their semantics are defined.Live state remains uncached; only immutable derived geometry and access helpers are cached. Predicate semantics and simulator writes remain outside ArenaWorld.
References: ArenaWorld design and deformable support design.