Skip to content

[Backport] Fix ray caster path matching regressions (#7516) - #7577

Merged
kellyguo11 merged 1 commit into
isaac-sim:release/3.0.0from
StafaH:codex/backport-pr-7516-release-3.0.0
Sep 4, 2026
Merged

[Backport] Fix ray caster path matching regressions (#7516)#7577
kellyguo11 merged 1 commit into
isaac-sim:release/3.0.0from
StafaH:codex/backport-pr-7516-release-3.0.0

Conversation

@StafaH

@StafaH StafaH commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Description

Backports #7516 to release/3.0.0.

The automatic backport workflow completed successfully but skipped the backport because the source PR body did not retain the hidden <!-- backport-active-release --> selection marker. This branch manually cherry-picks the canonical merged commit 167b6b15538bc6ec23554ec1b69f45ac34ae35bd with -x provenance.

The cherry-pick applied without conflicts or release-specific edits. Its stable patch ID is identical to the source commit, and all seven source paths are preserved exactly.

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Release backport

  • This PR already targets the active release branch.

Validation

  • Stable source/backport patch IDs match: b30f8378be6d764298eb95b92d8f5e03ffb97b51.
  • uv run python -m pytest source/isaaclab_newton/test/sensors/test_newton_raycast_sensor.py -vv — 18 passed.
  • uv run python -m pytest source/isaaclab/test/app/test_standalone_scripts.py::test_commands_respect_script_launcher_capabilities -vv — 1 passed.
  • ISAACLAB_CHANGELOG_BASE_REF=release/3.0.0 uv run isaaclab -f — all hooks passed.
  • git diff --check upstream/release/3.0.0..HEAD — passed.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks
  • I have made corresponding changes to the tutorial and smoke configuration
  • My changes generate no new warnings
  • I have added tests that prove the fix is effective
  • I have added changelog fragments for the touched source packages
  • My name already exists in CONTRIBUTORS.md

# Description

This PR fixes the two remaining ray-caster path-matching failures:

1. The ray-caster camera tutorial counted four sensors for two camera
prims because `/World/Origin_.*/CameraSensor` allowed `.*` to cross path
separators under whole-path regular-expression matching.
2. Legacy Newton multi-mesh ray casters could fail to associate
tracked-target sites when registration used a regular-expression path
but initialization resolved it to concrete prim paths.

The stale post-reset Newton sensor result reported in isaac-sim#7236 is now fixed
at the sensor state boundary by isaac-sim#7523, which this branch inherits from
`develop`. The earlier environment-loop synchronization workaround and
its tests/changelog fragments have therefore been removed from this PR.

## Changes

- Restrict the tutorial environment wildcard to one path segment with
`/World/Origin_[^/]+/CameraSensor`.
- Associate legacy Newton tracked-target site labels by configuration
order instead of path-expression strings.
- Remove the obsolete `--enable_cameras` argument from the tutorial
smoke case.
- Add regression coverage for regular-expression target resolution.

Fixes isaac-sim#6572

Related: isaac-sim#7236, resolved by isaac-sim#7523.

## Type of change

- Bug fix (non-breaking change which fixes an issue)

## Release backport

- [x] Backport this pull request to the active release branch after it
merges into `develop`

## Screenshots

Not applicable.

## Validation

- `uv run python -m pytest
source/isaaclab_newton/test/sensors/test_newton_raycast_sensor.py -vv`
(18 passed, including the isaac-sim#7523 FK regressions in eager and CUDA-graph
modes)
- `uv run python -m pytest
source/isaaclab/test/app/test_standalone_scripts.py::test_commands_respect_script_launcher_capabilities
-vv` (1 passed)
- Verified the ad-hoc tracked-target regression fails with the old
string-key association and passes with this fix in eager and CUDA-graph
modes.
- Verified the exact clone-plan topology from isaac-sim#6572 passes on the merged
branch in eager and CUDA-graph modes.
- `ISAACLAB_CHANGELOG_BASE_REF=upstream-develop uv run isaaclab -f`

The full standalone Newton multi-object demo smoke could not launch in
this checkout because the newly merged installer guard rejects combining
the downloaded Isaac Sim package with the active Python virtual
environment; it exited before application startup.

## Checklist

- [x] I have read and understood the contribution guidelines
- [x] I have run the pre-commit checks
- [x] I have made corresponding changes to the tutorial and smoke
configuration
- [x] My changes generate no new warnings
- [x] I have added tests that prove the remaining fix is effective
- [x] I have added changelog fragments for the touched source packages
- [x] My name already exists in `CONTRIBUTORS.md`

(cherry picked from commit 167b6b1)
@StafaH
StafaH requested a review from a team September 4, 2026 17:00
@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Sep 4, 2026
@greptile-apps

greptile-apps Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The backport fixes legacy Newton ray-caster target association by preserving registration order instead of looking up sites through potentially different path expressions.

  • Resets positional target association whenever Warp meshes are initialized.
  • Narrows the tutorial camera expression to a single path segment.
  • Removes unnecessary camera-rendering startup flags from the Warp-only tutorial smoke cases.
  • Adds regression coverage and package changelog fragments.

Confidence Score: 5/5

The PR appears safe to merge with no concrete regressions identified.

The new positional bookkeeping follows the same filtered target order as mesh-view initialization and is reset on every reinitialization, while the tutorial and smoke changes remain consistent with the Warp-only ray-caster path.

Important Files Changed

Filename Overview
source/isaaclab_newton/isaaclab_newton/sensors/ray_caster/legacy_ray_caster.py Replaces expression-keyed site lookup with lifecycle-safe positional association matching the base initializer’s target order.
source/isaaclab_newton/test/sensors/test_newton_raycast_sensor.py Adds regression coverage for tracked ad-hoc regex targets whose discovery and registration expressions differ.
scripts/tutorials/04_sensors/run_ray_caster_camera.py Uses a segment-bounded prim expression so camera matching cannot span nested path components.
source/isaaclab/test/app/standalone_script_cases.py Stops enabling RTX camera services for a ray-caster camera implemented through Warp.
source/isaaclab/test/app/test_standalone_scripts.py Updates launcher-capability coverage to enforce omission of the unnecessary camera flag.

Reviews (1): Last reviewed commit: "[Sensor] Fix ray caster path matching re..." | Re-trigger Greptile

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isaac Lab Review Bot

Reviewed the backport’s ray-caster path-matching correction, including the tutorial regex, legacy Newton tracked-target association, smoke-test launcher arguments, regression coverage, and package changelog fragments. No actionable finding is directly supported by the patch.

  • Design and architecture: The fix remains scoped to the legacy Newton adapter: tracked site labels are associated by target configuration order, and the cursor is reset before base mesh-view initialization. This avoids changing shared ray-caster architecture while addressing the mismatch between discovered owner paths and registration expressions.
  • API: No public API is removed or renamed. The changed tracking state is private, MultiMeshRayCasterCfg behavior remains compatible, and the user-visible Newton fix is represented by an isaaclab_newton changelog fragment while the ancillary isaaclab changes use a .skip fragment.
  • Implementation: The initialization and consumption paths were traced: labels are collected in tracked-target order, the cursor is reset before mesh views are recreated, and mesh updates retain the same target ordering. The tutorial’s segment-bounded regex matches its generated camera prims, and the smoke override consistently stops passing the unnecessary --enable_cameras flag. Positional association is more order-dependent than the former dictionary lookup, but the shown creation path preserves that ordering and the regression test exercises the reported expression mismatch.

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.

@StafaH

StafaH commented Sep 4, 2026

Copy link
Copy Markdown
Contributor Author

run-ci

@isaaclab-bot isaaclab-bot Bot added ci:run-docker Trigger the on-demand Docker and GPU CI workflow and removed ci:run-docker Trigger the on-demand Docker and GPU CI workflow labels Sep 4, 2026
@kellyguo11
kellyguo11 merged commit c318019 into isaac-sim:release/3.0.0 Sep 4, 2026
82 of 83 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants