Skip to content

examples(cloudxr_mujoco_teleop): package under isaacteleop_examples - #1045

Merged
jiwenc-nv merged 1 commit into
jiwenc-nv/examples-lerobotfrom
jiwenc-nv/examples-cloudxr-mujoco-teleop
Sep 18, 2026
Merged

jiwenc-nv merged 1 commit into
jiwenc-nv/examples-lerobotfrom
jiwenc-nv/examples-cloudxr-mujoco-teleop

Conversation

@jiwenc-nv

@jiwenc-nv jiwenc-nv commented Aug 28, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Part of #985. Stacked on #1044.

No flat sibling imports — the two scripts are independent — but the tree ran as uv run <script>.py from its own directory, so it needed the same conversion as the rest for one install command to work across every example.

uv pip install -e ./examples/cloudxr_mujoco_teleop
python -m isaacteleop_examples.cloudxr_mujoco_teleop.visualize_poses_mujoco_example

vive_assets/ moves inside the package: both scripts resolve ASSETS_DIR from __file__, so the meshes have to travel with the modules or the move would silently break them. The wheel now carries them (6 asset files), matching how mujoco_xr ships its own assets.

The REUSE.toml override for examples/cloudxr_mujoco_teleop/** still covers the nested paths, so the HTC copyright is unaffected.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Testing

x86_64 / Ubuntu, Python 3.12. Wheel ships 3 modules and all 6 vive_assets files under isaacteleop_examples/cloudxr_mujoco_teleop/, with no namespace __init__.py. pre-commit clean.

Not covered: both need a headset and a CloudXR runtime. The asset move is the part worth eyeing — if the meshes fail to load, ASSETS_DIR is the reason.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the linter and formatter with SKIP=check-copyright-year pre-commit run --all-files
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix/feature works (or explained why not)
  • I have signed off all my commits (git commit -s) per the DCO

No tests: this is a move with no import changes.

Summary by CodeRabbit

  • Documentation

    • Updated setup and launch instructions for the CloudXR MuJoCo teleoperation example.
    • Revised example naming and directory layout documentation.
  • Chores

    • Added package build configuration for distributing the example.
    • Added licensing information to the example module.

@coderabbitai

coderabbitai Bot commented Aug 28, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 30df5469-cae0-4ec5-b5c3-c2f6ff4f5c14

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: a7f5a066-013f-4869-bfd7-c78a74592da4

📥 Commits

Reviewing files that changed from the base of the PR and between 82ce903 and fc71e0e.

⛔ Files ignored due to path filters (6)
  • examples/cloudxr_mujoco_teleop/python/isaacteleop_examples/cloudxr_mujoco_teleop/vive_assets/generic_hmd.obj is excluded by !**/*.obj
  • examples/cloudxr_mujoco_teleop/python/isaacteleop_examples/cloudxr_mujoco_teleop/vive_assets/generic_hmd_color.png is excluded by !**/*.png
  • examples/cloudxr_mujoco_teleop/python/isaacteleop_examples/cloudxr_mujoco_teleop/vive_assets/vive_focus3_controller_left.obj is excluded by !**/*.obj
  • examples/cloudxr_mujoco_teleop/python/isaacteleop_examples/cloudxr_mujoco_teleop/vive_assets/vive_focus3_controller_left_color.png is excluded by !**/*.png
  • examples/cloudxr_mujoco_teleop/python/isaacteleop_examples/cloudxr_mujoco_teleop/vive_assets/vive_focus3_controller_right.obj is excluded by !**/*.obj
  • examples/cloudxr_mujoco_teleop/python/isaacteleop_examples/cloudxr_mujoco_teleop/vive_assets/vive_focus3_controller_right_color.png is excluded by !**/*.png
📒 Files selected for processing (5)
  • examples/cloudxr_mujoco_teleop/README.md
  • examples/cloudxr_mujoco_teleop/pyproject.toml
  • examples/cloudxr_mujoco_teleop/python/isaacteleop_examples/cloudxr_mujoco_teleop/__init__.py
  • examples/cloudxr_mujoco_teleop/python/isaacteleop_examples/cloudxr_mujoco_teleop/visualize_hands_mujoco_example.py
  • examples/cloudxr_mujoco_teleop/python/isaacteleop_examples/cloudxr_mujoco_teleop/visualize_poses_mujoco_example.py

Included review availability: Your plan provides up to 12 included reviews per hour; 5 remain after this review.


📝 Walkthrough

Walkthrough

The CloudXR MuJoCo teleop example now uses an installable Hatchling package. The package name, wheel contents, and Python source root are defined in pyproject.toml. The README now instructs users to install the package in editable mode and launch the poses and hands examples as modules. The documented directory layout reflects the new package structure. The package initializer now includes SPDX and Apache-2.0 license headers.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to fc71e

The example can be installed and launched through the documented package commands without an established merge-blocking defect.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: packaging the cloudxr_mujoco_teleop example under isaacteleop_examples.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from b52698c to d049e6e Compare August 28, 2026 05:01
@jiwenc-nv
jiwenc-nv changed the base branch from jiwenc-nv/examples-deviceio-live-view to jiwenc-nv/examples-haptic-feedback August 28, 2026 05:02
@jiwenc-nv
jiwenc-nv requested a review from ivany-nv August 28, 2026 05:11
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from d049e6e to f3dc39f Compare August 28, 2026 05:23
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from f3dc39f to bb79a92 Compare August 28, 2026 05:32
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from bb79a92 to a8bf13c Compare August 28, 2026 05:44
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from a8bf13c to 54d93c4 Compare August 28, 2026 05:49

@ivany-nv ivany-nv 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.

Read the diff line by line: every Python file is a 100% rename, so the only new content is the pyproject.toml (only-include + sources, no __init__.py on the namespace) and the README path updates.

Not installed by install_python_example(), so there is no install tree to check.

@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from 54d93c4 to 41605e3 Compare August 28, 2026 14:46
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from 41605e3 to b6e62e0 Compare August 28, 2026 16:11
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from b6e62e0 to 5c0a140 Compare August 28, 2026 23:49
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from 5c0a140 to 89eed97 Compare August 29, 2026 00:21
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from 89eed97 to 2744b66 Compare August 29, 2026 01:19
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from 2744b66 to 02eb44a Compare August 30, 2026 16:23
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from 02eb44a to b7e0b88 Compare August 31, 2026 15:09
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from b7e0b88 to eb81849 Compare September 2, 2026 16:13
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from eb81849 to a5e7711 Compare September 3, 2026 15:54
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from a5e7711 to e9a6e8b Compare September 3, 2026 22:13
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from e9a6e8b to fc71e0e Compare September 18, 2026 15:40
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from fc71e0e to 5c5f170 Compare September 18, 2026 16:02
No flat sibling imports -- the two scripts are independent -- but the tree ran
as `uv run <script>.py` from its own directory, so it needed the same
conversion as the rest for one install command to work everywhere. Move it to
the layout in examples/README.md.

vive_assets/ moves inside the package: both scripts resolve ASSETS_DIR from
__file__, so the meshes have to travel with the modules, and the wheel now
carries them. The REUSE override for examples/cloudxr_mujoco_teleop/** still
covers the nested paths, so the HTC copyright is unaffected.

Part of #985.

Signed-off-by: Jiwen Cai <jiwenc@nvidia.com>
@jiwenc-nv
jiwenc-nv force-pushed the jiwenc-nv/examples-cloudxr-mujoco-teleop branch from 5c5f170 to a98afe7 Compare September 18, 2026 16:18
Base automatically changed from jiwenc-nv/examples-haptic-feedback to jiwenc-nv/examples-lerobot September 18, 2026 16:19
@jiwenc-nv
jiwenc-nv merged commit a98afe7 into main Sep 18, 2026
9 of 21 checks passed
@jiwenc-nv
jiwenc-nv deleted the jiwenc-nv/examples-cloudxr-mujoco-teleop branch September 18, 2026 16:19
github-actions Bot added a commit that referenced this pull request Sep 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants