Skip to content

Add articulation ordering controls#6248

Draft
AntoineRichard wants to merge 9 commits into
isaac-sim:developfrom
AntoineRichard:antoiner/articulation-ordering
Draft

Add articulation ordering controls#6248
AntoineRichard wants to merge 9 commits into
isaac-sim:developfrom
AntoineRichard:antoiner/articulation-ordering

Conversation

@AntoineRichard

Copy link
Copy Markdown
Collaborator

Description

Adds major cross-backend articulation ordering support so public joint/body order can be kept independent from the active backend's native storage order.

This introduces optional ArticulationCfg.joint_ordering and ArticulationCfg.body_ordering controls, shared name-map utilities, and Warp reorder kernels. Newton, PhysX, and OVPhysX articulation data paths are wired to translate between public and backend order for reads and writes. Built-in symbolic conventions currently include physx and mjwarp, with automatic cross-backend name resolution.

Fixes # N/A

Type of change

  • New feature (non-breaking change which adds functionality)
  • Major change (cross-backend articulation API and data-path update; changelog fragments use .major.rst)

Screenshots

N/A. Validation included local playback videos for Anymal-D and Franka policies under alternate ordering settings.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have added a changelog fragment under source/<pkg>/changelog.d/ for every touched package (do not edit CHANGELOG.rst or bump extension.toml — CI handles that)
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

Test Plan

  • ./isaaclab.sh -p -m pytest source/isaaclab/test/assets/test_articulation_ordering.py source/isaaclab_newton/test/assets/test_articulation.py::test_mjwarp_ordering_resolver_matches_newton_backend_names -q -> 26 passed
  • ./isaaclab.sh -d -> documentation build succeeded; reported 6 warnings from docs/superpowers/plans/2026-06-23-articulation-ordering.md
  • ./isaaclab.sh -f -> all hooks passed
  • Trained Newton/MJWarp Anymal-D flat policy with 4096 envs for 300 iterations; replayed in Newton/PhysX ordering variants
  • Trained Newton/MJWarp Franka reach joint-position policy with 4096 envs for 300 iterations; replayed with default and PhysX articulation ordering

@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Jun 23, 2026
Add optional joint and body ordering conventions for articulation public APIs, with shared mapping utilities and Warp reorder kernels.

Wire the mapping through Newton, PhysX, and OVPhysX data read/write paths so policies can be trained and played across backend-specific orderings.

Add major-tier changelog fragments and regression coverage for explicit orderings, symbolic PhysX/MJWarp resolution, and reorder kernels.
Cache identity and ordering maps for hot write paths, collapse fused state and target writes into single launches, and keep joint property buffers synchronized between user and backend orderings.

Add focused CPU coverage for the ordering kernels and Newton joint-limit property writes.
Move ordering helpers to module-scope imports in BaseArticulation and let resolve_articulation_ordering_names resolve symbolic conventions directly from the articulation instance.
Move backend convention discovery helpers out of ordering.py into ordering_resolvers.py so ordering.py stays focused on the public ordering data model and map construction.
@AntoineRichard AntoineRichard force-pushed the antoiner/articulation-ordering branch from 180fff9 to 5acf303 Compare June 25, 2026 15:10
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.

1 participant