Skip to content

feat(imitation): add controlled OpenYAM policy rollout - #3855

Open
TomCC7 wants to merge 11 commits into
feat/openyam-native-collectionfrom
feat/openyam-lerobot-rollout
Open

TomCC7 wants to merge 11 commits into
feat/openyam-native-collectionfrom
feat/openyam-lerobot-rollout

Conversation

@TomCC7

@TomCC7 TomCC7 commented Sep 1, 2026

Copy link
Copy Markdown
Member

Contribution path

Problem

  • OpenYAM needs a runnable policy graph with optional Quest takeover.
  • Robot composition should use the generic policy/control contract from its parent instead of introducing another learning-profile abstraction.

Solution

  • Add openyam-lerobot-rollout for Quest-free execution and openyam-lerobot-quest-rollout for optional takeover.
  • Compose the LeRobot module, wrist RGB camera, and a named low-priority trajectory task with canonical OpenYAM joints.
  • Reuse the existing Quest tasks for the takeover graph.
  • Keep robot-specific joint ordering and camera defaults in this Blueprint; remove the obsolete OpenYamLearningProfile dependency.
  • Own the dual-arm regression assertions that require hardware-aware trajectory acceptance/rejection; the underlying canonical hardware-limit setup lives in fix(openyam): align learning stack with canonical model #3853.
  • Inherit chunk execution, preflight, cancellation, button edges, and limits from refactor(imitation): isolate LeRobot policy runtime #3315. This PR only adds robot wiring, tests, registry entries, and usage docs.

API shape

openyam-lerobot-rollout
  policy + wrist camera + ControlCoordinator

openyam-lerobot-quest-rollout
  policy + wrist camera + Quest teleop + TeleopControlCoordinator
  • Configure either graph through normal dimos run module options.
  • Python clients find RolloutControlSpec and explicitly call preflight/start/stop.
  • The attached rollout panel is added later in feat(imitation): add CLI learning workflow #3931. Stopping a client is not a policy-stop request.

How to Test

With a compatible checkpoint and configured arm/camera:

dimos --can-port follower_l run openyam-lerobot-rollout --policy.policy-path CHECKPOINT_DIR --policy.task "pick up the cube" --wristcamera.hardware.camera-index 0
  • Start through RolloutControlSpec only after verifying preflight readiness and clearing the workspace.
  • Use openyam-lerobot-quest-rollout to test Quest takeover.
  • In the previous cleanup, 18 focused rollout/OpenYAM tests and scoped mypy passed; the generated registry is current.
  • Current review cleanup: the dual-arm trajectory acceptance/rejection tests pass in the final 224-test focused suite. This layer adds no new rollout behavior during the cleanup.
  • Bounded-motion rollout, takeover, and shutdown require a hardware retest. ABC and dual-arm rollout are out of scope.

AI assistance

  • Review cleanup updated by OpenAI Codex (agent).
  • OpenAI Codex (GPT-5) assisted extensively with implementation, tests, documentation, and stack cleanup.

Checklist

  • I have read and approved the CLA.

@codecov

codecov Bot commented Sep 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

@@                       Coverage Diff                       @@
##           feat/openyam-native-collection    #3855   +/-   ##
===============================================================
  Coverage                           79.65%   79.65%           
===============================================================
  Files                                1517     1519    +2     
  Lines                              143193   143269   +76     
  Branches                            12236    12237    +1     
===============================================================
+ Hits                               114054   114128   +74     
- Misses                              25786    25787    +1     
- Partials                             3353     3354    +1     
Components Coverage Δ
Tests 95.35% <100.00%> (+<0.01%) ⬆️
Flag Coverage Δ
OS-ubuntu-24.04-arm 75.46% <100.00%> (+0.01%) ⬆️
OS-ubuntu-latest 76.23% <100.00%> (+0.01%) ⬆️
Py-3.10 76.01% <100.00%> (+<0.01%) ⬆️
Py-3.11 76.21% <100.00%> (+<0.01%) ⬆️
Py-3.12 76.22% <100.00%> (+0.01%) ⬆️
SelfHosted-Large 30.70% <58.75%> (+0.01%) ⬆️
SelfHosted-macOS 37.12% <58.75%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dimos/robot/all_blueprints.py 100.00% <ø> (ø)
...anipulators/openyam/blueprints/learning_rollout.py 100.00% <100.00%> (ø)
...os/robot/manipulators/openyam/blueprints/teleop.py 100.00% <100.00%> (ø)
...lators/openyam/blueprints/test_learning_rollout.py 100.00% <100.00%> (ø)

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from a19c88a to 8a4b255 Compare September 1, 2026 04:46
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch 2 times, most recently from 00b98d8 to 611eabe Compare September 1, 2026 17:00
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from 611eabe to ecc4e45 Compare September 1, 2026 17:16
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from ecc4e45 to 80d489a Compare September 1, 2026 17:17
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from 80d489a to cb38d4d Compare September 1, 2026 17:56
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch 2 times, most recently from 4c265e6 to 65e9b0e Compare September 1, 2026 23:51
Comment thread dimos/control/tasks/gripper_task/gripper_task.py Outdated
Comment thread dimos/codebase_checks/source_files.py
Comment thread dimos/control/tasks/teleop_ik_task/teleop_ik_task.py
Comment thread dimos/control/tasks/trajectory_task/_registry.py Outdated
Comment thread dimos/imitation/policy/rollout_supervisor.py Outdated
Comment thread dimos/teleop/quest/action_bindings.py Outdated
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from 65e9b0e to 19803df Compare September 2, 2026 19:06
Comment thread dimos/control/tasks/gripper_task/test_gripper_task.py
@TomCC7
TomCC7 marked this pull request as ready for review September 3, 2026 20:48
@TomCC7
TomCC7 removed this pull request from stack #3922 September 15, 2026 04:24
@TomCC7
TomCC7 added this pull request to stack #4160 September 15, 2026 04:24
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from 94e7882 to 278972f Compare September 15, 2026 05:17
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from 278972f to 741aa57 Compare September 15, 2026 05:52
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from 741aa57 to de05114 Compare September 17, 2026 23:36
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch 2 times, most recently from bdf24ef to 753cc40 Compare September 18, 2026 00:39
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from 753cc40 to 1b3d6d0 Compare September 18, 2026 01:50
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