Skip to content

[Backport release/3.0.0] Wrench frame selection and schema migrations (#7536, #7971) - #7993

Merged
ooctipus merged 2 commits into
isaac-sim:release/3.0.0from
ooctipus:backport/wrench-composer-7536-release-3.0
Sep 24, 2026
Merged

ooctipus merged 2 commits into
isaac-sim:release/3.0.0from
ooctipus:backport/wrench-composer-7536-release-3.0

Conversation

@ooctipus

@ooctipus ooctipus commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Backports two merged changes to release/3.0.0:

  • Move external wrench frame selection into WrenchComposer #7536 — Move external wrench frame selection into WrenchComposer (726f045a7dd2052311bf64099b096391468f0292). Avoid unnecessary pose reads and composition for local wrenches and supported world-frame wrenches at the center of mass; preserve current-pose composition for mixed or positioned global forces. Includes the PhysX, Newton, and OvPhysX writers and regression tests.
  • Migrate remaining legacy schema cfg call sites to fragments #7971 — Migrate remaining legacy schema configuration call sites to fragments (1370bb6f7ce1ab57b8939dd9e9b8bfde6f425000). Updates tutorials, demos, conversion tools, benchmarks, task configurations, and test fixtures while retaining the original migration's exclusions.

Both backports apply unchanged, with no conflicts. All source changelog fragments are included.

Validation

)

Backport the merged change unchanged to release/3.0.0.

(cherry picked from commit 726f045)
@ooctipus
ooctipus requested a review from a team September 24, 2026 02:45
@ooctipus ooctipus added the ci:run-docker Trigger the on-demand Docker and GPU CI workflow label Sep 24, 2026
@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Sep 24, 2026
@greptile-apps

greptile-apps Bot commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

The PR appears safe to merge; the frame-selection optimization preserves the existing physical wrench semantics across PhysX, Newton, and OVPhysX.

Summary

This backport moves external-wrench frame selection into WrenchComposer and lets each backend avoid unnecessary body-pose composition while preserving its native wrench contract.

  • Adds local-frame and world-at-center-of-mass fast paths with conservative state tracking across partial resets and composer merges.
  • Updates PhysX writers to forward the selected frame directly.
  • Updates OVPhysX packing kernels to skip redundant rotation for world-frame inputs.
  • Keeps Newton on body-frame inputs while avoiding pose reads for already-local wrenches.
  • Expands cross-backend regression coverage for frame selection, body ordering, resets, and rotated poses.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Buffered external-wrench contributions] --> B[WrenchComposer]
    B --> C{Eligible representation}
    C -->|All local| D[Body-frame wrench]
    C -->|All world at CoM and supported| E[World-frame wrench]
    C -->|Mixed or positioned world force| F[Compose using current body pose]
    F --> D
    D --> G[Newton body-to-world packing]
    D --> H[PhysX submission]
    D --> I[OVPhysX world packing]
    E --> H
    E --> I
Loading

Reviews (1) · Last reviewed commit: "Move external wrench frame selection int..."

@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 central frame-selection change, including WrenchComposer eligibility tracking and the PhysX, Newton, and OvPhysX producer/consumer paths. No candidate finding identified a concrete defect requiring maintainer action.

  • Design and architecture: The frame decision is centralized in WrenchComposer through boolean contribution state. Backend writers consume the selected frame rather than independently classifying wrench contents; partial resets conservatively retain eligibility flags, which can forgo an optimization but preserves composition correctness.
  • API: The additive get_forces_and_torques() API returns force, torque, and is_global while supports_world_at_com remains keyword-only and defaults to the prior body-frame behavior. Existing body-frame output properties remain available, private kernel signature changes are reflected in the shown consumers, and changelog fragments cover the touched source packages.
  • Implementation: The world-at-CoM path, local-frame path, mixed/positioned fallback, body-order remapping, and backend packing paths were traced. PhysX forwards the selected frame, OvPhysX conditionally rotates before packing, and Newton continues consuming body-frame values. Conservative state after partial or full-coverage indexed resets may cause extra pose reads until a full reset, but the documented behavior does not change wrench results.

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.

…m#7971)

Backport the merged change unchanged to release/3.0.0.

(cherry picked from commit 1370bb6)
@ooctipus
ooctipus requested a review from r-schmitt as a code owner September 24, 2026 03:02
@ooctipus ooctipus changed the title [Backport release/3.0.0] Move external wrench frame selection into WrenchComposer (#7536) [Backport release/3.0.0] Wrench frame selection and schema migrations (#7536, #7971) Sep 24, 2026
@ooctipus ooctipus 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 24, 2026
@ooctipus
ooctipus merged commit ca6dbd0 into isaac-sim:release/3.0.0 Sep 24, 2026
53 checks passed
ooctipus added a commit that referenced this pull request Sep 24, 2026
…7996)

## Description

Backports #7967 (`37cfd637f6521dd36865f25918c303f120980acd`) to
`release/3.0.0`, following the merged backport batch #7993.

Corrects the rotation and torque lever-arm sign in FORGE's wrench
transform. Removes the duplicate PhysX joint-frame conversion because
the native wrench already uses the child-side joint frame and anchor.
Includes the shared physical regression fixture, backend tests,
documentation, and changelog fragments.

The source change applies without conflicts. All added and removed lines
match #7967; existing release-specific context in the Newton tests,
sensor documentation, and development guidelines is preserved.

## Validation

- Newton joint-wrench sensor suite and FORGE tests: **12 passed**.
- PhysX joint-wrench sensor suite: **16 passed**, including the shared
analytic frame check, recorded/eager updates, and resets.
- File-by-file backport audit, `uv run --no-sync isaaclab -f`, and `git
diff --check` passed.
- Full Docker/GPU CI requested for this backport.

Co-authored-by: Lynn <lynnhe02@gmail.com>
@ooctipus ooctipus self-assigned this Sep 25, 2026
@ooctipus ooctipus added this to the Isaac Lab 3.0 GA milestone Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:run-docker Trigger the on-demand Docker and GPU CI workflow isaac-lab Related to Isaac Lab team

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants