Skip to content

feat(imitation): record explicit portable collection profiles - #4396

Merged
TomCC7 merged 10 commits into
mainfrom
cc/feat/collection-profiles
Oct 31, 2026
Merged

TomCC7 merged 10 commits into
mainfrom
cc/feat/collection-profiles

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

Problem

  • Collection setup is coupled to robot control and camera creation.
  • Camera resolution overrides can produce recordings whose frames disagree with the saved profile and cannot be exported.

Solution

  • Rename the capture implementation to CollectionModule / CollectionModuleConfig and migrate callers. Keep profile-dependent construction behind collect(profile=...), without a standalone launcher entry.
  • CollectionProfile declares data; collect(profile=...) creates only the recorder. Robot Blueprints own producers and episodes.
  • Persist one shared RecordingSchema; conversion combines it with input and output settings. Keep typed inputs inside the recorder.
  • Constrain the shipped xArm/Piper RealSense capture dimensions to their 848×480 profile. Reject conflicting final CLI/file settings before module deployment. Other camera options and general camera Blueprints remain configurable.
  • Keep tests for collection behavior and the Python profile-to-real-dataset E2E; remove redundant configuration and generic framework checks.

Validation

  • Collection rename: 119 PR-local tests and 6 recording/conversion tests passed; scoped mypy and cached pre-commit passed. Integrated learning regression: 212 passed. A broader unrelated blueprint sweep has 7 Go2 failures because the local LCM package lacks DynamicJointState.
  • Camera-shape fix: 23 focused tests passed, including both shipped Blueprints rejecting conflicting width/height, registry generation, and configuration checks.
  • Scoped mypy and changed-file pre-commit passed. No physical camera operation or CI polling.

@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: 6eeb6ba Previous: 7529659 Ratio
first frame wall 10.375 s 11.519 s 0.90
first frame cpu 22.699 s 23.908 s 0.95
run cpu 31.977 s 33.323 s 0.96
run cpu (user) 23.843 s 25.718 s 0.93
run cpu (system) 8.134 s 7.604 s 1.07
peak memory 2715.688 MB 2705.062 MB 1.00
peak threads 402 threads 406 threads 0.99
disk read 23.309 MB 35.621 MB 0.65
disk write 11.324 MB 11.242 MB 1.01
network (transport) 2714.407 MB 2728.796 MB 0.99
network (external rx) 0.063 MB 0.059 MB 1.07
network (external tx) 0.157 MB 0.147 MB 1.07

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

@codecov

codecov Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.55511% with 41 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
dimos/imitation/test_datacollection_e2e.py 25.53% 35 Missing ⚠️
dimos/imitation/collection/profile.py 90.24% 2 Missing and 2 partials ⚠️
dimos/imitation/collection/recorder.py 98.09% 1 Missing and 1 partial ⚠️
@@            Coverage Diff             @@
##             main    #4396      +/-   ##
==========================================
- Coverage   83.26%   83.02%   -0.25%     
==========================================
  Files        1743     1748       +5     
  Lines      168069   168743     +674     
  Branches    13898    13934      +36     
==========================================
+ Hits       139949   140104     +155     
- Misses      24449    24974     +525     
+ Partials     3671     3665       -6     
Components Coverage Δ
Tests 96.49% <93.95%> (-0.70%) ⬇️
Flag Coverage Δ
OS-macos-latest 77.39% <84.72%> (+0.05%) ⬆️
OS-ubuntu-24.04-arm 77.19% <87.64%> (+0.06%) ⬆️
OS-ubuntu-latest 77.57% <87.64%> (+0.05%) ⬆️
Py-3.10 77.56% <87.64%> (+0.05%) ⬆️
Py-3.11 77.54% <87.64%> (+0.06%) ⬆️
Py-3.12 77.56% <87.64%> (+0.07%) ⬆️
SelfHosted-Linux 40.12% <47.14%> (-0.18%) ⬇️
SelfHosted-macOS 39.84% <47.14%> (-1.03%) ⬇️

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

Files with missing lines Coverage Δ
dimos/codebase_checks/test_blueprint_kwargs.py 88.63% <100.00%> (+4.96%) ⬆️
...imos/experimental/memory/test_rust_recorder_e2e.py 95.57% <100.00%> (+4.93%) ⬆️
dimos/imitation/collection/blueprint.py 97.43% <100.00%> (+9.20%) ⬆️
dimos/imitation/collection/test_blueprint.py 100.00% <100.00%> (ø)
dimos/imitation/collection/test_composition.py 100.00% <100.00%> (ø)
dimos/imitation/collection/test_profile.py 100.00% <100.00%> (ø)
dimos/imitation/collection/test_recorder.py 100.00% <100.00%> (ø)
dimos/imitation/collection/test_recording.py 100.00% <100.00%> (ø)
dimos/imitation/dataprep/schema.py 100.00% <ø> (+4.16%) ⬆️
dimos/imitation/dataprep/test_recording.py 100.00% <100.00%> (ø)
... and 5 more

... and 41 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.

@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: 2cde5e4 Previous: 7529659 Ratio
network (external rx) 0.103 MB 0.059 MB 1.75

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

@TomCC7
TomCC7 added this pull request to stack #4397 October 2, 2026 02:59
@TomCC7
TomCC7 removed this pull request from stack #4397 October 6, 2026 09:22
@TomCC7
TomCC7 added this pull request to stack #4448 October 6, 2026 09:22

@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 (arm64)

Details
Benchmark suite Current: 41bf99b Previous: c339308 Ratio
peak memory 1740.633 MB 1759.73 MB 0.99
peak threads 378 threads 370 threads 1.02
network (transport) 2729.318 MB 2736.274 MB 1.00
disk write 1.449 MB 1.688 MB 0.86
instructions 137.307 G 138.156 G 0.99

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

Base automatically changed from cc/feat/isolated-lerobot-export to main October 29, 2026 06:55
@mustafab0
mustafab0 force-pushed the cc/feat/collection-profiles branch from 04c93ee to a3c7472 Compare October 29, 2026 06:55
Comment thread dimos/imitation/collection/recording.py Resolved
@TomCC7

TomCC7 commented Oct 29, 2026

Copy link
Copy Markdown
Member Author

@greptile

@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Oct 30, 2026
Comment thread dimos/imitation/collection/recorder.py Resolved
@github-actions github-actions Bot removed the ready-to-merge Required CI checks have passed on this PR label Oct 30, 2026
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Oct 31, 2026
@TomCC7
TomCC7 force-pushed the cc/feat/collection-profiles branch from c3291ca to 41bf99b Compare October 31, 2026 00:53
@github-actions github-actions Bot added ready-to-merge Required CI checks have passed on this PR and removed ready-to-merge Required CI checks have passed on this PR labels Oct 31, 2026
@TomCC7
TomCC7 enabled stacked auto-merge (squash) October 31, 2026 01:44
@TomCC7
TomCC7 merged commit c55cdce into main Oct 31, 2026
41 of 42 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge Required CI checks have passed on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants