Fix Factory collision prim resolution - #7093
Conversation
Resolve collision analyzer bodies through the clone plan instead of rewriting environment wildcard spellings. This keeps Factory compatible with segment-safe prim-path expressions.
There was a problem hiding this comment.
Isaac Lab Review Bot
The change replaces Factory collision analyzer wildcard string rewrites with the cloning subsystem’s prim resolver and adds the required task-package changelog fragment. The changed path-resolution flow is consistent with segment-safe environment expressions.
- Design and architecture: Clone-path resolution is now owned by
resolve_matching_prims_from_sourcerather than duplicated through assumptions about.*,env_0, orenv_.*. This is a focused correction that preserves the surrounding collision-analysis design. - API: No public signature or consumer interface changes are introduced.
CollisionAnalyzerstill passes a string prim-path pattern tosample_object_point_cloud, now using the resolver-provided destination expression. The changelog fragment is correctly scoped toisaaclab_tasks. - Implementation: The per-body predicate resolves one rigid-body match and forwards its destination pattern directly to point-cloud sampling. Existing point-cloud filtering and body-index bookkeeping remain unchanged. A missing or ambiguous body now surfaces through the resolver’s match validation, which is a reasonable diagnostic tradeoff.
No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.
Automated review; human maintainers own approval decisions.
Greptile SummaryReplaces Factory collision prim-path string rewriting with the clone-plan-aware resolver, allowing segment-safe environment expressions to initialize correctly.
Confidence Score: 5/5The PR appears safe to merge with no actionable regressions identified. The resolver returns the canonical segment-safe destination expression accepted by clone-path matching and point-cloud source discovery, while removing the brittle wildcard spelling assumptions that caused Factory startup to fail. Important Files Changed
Reviews (1): Last reviewed commit: "Fix Factory collision prim resolution" | Re-trigger Greptile |
Description
Fixes
IsaacContrib-Factory-Frankastartup after segment-safe prim-path expressions were introduced in #6841.The Factory collision analyzer assumed cloned environment expressions contained
.*. It rewrote that spelling to0to find a source prim, then rebuilt anenv_.*expression. The current{ENV_REGEX_NS}expansion is/World/envs/env_[^/]+, so the rewrite no longer produced a concrete USD path and startup failed with:This change resolves each collision body through
resolve_matching_prims_from_source, the clone-plan-owned resolver. Its returned destination path expression is passed directly to point-cloud sampling, removing both wildcard-spelling rewrites and keeping ownership of clone-path resolution in the cloning subsystem.No new dependencies or test files are introduced.
Type of change
Screenshots
Not applicable; this is an environment-startup fix.
Validation
developwith the existing consolidated Factory smoke case.IsaacContrib-Factory-Frankasmoke case: 1 passed in 39.33s, including two environments and 20 random-action steps.uv run isaaclab -fequivalent repository hook suite: passed.git diff --check upstream/develop...HEAD: passed.Checklist
isaaclab -fsource/isaaclab_tasks/changelog.d/CONTRIBUTORS.md