Skip to content

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

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

TomCC7 wants to merge 13 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                           76.76%   79.94%   +3.17%     
==================================================================
  Files                                1648     1580      -68     
  Lines                              159551   149594    -9957     
  Branches                            14197    13166    -1031     
==================================================================
- Hits                               122486   119599    -2887     
+ Misses                              33539    26463    -7076     
- Partials                             3526     3532       +6     
Components Coverage Δ
Tests 95.13% <100.00%> (+3.36%) ⬆️
Flag Coverage Δ
OS-macos-latest 75.50% <100.00%> (+0.01%) ⬆️
OS-ubuntu-24.04-arm 75.42% <100.00%> (+0.01%) ⬆️
OS-ubuntu-latest 76.07% <100.00%> (+0.01%) ⬆️
Py-3.10 76.07% <100.00%> (+0.01%) ⬆️
Py-3.11 75.47% <100.00%> (-0.58%) ⬇️
Py-3.12 76.07% <100.00%> (+0.01%) ⬆️
SelfHosted-Large 32.18% <58.75%> (+1.50%) ⬆️
SelfHosted-Linux 36.84% <58.75%> (+0.12%) ⬆️
SelfHosted-macOS 37.20% <58.75%> (+0.20%) ⬆️

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 187 files 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-native-collection branch from 17256b0 to 933facf Compare September 1, 2026 04:46
@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-native-collection branch from 933facf to 0307ebb Compare September 1, 2026 05:15
@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-native-collection branch from 0307ebb to 13940ff 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-native-collection branch from 13940ff to 275e358 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-native-collection branch from 275e358 to 31dd683 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-native-collection branch from 2ca3643 to c871ce7 Compare September 1, 2026 18:54
@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/codebase_checks/source_files.py Resolved
Comment thread dimos/teleop/quest/action_bindings.py Resolved
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from 65e9b0e to 19803df Compare September 2, 2026 19:06
@TomCC7
TomCC7 marked this pull request as ready for review September 3, 2026 20:48
@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-native-collection branch from d1ada40 to ea79a0d Compare September 17, 2026 23:36
@TomCC7
TomCC7 force-pushed the feat/openyam-native-collection branch from ea79a0d to d6d205f Compare September 18, 2026 00:35
@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-native-collection branch 2 times, most recently from 59f76bd to d77103e Compare September 18, 2026 01:50
@TomCC7
TomCC7 force-pushed the feat/openyam-lerobot-rollout branch from 753cc40 to 1b3d6d0 Compare September 18, 2026 01:50

@github-actions github-actions Bot 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.

go2 replay realtime

Details
Benchmark suite Current: 9872000 Previous: 58acbee Ratio
first frame wall 6.62 s 9.623 s 0.69
first frame cpu 13.616 s 21.264 s 0.64
run cpu 19.224 s 33.16 s 0.58
run cpu (user) 14.157 s 24.525 s 0.58
run cpu (system) 5.067 s 8.635 s 0.59
peak memory 2662.824 MB 2701.34 MB 0.99
peak threads 405 threads 408 threads 0.99
disk read 29.77 MB 19.965 MB 1.49
disk write 11.055 MB 11.285 MB 0.98
network (transport) 2732.816 MB 2725.519 MB 1.00
network (external rx) 0.114 MB 0.069 MB 1.65
network (external tx) 0.156 MB 0.346 MB 0.45

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions Bot 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.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'go2 replay realtime'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.08.

Benchmark suite Current: 9872000 Previous: 58acbee Ratio
disk read 29.77 MB 19.965 MB 1.49
network (external rx) 0.114 MB 0.069 MB 1.65

This comment was automatically generated by workflow using github-action-benchmark.

@TomCC7

TomCC7 commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

Replaced by #4344 on a compliant branch at the identical head commit 9872000f7cbb394f531ce1bd1db89b23a9c8217d. The seven layer diffs and downstream PR IDs were verified unchanged in native stack #4345: #4343 → #4344 → #3921 → #3931 → #3942 → #4088 → #4156.

Closing this PR only for the user-approved branch naming migration. This branch and all review comments remain available; unresolved findings and existing main/CI blockers are not marked resolved. No behavior changes were included in this migration.

This branch was successfully deployed

No deployments
cachix — 9872000f Deployed Oct 1, 2026 by TomCC7 via cachix-build-macos #11167
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