Updates docs for using nurec background in locomanipulation sdg#5301
Conversation
Greptile SummaryThis PR adds documentation for using a NuRec (Neural Volume Rendering) 3D Gaussian model USD asset as a background in the locomanipulation SDG pipeline, covering download, requirements, dataset generation with background, and video export steps. Confidence Score: 4/5Documentation-only PR; safe to merge after clarifying the dataset filename discrepancy and the unexplained downloaded file. All findings are P2, but the dataset filename mismatch (annotated vs. generated) in the background command could cause a user following the documented flow to fail immediately, so it warrants author attention before merge. docs/source/overview/imitation-learning/humanoids_imitation.rst — the "Add a background USD asset" section around lines 724–771. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Generate manipulation dataset
generated_dataset_g1_locomanip.hdf5] --> B[Download NuRec USD asset
stage.usdz + occupancy_map.yaml]
B --> C[Run generate_data.py
with --background_usd_path
+ --background_occupancy_yaml_file]
C --> D[HDF5 dataset with
camera observations]
D --> E[Convert to MP4
hdf5_to_mp4.py]
style B fill:#ffe0b2
style C fill:#e1f5fe
|
|
|
||
| hf download nvidia/PhysicalAI-Robotics-NuRec \ | ||
| hand_hold-voyager-babyboom/stage.usdz \ | ||
| hand_hold-voyager-babyboom/occupancy_map.png \ | ||
| hand_hold-voyager-babyboom/occupancy_map.yaml \ | ||
| --repo-type dataset \ | ||
| --local-dir <PATH_TO_USD_ASSET> |
There was a problem hiding this comment.
occupancy_map.png downloaded but never used
The hf download command fetches occupancy_map.png alongside stage.usdz and occupancy_map.yaml, but occupancy_map.png is never referenced in any subsequent command or requirement bullet. Its purpose (e.g. a visual reference for the user, or input to a separate tool) is unexplained. Consider either removing it from the download command or adding a brief note describing when it is used.
07ae91b to
3b229f7
Compare
3b229f7 to
2e17234
Compare
There was a problem hiding this comment.
🤖 Isaac Lab Review Bot
Summary
This PR updates NuRec/3D Gaussian documentation for locomanipulation SDG and adds a PhysX manager change to call attach_stage() for CPU pipelines after warmup. The documentation changes are solid—typo fixes and improved clarity. However, the code change introduces a critical regression test failure that must be addressed.
Architecture Impact
The PhysxManager change affects CPU pipeline initialization. The added attach_stage() call for CPU will cause the existing regression test test_warmup_attach_stage_not_called_for_cpu to fail. This test explicitly asserts that attach_stage.call_count == 0 for CPU pipelines.
Implementation Verdict
Significant concerns — The code change will break an existing regression test. The test must either be updated (if the new behavior is correct) or the change must be reverted. Without this resolution, CI will fail.
Test Coverage
🔴 Critical: The existing regression test test_warmup_attach_stage_not_called_for_cpu (lines 1256-1300 in source/isaaclab_physx/test/assets/test_rigid_object.py) explicitly asserts that attach_stage() is never called for CPU pipelines. This PR adds an attach_stage() call for CPU (at line 681), which will cause this test to fail.
If calling attach_stage() AFTER MBP init is indeed safe and necessary for resolving kinematic bodies, the test should be updated to:
- Allow
attach_stage()to be called once (change assertion tocall_count == 1) - Verify the call happens AFTER
force_load_physics_from_usd()(the dangerous case is calling it BEFORE) - Update the test docstring to reflect the new understanding
CI Status
Only labeler check has run ✅. Full test suite has not run yet—this test failure will surface when it does.
Findings
🔴 Critical: source/isaaclab_physx/isaaclab_physx/physics/physx_manager.py:681 — Will break existing regression test
The new attach_stage() call for CPU will cause test_warmup_attach_stage_not_called_for_cpu to fail. The test was added in PR #4675 specifically to guard against this. Either:
- The test needs to be updated if post-warmup
attach_stage()is safe - The change needs to be reverted if it could cause MBP corruption
- A new test should verify the ordering (attach_stage AFTER force_load, not BEFORE)
🟡 Warning: source/isaaclab_physx/isaaclab_physx/physics/physx_manager.py:678-680 — Missing context in comment
The comment says this is needed "so the tensor plugin can resolve kinematic bodies" but does not explain what was broken before or link to an issue. Add context about the specific bug/behavior this fixes (e.g., "Fixes #XXXX" or a brief description of the symptom).
🔵 Improvement: docs/source/overview/imitation-learning/humanoids_imitation.rst — Documentation quality is good
The rewritten NuRec section is clearer and more actionable than the original. The typo fixes are all correct (determimnistically → deterministically, IssacLab → IsaacLab, flexibtility → flexibility, make → mark).
| # Calling attach_stage() + force_load_physics_from_usd() together causes a | ||
| # For CPU, calling attach_stage() before force_load_physics_from_usd() causes a | ||
| # double-initialization that corrupts the CPU broadphase (MBP) collision setup, | ||
| # causing objects to fall through surfaces non-deterministically. |
There was a problem hiding this comment.
🔴 Critical: This new attach_stage() call for CPU will cause the existing regression test test_warmup_attach_stage_not_called_for_cpu to fail.
The test at line 1296 in source/isaaclab_physx/test/assets/test_rigid_object.py explicitly asserts:
assert spy.attach_stage.call_count == 0, (...)If calling attach_stage() AFTER MBP initialization is safe (unlike calling it BEFORE), the test needs to be updated to reflect this new understanding.
Suggested action: Update the regression test to verify the correct ordering rather than forbidding the call entirely.
adefe32 to
afcfcfa
Compare
|
LGTM |
e7ded88 to
33a899f
Compare
There was a problem hiding this comment.
🤖 Isaac Lab Review Bot
Summary
Previous concerns have been addressed. The physx_manager.py code change has been removed from this PR — it is now a pure documentation update with typo fixes and improved NuRec/3DGS documentation.
Implementation Verdict
Ship it — This is now a clean documentation-only PR with no code changes.
Findings
The previous critical finding about the attach_stage() call breaking regression tests is no longer applicable — that code change has been removed from the PR.
All documentation changes are correct:
- Typo fixes (
deterministically,IsaacLab,flexibility,mark) - Added section anchors for cross-references
- Clearer 3D Gaussian Splatting documentation with step-by-step instructions
🔵 Minor: docs/source/overview/imitation-learning/humanoids_imitation.rst:856 — Missing newline at EOF
The file ends without a trailing newline, which may cause a minor diff noise in future commits. Non-blocking.
33a899f to
d822d81
Compare
d822d81 to
9e9ce19
Compare
FabricFrameView lacks _prim_path; reach through _usd_view.
There was a problem hiding this comment.
🤖 Isaac Lab Review Bot
Summary
This follow-up adds two bug fixes to the previously documentation-only PR: fixing warp tensor access patterns in generate_data.py and handling FabricFrameView composition in scene_utils.py.
Implementation Verdict
Ship it — The new code changes are correct bug fixes.
Findings
Previous documentation concerns were addressed (trailing newline is now present).
The two new code changes are valid fixes:
-
generate_data.py:331-332— Correctly accesses.torchproperty on warp tensors before passing totorch.as_tensor(). This matches the pattern used elsewhere in the same file (e.g., lines 335-336 forroot_pos_w.torchon robot). -
scene_utils.py:108-110— Correctly handlesFabricFrameViewwhich wrapsUsdFrameView. The_prim_pathattribute lives on the inner USD view, so usinggetattr(xform_prim, "_usd_view", xform_prim)with fallback is the right approach.
Both fixes are well-commented and follow existing codebase patterns.
|
LGTM |
There was a problem hiding this comment.
🤖 Isaac Lab Review Bot
Summary
No new commits since the previous review. The PR remains in good shape with valid bug fixes for warp tensor access and FabricFrameView handling, plus documentation improvements for 3D Gaussian Splatting integration.
Implementation Verdict
Ship it — Previous review findings still apply; no new issues introduced.
Updates docs for using nurec background in locomanipulation sdg
Type of change
Checklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there