Prepare UWLab 2.0 for Isaac Lab 3.0 EA / Sim 6.1 - #36
Conversation
|
343d538 to
6d4047e
Compare
Hard switch: `main` becomes Isaac Lab 3.0 only. Isaac Lab 2.3.2 / rsl-rl 3.1.2
setups are no longer supported by this tree, and the cloud assets keep a separate
2.x line (see "Assets" below), so existing 2.x users are unaffected until they
update. The Newton (MuJoCo-Warp) backend is a separate, later PR.
## Pins
| | |
|---|---|
| Isaac Lab | `ffff603e` (3.0.0-beta2.patch1), pinned in `uwlab.sh` |
| Isaac Sim | 6.0.1.0 (Python 3.12 wheels only) |
| torch | 2.11.0+cu128 (isaacsim-core 6.0.1 requires 2.11.0; the default PyPI wheel is CUDA 13 and silently disables the GPU on 12.x drivers) |
| rsl-rl-lib | `JTran-UW/rsl_rl@f2c944d` (`port_rsl_rl_5` = `feature/locomotion`, the 5.2 API plus `GSDEGaussianDistribution`, plus a gSDE sampling fix; re-pin to `UW-Lab/rsl_rl` after that PR merges) |
| wandb | `<0.20` while rsl_rl still passes the removed `Settings(start_method=...)` |
`uwlab.sh` installs the twelve Isaac Lab 3.0 packages plus `isaaclab_rl[all]` (3.0
split the core; a 4-package install fails on `ModuleNotFoundError: isaaclab_physx`
even when the backend is PhysX) and fails fast if the pinned Isaac Lab predates the
rsl-rl 5.0 API. Bump the Isaac Lab and rsl-rl pins together.
## Quaternions: (w, x, y, z) -> (x, y, z, w)
The single largest source of silent breakage. 3.0 adopted Warp/PhysX/Newton's
element order, so a 2.x literal is a different rotation, not an error: `(1, 0, 0, 0)`
now reads as 180 degrees about X.
- Config literals converted across the locomotion env cfgs, the omnireset scene and
variant cfgs, `assembly_keypoints.Offset` and the UR5e/Robotiq asset.
- `RelCartesianOSCAction` builds its delta quaternion scalar-last before `quat_mul`.
- The RGB data-collection and camera-alignment cfgs: table/support init states, the three
calibrated camera extrinsics and the camera-randomization `base_rotation`s. The sim2real
docs now say to reorder values pasted from diffusion_policy's extrinsics script.
- Recorded data carries the convention: the dataset handler stamps
`quat_convention: xyzw`, and the reset/grasp/partial-assembly loaders plus
`read_metadata_from_usd_directory` refuse anything unstamped rather than applying
a rotated pose.
- `WARN_ON_TORCH_QUATF_ACCESS=1` is the runtime finder for anything missed.
Not yet audited: roughly fifteen quaternion literals in `factory_extension` and the
`xarm_leap` / `leap` / `tycho` / `xarm_uf_gripper` assets. Those tasks will spawn
rotated until someone goes through them.
## Assets (HuggingFace `UW-Lab/uwlab-assets`)
`metadata.yaml` offsets and the recorded datasets are convention-bearing, so the 3.0
versions live on a branch instead of overwriting `main`:
- `main` - unchanged 2.x assets and `Datasets/OmniReset`.
- `isaaclab3` (`8892962`) - the twenty `metadata.yaml` files with every `quat`
reordered and stamped, plus `Datasets/OmniReset_isaaclab3` (the reset, grasp and
partial-assembly datasets, converted and stamped).
`uwlab_assets.UWLAB_CLOUD_ASSETS_REVISION` pins that commit rather than tracking a
branch, so asset changes are opt-in; the download cache is keyed by revision so a
bump never serves a file cached from another one. Policies, media and STL links stay
on `main` - they do not depend on the convention.
## Warp-backed simulation data
`asset.data.*` is a `ProxyArray` over a `warp.array`. Its deprecation bridge covers
most torch ops, but not tensor instance methods or `torch.jit.script`'d functions
such as `isaaclab.utils.math`, so those call sites use `.torch` (as Isaac Lab's own
mdp code does). Physics-view accessors (`root_view.get_masses`,
`get_material_properties`) return raw `wp.array` and go through a small `_as_torch`
helper. `root_view` replaces the deprecated `root_physx_view`.
## Physics configuration
`SimulationCfg.physx` is gone with no shim: the backend is chosen by assigning a
`PhysicsCfg` subclass, so the four omnireset cfgs now set
`sim.physics = PhysxCfg(...)`. Field names are unchanged and the tuned values
(192 position iterations, friction thresholds) are untouched.
## rsl-rl 5.x
- The agent cfg declares explicit `actor` / `critic` model cfgs instead of the legacy
`policy` cfg: gSDE is its own distribution class in 5.x, and the legacy path only
forwards `std_type` ("scalar"/"log").
- `GsdeDistributionCfg` / `RslRlGsdePpoAlgorithmCfg` in `uwlab_rl` expose the gSDE
constructor kwargs and `sde_sample_freq`. The omnireset agent sets
`sde_sample_freq=1`: 5.x gSDE holds the exploration matrix fixed for a whole
rollout, while the recipe this task was tuned with drew fresh noise every step and
insertion depends on that dither. Only sampling changes - mean, std, log-prob and
entropy are identical.
- `learn_features=True`: the rsl-rl 3.x recipe and the 3.0 control let the PPO gradient
flow from the state-dependent std into the backbone; rsl_rl 5.x's class detaches it by
default. With the detach, the adaptive-KL schedule floors the learning rate at
iteration 0 and the std runs away (entropy 8 -> 34 in 84 iterations at 4096 envs;
reproduced at 14336x4). With the flag, LR, entropy and reward track the control.
Requires the rsl_rl sampling fix in `port_rsl_rl_5` (`learn_features=True` raised
"Inference tensors cannot be saved for backward" as shipped).
- `RslRlFancyActorCriticCfg` must stay an alias, not a subclass: `isaaclab_rl`'s
`policy` -> `actor`/`critic` shim dispatches on an exact type check, so a subclass
leaves `actor` MISSING and surfaces much later as `KeyError: 'class_name'`.
- `play.py` exports ONNX through the runner. The JIT export goes through
`uwlab_rl.rsl_rl.exporter`, rewritten for the 5.x `MLPModel`: it snapshots the
normalizer, the MLP and the distribution's evaluated std (gSDE state-dependent, log or
scalar) into a CPU TorchScript module with `forward` (mean) and
`compute_distribution` (mean, std), which `scripts_v2/tools/collect_demos.py` samples
from. rsl_rl's own JIT export carries the mean only.
- `collect_demos.py --deterministic` is now `--deterministic_expert`: Isaac Lab 3.0's
`AppLauncher` owns `--deterministic` (RTX determinism) and rejects duplicate flags.
## Other API moves on the omnireset pipeline
- `write_joint_armature_to_sim` / `write_joint_friction_coefficient_to_sim` are deprecated
shims that forward only the static coefficient; the finetune/ADR events use the `_index`
methods, which keep the `joint_dynamic_friction_coeff` / `joint_viscous_friction_coeff`
kwargs the sysid parameters need (PhysX backend, Isaac Sim >= 5.0).
- `ArticulationData.body_incoming_joint_wrench_b` is gone: `binary_force_contact` reads a
`JointWrenchSensor` added to the RGB scene cfg (`find_bodies` maps the body name).
- Isaac Sim 6 material templates do not pre-author `diffuse_texture` / `diffuse_tint` /
`diffuse_color_constant`, and USD 25.11 refuses `Set()` on an untyped attribute; the
visual-appearance randomizer creates them up front like the other inputs.
## Isaac Sim 6.0.1 API moves
`isaacsim.core.utils.*` is no longer importable (enabling the extension no longer
joins `sys.path`): bounds helpers come from `isaacsim.core.experimental.utils.bounds`
(`compute_obb` takes the prim first, `bbox_cache` keyword-only), `enable_extension`
from `isaacsim.core.experimental.utils.app`, prim helpers from
`isaaclab.sim.utils.legacy`, seeding from `isaaclab.utils.seed.configure_seed`, and the
replicator `enable_extension` in the visual-appearance randomizer from the same `app` module.
## pytorch3d
Imported lazily and pinned per interpreter, because it ships only as a wheel built
against an exact python/torch/CUDA combination. Its one caller is the collision
analyzer used by the dataset-generation tasks, so the RL tasks stay usable without
it. cp312 takes the pt2.10.0 build (no pt2.11 build is published); its CUDA ops were
verified against torch 2.11.0.
## Verification
- `OmniReset-Ur5eRobotiq2f85-RelCartesianOSC-State-v0` and `UW-Velocity-Flat-Spot-v0`
build and step with finite rewards, with every asset, metadata file and dataset
fetched from the pinned asset revision.
- A 2.x-trained expert scores 90.5 / 95.0 / 80.3 / 97.7 percent across the four reset
types in the 3.0 env, matching its 2.x numbers - the end-to-end check that poses,
offsets and frames survived the conversion.
- 12 PPO iterations with `GSDEGaussianDistribution` (`learn_features=True`): LR recovers
to 8.6e-4, entropy 8.2 -> 9.5, reward -0.2 -> 5.2, all matching the control at the
same iterations; the shipped default diverges (see rsl-rl 5.x above).
- `play.py` loads a 3.0 checkpoint and exports; the JIT and ONNX artifacts load and
map obs(215) -> actions(7).
- The dataset-generation pipeline (partial assemblies, grasp sampling, all four reset-state
tasks), the Finetune task (ADR reset writes armature and static/dynamic/viscous friction)
and the RGB data-collection, RGB-Play and RGB-OOD-Play tasks with cameras all build and
step in a fresh install; `collect_demos.py` loads a 3.0-exported expert and rolls out.
- `pre-commit run` is clean on every changed file.
## Follow-ups
- Checkpoints trained under 2.x do not load in the rsl-rl 5.x runner
(`KeyError: 'actor_state_dict'`); the published `Policies/` experts and finetuned
policies are to be regenerated on 3.0.
- Not ported (outside the OmniReset pipeline, will fail on 3.0 as-is): `sim.physx.*` in
the locomotion (`advance_skills`, `risky_terrains`, `velocity`) and `track_goal` cfgs;
`isaacsim.core.utils` imports in `scripts/tutorials`, `scripts/tools` and
`scripts/environments/state_machine`; `root_physx_view` in the generic
`uwlab` IK action and `diagnosis` terms; `factory_extension` and the
`xarm_leap` / `leap` / `tycho` / `xarm_uf_gripper` assets keep 2.x quaternion literals.
- A fresh `./uwlab.sh -i` per the updated docs was exercised once (all packages resolved;
the VS Code setup step needs `OMNI_KIT_ACCEPT_EULA=YES` when there is no TTY).
- `RslRlFancyPpoAlgorithmCfg`'s `behavior_cloning_cfg` / `offline_algorithm_cfg` are consumed by
`scripts_v2/tools/collect_demos.py` (expert loader, observation group, expert path), not by
rsl-rl; `collect_demos.py` strips them before constructing the runner. Unchanged here.
- Published policies under `Policies/` were trained on 2.x and are unchanged.
## Review follow-up: the rest of the repository
The first revision ported OmniReset and the install stack; everything else registered in
`uwlab_tasks` or shipped under `scripts/` is now on 3.0 too, so the repository-wide pin
leaves nothing behind:
- **`sim.physics = PhysxCfg()`** replaces `self.sim.physx.*` in the locomotion envs
(velocity, advance_skills, risky_terrains), TrackGoal and the factory extension.
- **Warp-backed accessors**: the generic IK action and the NIST OSC action read
`data.body_link_jacobian_w.torch` / `data.mass_matrix.torch` instead of
`root_physx_view.get_jacobians()` / `get_generalized_mass_matrices()`; the diagnosis helpers
use `data.joint_effort_limits` / `data.joint_vel_limits` and `root_view` for the two
view-only quantities.
- **`isaacsim.core.utils` (deprecated in Isaac Sim 6.0.1, no longer imported by Isaac Lab)**
replaced by `isaaclab.sim.utils` (`create_prim`, `open_stage`, `get_current_stage`,
`find_matching_prim_paths`, `legacy.get_prim_at_path`/`define_prim`) and direct Kit calls
(viewport creation, carb settings, `enable_extension(..., enabled=False)`).
- **Scalar-last quaternions** in the remaining asset and task configs: leap, xarm_leap,
xarm_uf_gripper, tycho, franka IK offsets, factory assets and assembly keypoints,
TrackGoal table, cartpole camera offsets (33 literals).
- **`.torch` on every `.data` read** in the factory extension, TrackGoal and locomotion task modules (81 sites); `ProxyArray` forwards float tensors, but warp-`quatf` arrays and TorchScript-typed math helpers reject it.
- **Vendored Isaac Lab scripts** (`scripts/tutorials/*`, `scripts/environments/state_machine/*`)
replaced by their Isaac Lab 3.0 versions (UWLab header kept); the converters and
`check_instanceable.py` patched in place.
- **PhysX 64K material cap**: PhysX 110 instantiates every USD `PhysicsMaterialAPI` prim once per cloned env (PhysX 107 shared them). The UR5e USD authors two (inner-finger `PhysicsMaterial`, unbound `fingertip_material`), which with the two object materials capped a process at 16384 envs. `spawn_ur5e_without_physics_materials` (from Yanda's port) unbinds and deactivates them at spawn; the `robot_material` randomizer already overwrote the pad friction at startup on 2.x and 3.0 alike, so grasp physics is unchanged (combine mode verified). Measured per-process ceiling on the peg/peghole scene: 31744 envs build, 32766 overflows (2 object materials per env remain; the ADR buckets are per shape). The documented 16384/GPU has 2x headroom; 2 x 32768 hangs at scene creation.
- **Packaging**: extension versions bumped with changelog entries (uwlab 0.9.0, uwlab_assets
0.6.0, uwlab_rl 0.2.0, uwlab_tasks 0.14.0); pytorch3d moved to the `uwlab_tasks[collision]`
extra, which `uwlab.sh -i` installs on linux x86_64 (the collision analyzer is only used
by dataset generation, and `omnireset/mdp/utils.py` imports it lazily).
Verified headless on Isaac Sim 6.0.1: the replaced tutorial/state-machine scripts run, and
`UW-Velocity-Flat-Spot-v0`, `UW-Position-Pit-Spot-v0`, `UW-Track-Goal-Ur5-{JointPos,IkAbs}-v0`,
`UW-TrackGoal-XarmLeap-JointPos-v0`, `UW-PegInsert-Franka-JointPos-v0` and `Isaac-Cartpole-RGB-v0`
build, reset and step with finite rewards, as do `UW-NutThread-Franka-JointPos-v0`, `UW-Track-Goal-Tycho-IkAbs-v0`, `UW-Velocity-Rough-Spot-v0` and `UW-Position-Gap-Spot-v0`. Pre-existing, unrelated to the port: the `UW-TrackGoal-XarmLeap-*` tasks 404 at import (`dataset/misc/hammer_grasping_pca_components.npy` does not exist on any revision of the HF repo), and the Franka tutorials/state machines cannot download `Assets/Isaac/6.0/.../panda_instanceable.usd` from the Isaac 6.0 asset bucket. (`uwlab/uwlab/assets/articulation` is UWLab's own
view abstraction and is untouched.)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
6d4047e to
a4e6862
Compare
- Pin cloud assets to uwlab-assets isaaclab3 @ 5ea494f, which adds the Isaac Lab 3.0 state experts: the best checkpoint per (task, seed) for seeds 42/43/44 of all six tasks. - Docs: pretrained-checkpoint commands download those experts from the isaaclab3 branch, with seed 42/43/44 tabs for every task; note that rectangle-on-wall plateaus at about 62-65% end-of-episode success on all three seeds. - Pin rsl-rl-lib to bump_rsl_rl_5_3 (UW-Lab/rsl_rl#6, upstream v5.3.0), which carries HeteroscedasticGaussianDistribution; drop the gSDE configs that version does not provide. - JIT exporter: support heteroscedastic Gaussian actors (mean from forward, per-state std clamped as in training from compute_distribution). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019ogU9ju7PGwhFwKH11djAC
Success-rate-vs-updates and vs-wall-clock figures for all six tasks, seeds 42/43/44 on 4x L40S, from the runs the published 3.0 experts were selected from. Retries and continuations are stitched per seed; the first 30 iterations after a resume are dropped because the logged success window restarts empty, and unlogged stretches before a continuation are left as gaps. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019ogU9ju7PGwhFwKH11djAC
…oint sections Docs: remove the pre-finetuned (sys-id) expert and pretrained RGB policy sections, whose checkpoints are Isaac Lab 2.x only, and the references to them. Add pandas to the distillation install line: loading a diffusion_policy checkpoint imports its training workspace, whose json_logger imports pandas, and diffusion_policy does not declare it. Tools, each verified by re-running the documented command: - collect_fk_pairs.py: save ee_quat as (w, x, y, z) for diffusion_policy's test_fk_comparison.py (was 3.0 xyzw: 121-179 deg rotation error, still reported PASS). - sysid_ur5e_osc.py, plot_sysid_fit.py: convert the real-robot collector's (w, x, y, z) waypoint quats to xyzw on load (hold-pose recording: 53 deg RMSE before, 0 after). - eval_robustness.py: rsl-rl 5.x runner.alg.actor. - align_cameras.py: print the paste-ready rot in (x, y, z, w). - ZarrDatasetFileHandler.write_episode: accept the dataset_compression argument Isaac Lab 3.0's RecorderManager passes (RGB demo collection crashed at the first save). - .torch accessors and flake8 E226 in the touched sim2real scripts. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019ogU9ju7PGwhFwKH11djAC
Use a matched Isaac Sim 6.1, Isaac Lab EA and RSL-RL 5.4.1 stack. Keep the existing physics recipe and migrate renderer and registration APIs. Adopt EA observation order with converted experts and a CPU migration tool that preserves actor, critic, normalizer and Adam state. Refresh the requested training plots and retain the documented task regressions. Verified dependency consistency, CPU checkpoint/optimizer equivalence, strict loading, all 18 bounded policy checks, registration/layout tests, pre-commit and the warning-free documentation build.
Merge the current main branch while retaining the matched EA dependency pin and extension version. Preserve main's historical pinning release note and both parent histories. Keep the license heading unambiguous to the merge-conflict check without changing its rendered meaning.
Select the FactoryV2 USD without replacing the original asset. It authors outer-knuckle mass and inertia on the rigid bodies, prevents the camera safety volume from adding phantom mass, and includes passive-link armature and the calibrated fingertip TCP. Keep the immutable HF pin and unchanged arm calibration; document the dynamics change. Addresses UW-Lab#38 and UW-Lab#40. Authored MassAPI properties and remote asset hash verified; bounded live readback and checkpoint checks are recorded separately before publication approval.
Clear ProgressContext counters only for the selected environment IDs. Preserve full-reset semantics for None and make an empty selection a no-op. Regression tests cover partial, empty, full and repeated resets without replacing the counter tensor. Fixes UW-Lab#41. The exact source method failed the partial/empty CPU fixtures before the fix and passed all four fixtures afterward.
Resolve concrete USD roots instead of rewriting legacy wildcard strings. Keep natural environment-index order for batched geometry. Use scalar-last collider quaternions and hash complete transforms so geometry caches do not reuse different collider poses. The grasp startup failed before stepping on the EA namespace regex. CPU fixtures reproduced the invalid path and quaternion mismatch before the fix, then passed both legacy and EA paths plus transform-hash checks. No object mass, grasp force or success threshold was changed here.
Remove the ineffective 1 g object override from the default and all six variant configurations. Let authored or geometry-derived mass properties remain in effect instead of requesting a setting these assets ignore. Addresses UW-Lab#42. Paired 64-environment checks retained identical live masses and byte-identical saved grasp datasets for all six objects, with 17-33 valid grasps each and unchanged gravity, force and collision checks. The source-configuration regression failed before and passed after.
Use wrist motor armature from the pinned robot metadata while retaining Stage-1 shoulder and elbow dynamics, gains, action scales and policy rate. The corrected lightweight gripper exposed persistent wrist motion in the previous zero-armature model. Keep that startup inertia through the ADR ramp rather than clearing it at zero progress. Pin the semantically integrated RSL-RL 5.4.1 fork after resolving target conflicts. CPU regressions cover selected-joint metadata application and ADR endpoints; the full frozen checkpoint pass qualifies this candidate separately after the commit.
Restore the original UR5e USD and disable added wrist armature by default. Defer issues UW-Lab#38 and UW-Lab#40 after matched minimal-asset tests showed large performance regressions. Keep the EA upgrade, converted checkpoints, RSL integration and separate UW-Lab#41/UW-Lab#42 fixes unchanged. Retain experimental assets and results without making them release defaults. Add regression checks for both restored configuration choices and update the robot download link and release notes.
Follow the metadata-clean RSL integration while retaining its exact validated source tree. Update the extension patch version and document the dependency refresh without changing runtime behavior.
Check the common asset interfaces instead of factory classes so grasp and reset-state generation cannot silently skip velocity filtering. Use explicit tensor views for collection velocities and cover both success gates, moving assets, and consecutive-stability resets. All four CPU regression cases fail without the fix and pass with it. Document that affected datasets need regeneration.
Scope the upgraded UWLab stack to the separate RSL-RL 5.x actor and critic model API without restoring the legacy combined ActorCritic. Keep checkpoint-layout conversion and distribution-aware exports. Bump uwlab_rl to 0.2.4 and document the older-caller migration boundary.
Pin the official UW-Lab RSL 5.4.1 release and align release metadata, installation guidance, and CI defaults with Python 3.12 and Sim 6.1. Retain the prepared backend-aware type fix and stock Isaac Lab initialization, without restoring legacy RSL APIs. Guard local Isaac Lab checkout changes with CPU regressions. Isolate CI license installs and job-owned Docker resources instead of deleting shared host caches, images, or containers. Pin existing workflow action versions without changing workflow permissions or license policy.
|
@greptileai Please re-review current head I checked the concrete examples in discussion_r4023828060 against current source and the GitHub comparison with that reviewed commit:
These findings support updating the old review's concrete examples; they do not establish that every registered task, controller path, or standalone tool has been runtime-qualified. Please identify any remaining current-head migration problems rather than treating the old review as automatically resolved. I have not dismissed or resolved its thread. CI approval has now been granted by the maintainer. The docs build passed; other jobs are running/queued at the current snapshot. The link checker failed with 77 reported errors, including obsolete task-source URLs and external 403s. Those failures are not suppressed. The package-age metadata limitation documented in the PR also remains explicit. The modern merge and v2.0.0 tag remain on hold. |
Replace the stale copied Isaac Lab catalogue with its maintained browser and pinned source references, keeping the UW task catalogue. Correct moved ROS, Omniverse, and upstream issue links and stop advertising a Windows helper that is not shipped in this repository. Keep link-checker rules unchanged. The full local scan found only two transient GitHub 503s; both targets passed the focused recheck. The strict documentation build passes.
Move fifteen avoidable local imports in helpers and tests while keeping optional collision dependencies and extension-activation boundaries lazy. Update the tasks package release metadata without changing task configuration or function logic. The dependency-name sets and non-import ASTs are unchanged. Three renderer configuration checks and four backend stability cases pass on CPU. This does not claim blanket compliance for the remaining lazy and type-checking boundaries across the port.
|
@greptileai Please review the focused follow-ups at
The remaining import finding is not declared fully resolved. PyTorch3D remains lazy because the repository's heavy-dependency rule explicitly forbids loading it at module import time; Replicator/debug/viewport integrations also have extension-activation constraints. Existing cfg/type-checking and cycle-sensitive boundaries across the port still need per-call-site assessment. I have not changed the review configuration, replaced imports with a syntactic workaround, or dismissed the finding. Please distinguish these boundaries from avoidable imports rather than recommending a blanket hoist that breaks optional dependencies or startup order. Using the same Lychee 0.24.2 version locally, the full edited-tree scan had only two transient GitHub 503 errors; both exact targets passed a focused recheck. New-head CI remains authoritative and is not claimed green yet. Runner infrastructure remains separate: the repository runner API reports zero runners, and the organization runner API is inaccessible to this login (403). No runners, labels, permissions, or checks were changed to bypass that. Modern merge and v2.0.0 remain on hold; legacy v1.3.0 is already published. |
Use the already-converted EA experts from the pinned asset revision instead of shipping beta migration tooling in the upcoming release. Keep the environment observation-order regression and all published checkpoint metadata and historical provenance intact. Remove the quick-start conversion box and obsolete README guidance, bump uwlab_rl to 0.2.6, and note that distillation and sim-to-real are expected but not yet tested on Isaac Lab 3.0, with v1.3.0 as the legacy reference.
Use isaaclab3 as the canonical Hugging Face branch for the Sim 6.1 release. It fast-forwards to the already-verified EA snapshot, so the commit pin, checkpoint hashes, robot assets and runtime logic stay unchanged. Update publisher guidance and uwlab_assets release metadata to 0.6.4. Keep main as the legacy Isaac Lab 2.x asset line.
|
HF asset-branch consolidation is complete, with this PR updated to
No new GPU qualification or training was performed. This is not a UWLab merge or a |
Keep vendored examples aligned with the dependency this release installs. Mirror the complete tutorial tree from ae37b028ea415c91ea2bc32609efcd759ed2b974, including upstream headers, new deployment/visualizer examples, and removal of the obsolete rendering-mode tutorial. Verify exact subtree identity, Python syntax for all 25 files, repository pre-commit and the strict docs build. This does not claim new simulator qualification of the tutorial catalogue.
Refresh existing upstream utilities and their required companions from ae37b028ea415c91ea2bc32609efcd759ed2b974 while preserving UW task registration and the documented per-framework RL entrypoints. Replace obsolete lifting and checkpoint-management scripts with their maintained upstream versions. Keep UW and OmniReset environments visible in the kitless listing tool. Honor explicit RSL experiment/device options and preserve configured resume state when the flag is absent. Add focused CPU regression coverage without changing task physics, policy mode, checkpoint loading or custom exports.
|
@greptileai Please review the current head The PR description now includes the source-parity checks, focused CPU regressions, validation limits, and fresh local evaluation results: the documented one-environment leg example completed 20/20 successes; all 18 task/seed comparison cells completed, with 15 matching the frozen reference counts exactly and three higher observed rates. No cell declined; weak rectangle results remain explicitly reported. These are bounded local results, not blanket runtime qualification of the full script/backend catalogue. Current-head GitHub workflows still await maintainer approval; no checks or policies were bypassed. No merge or release tag has been made. |
Select RL-Games explicitly for camera tuning overrides and reject a conflicting backend instead of applying them to an RSL agent. Write the requested USD entry filename while retaining the importers' structured assets and relative references. Preserve layer metadata and reject aliases that could overwrite the generated source layer. Cover the CLI contracts and composed USD output with CPU regressions.
Keep corner computation on the input device and submit whole environment batches to the optional debug renderer instead of looping over environments and edges with repeated host copies. Preserve corner order, float32 output, and the existing overlap decision and reset behavior. Add CPU differential and transfer-boundary regression coverage and release uwlab_tasks 0.14.10 metadata for the change.
|
@greptileai Please re-review current head 32 targeted CPU cases passed, with the new failure cases reproduced before fixes; 2,048 additional corner comparisons match the installed Isaac Sim implementation within the stated float tolerance. The actual termination decision/reset/init/cache logic is unchanged. Pre-commit, critical-error Flake8 and strict docs passed. The PR description distinguishes intentional downstream compatibility adapters from exact upstream copies and keeps the earlier GPU results tied to their tested 0ba08e7 candidate. No merge/tag, issue closure, review-policy change or additional GPU campaign was performed. |
Consolidate the PR-only changelog history into one final-state entry per package while preserving released entries and current version numbers. Remove intermediate pin and withdrawn tooling notes, retain migration guidance, and align the documentation badge with Isaac Sim 6.1.0.
Use the first minor-release version for each extension instead of treating PR iterations as released patches. Keep package metadata and consolidated changelog headings aligned without changing runtime code, dependency pins, the root 2.0.0 version, or released history.
Summary
Prepare UWLab 2.0.0 for Isaac Lab 3.0 EA, Isaac Sim 6.1, Python 3.12, and official UW-Lab RSL-RL 5.4.1.
isaaclab3; preserveisaaclab2/v1.3.0for the legacy stack.Addressed issues
Validation
0ba08e7: documented leg/seed42 example achieved 20/20 successes. Across 18 task/seed comparisons, 15 matched reference counts exactly and three had higher observed success rates; none declined. Rectangle remains weak at 8.5–13.2%, unchanged.Remaining validation limits