Add open-top object containment predicate - #979
Conversation
Greptile SummaryAdds open-top containment semantics to pick-and-place and sorting success predicates.
Confidence Score: 5/5The PR appears safe to merge, with no concrete correctness or security failures identified in the changed paths. The new predicate consistently combines per-environment bounds, destination-local centroid containment, filtered upward support, and velocity checks, while task configurations provide the required asset identities and tests cover the principal geometry and force cases. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
A[Assign per-environment asset variants] --> B[Read matching cached bounds]
B --> C[Transform pickup centroid into destination-local frame]
C --> D{Inside X/Y and above bottom?}
E[Destination-filtered contact forces] --> F{Upward force within support cone?}
G[Pickup linear velocity] --> H{Below threshold?}
D --> I[Containment success]
F --> I
H --> I
Reviews (1): Last reviewed commit: "Add open-top object containment predicat..." | Re-trigger Greptile |
d8917bd to
993b4bd
Compare
|
|
||
|
|
||
| @dataclass(frozen=True, slots=True, repr=False) | ||
| class ArenaAssetHandle: |
There was a problem hiding this comment.
🔵 ArenaAssetHandle smuggles a live asset through config copies
This wrapper exists only to hold a live PlaceableAsset in a termination term's params and defeat deepcopy so the asset's cached bounds/variants survive config copying. Predicates elsewhere reference scene entities by name (SceneEntityCfg) and resolve them from env.scene at eval time, keeping params as plain data.
Is there a way to resolve the Arena asset (and its bounds) by name from the env/scene at eval time instead, so the term params stay plain data? If holding the object by identity is genuinely required, a short NOTE explaining why it must survive deepcopy would help the next reader.
🤖 Isaac Lab-Arena Review BotSummaryThis PR replaces the old contact+velocity Note this changes the success criteria for all pick-and-place and sorting tasks (that is the point of the PR, and the sorting test was updated accordingly) — worth a heads-up for downstream eval baselines. Findings🟡 🔵 🔵 Test CoverageGood. The new test uses the inner/outer VerdictMinor fixes needed — the design questions are worth a look, but nothing here blocks. |
Require pick-and-place success to combine centroid containment, upward destination support, and low linear speed. Preserve Arena asset identity so cached bounds and object-set variants remain aligned through manager configuration copies. 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>
3341614 to
bad0457
Compare
Summary
Prevent false-positive object placements
Detailed description