Skip to content

feat: add LightWheel embodiment#381

Closed
ElmoPA wants to merge 1 commit into
elmo/contributionfrom
elmo/lightwheel-emb
Closed

feat: add LightWheel embodiment#381
ElmoPA wants to merge 1 commit into
elmo/contributionfrom
elmo/lightwheel-emb

Conversation

@ElmoPA

@ElmoPA ElmoPA commented May 1, 2026

Copy link
Copy Markdown
Contributor

Adds LIGHTWHEEL_INTRINSICS (fx=fy=786.6216072, cx=960.0, cy=728.0) and a
LightWheel class that delegates transforms and keymap to Aria.

ElmoPA commented May 1, 2026

Copy link
Copy Markdown
Contributor Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@ElmoPA ElmoPA changed the base branch from elmo/refactor-viz to graphite-base/381 May 1, 2026 20:08
@ElmoPA ElmoPA force-pushed the elmo/lightwheel-emb branch from e578dfe to 1a4aa9c Compare May 1, 2026 20:08
@ElmoPA ElmoPA changed the base branch from graphite-base/381 to elmo/contribution May 1, 2026 20:08
@ElmoPA ElmoPA mentioned this pull request May 1, 2026
@ElmoPA ElmoPA force-pushed the elmo/contribution branch from ee39b9d to 15ab057 Compare May 1, 2026 20:55
@ElmoPA ElmoPA force-pushed the elmo/lightwheel-emb branch from 1a4aa9c to 15ce85d Compare May 1, 2026 20:55
@ElmoPA ElmoPA marked this pull request as ready for review May 1, 2026 21:16
Adds LIGHTWHEEL_INTRINSICS (fx=fy=786.6216072, cx=960.0, cy=728.0) and a
LightWheel class that delegates transforms and keymap to Aria.
@ElmoPA ElmoPA force-pushed the elmo/lightwheel-emb branch from 5265946 to fb7e066 Compare June 12, 2026 20:59
@ElmoPA ElmoPA force-pushed the elmo/contribution branch from 052983e to 85fb33e Compare June 12, 2026 20:59
@github-actions

Copy link
Copy Markdown

Claude Code Review

Summary

Adds a LightWheel embodiment class that delegates get_transform_list and _get_keymap to Aria, plus a new LIGHTWHEEL_INTRINSICS matrix.

Key concerns

  1. Silent None return for unsupported modes. get_transform_list only handles "cartesian" and implicitly returns None for all four keypoints modes. Downstream code expects a list[Transform] and will crash with a confusing NoneType error. Either raise NotImplementedError explicitly or delegate all modes to Aria if they're supported.

  2. EXTRINSICS = None. Aria has a defined ARIA_T_RGB_CPF. If LightWheel reuses Aria's transforms (and presumably Aria's coordinate frame conventions), it likely needs an extrinsic too — otherwise any pose re-expression to head/CPF frame will be wrong or fail. Please confirm whether LightWheel data is already in CPF frame, and if not, define the appropriate extrinsic.

  3. Intrinsics dtype unspecified. Unlike MECKA_INTRINSICS above it, this array omits dtype=np.float64. Minor, but inconsistent and could trip downstream type assertions.

  4. ACTION_STRIDE = 3 unjustified. Aria's stride should be checked — if LightWheel mirrors Aria semantics, the stride should match Aria's, not be hardcoded independently. Please verify against an actual LightWheel dataset's frame rate.

  5. No registration / enum check. Is lightwheel (or lightwheel_bimanual?) registered in the embodiment enum / dispatch used by rldb loaders and configs? Without that, this class is unreachable.

  6. No tests / no example data path. A new embodiment normally needs at least a smoke test loading a small zarr and running the transform list end-to-end.

Suggestions

  • Replace the silent fall-through with:
    if mode == "cartesian":
        return Aria.get_transform_list(mode="cartesian")
    raise NotImplementedError(f"LightWheel does not support mode={mode}")
    …or, if Aria's keypoint modes are valid for LightWheel, just return Aria.get_transform_list(mode=mode) for all modes.
  • Add dtype=np.float64 to LIGHTWHEEL_INTRINSICS.
  • Document (in a comment) the camera/source for the intrinsics (sensor model, resolution 1920x1456?).
  • Confirm extrinsics: if LightWheel images are already rectified into a CPF-equivalent frame, note that explicitly; otherwise add the correct T_RGB_CPF.
  • Register LightWheel wherever Aria/Mecka/Scale are dispatched.
  • Add at minimum a small unit test instantiating LightWheel.get_transform_list("cartesian") and confirming the keymap matches Aria's.

Verdict

Request Changes — the silent None return is a latent crash, and the missing extrinsics + enum registration need to be resolved before this is usable in training.


Reviewed by Claude · Review workflow

@ElmoPA ElmoPA deleted the branch elmo/contribution June 16, 2026 21:18
@ElmoPA ElmoPA closed this Jun 16, 2026
@ElmoPA ElmoPA deleted the elmo/lightwheel-emb branch June 16, 2026 21:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants