Conversation
❌ 7 Tests Failed:
View the top 2 failed test(s) by shortest run time
View the full list of 5 ❄️ flaky test(s)
To view more test analytics, go to the Test Analytics Dashboard |
17256b0 to
933facf
Compare
933facf to
0307ebb
Compare
13940ff to
275e358
Compare
275e358 to
31dd683
Compare
2ca3643 to
c871ce7
Compare
d6d205f to
59f76bd
Compare
59f76bd to
d77103e
Compare
| [dependencies] | ||
| dimos-module = { path = "../../../../../../native/rust/dimos-module" } | ||
| lcm-msgs = { git = "https://github.com/dimensionalOS/dimos-lcm.git", branch = "rust-codegen" } | ||
| lcm-msgs = { git = "https://github.com/dimensionalOS/dimos-lcm.git", rev = "dd2159513ebfaa7ebc5fc32bf60209cd09aa1ca5" } |
There was a problem hiding this comment.
why is this necessary can you confirm? or maybe need to be a separate PR?
There was a problem hiding this comment.
is this CI change necessary? is that because we added turbo jpeg encoding support for rust recorder???
| topic -> codec), while ``streams`` may map friendly stream names to topics. See | ||
| ``dimos.robot.unitree.go2.dds.store.Go2McapStore`` for the Go2 DDS wiring. | ||
|
|
||
| For trusted native recordings, ``decode_native=True`` reconstructs supported |
There was a problem hiding this comment.
if we remove support for turbojpeg encoding can we avoid changing this file?
Contribution path
Problem
Solution
Introduce the final
CollectionProfileand recorder factory here, before robot presets depend on them.Generate typed input ports before autoconnect. Capture each distinct source once, even when several dataset features project from it.
Save
schema.jsonbesiderecording.mcaporrecording.dbin a new recording directory.Prepare MCAP/SQLite through the saved schema, with LeRobot conversion isolated from host dependencies and HDF5 available through the Python API.
Declare raw-source meaning with
source_kind, not a selectable sampling algorithm. Snapshots retain nearest alignment; partial joint-position updates reconstruct a causal target state before feature projection.Read each raw source once per episode, including command history before the episode. Share evaluation between
inspectandprepare.Validate shared-source consistency and reject malformed updates or missing initial joints. Do not borrow future commands or fabricate missing targets.
Define
EpisodeControlSpecand canonical episode messages. Stopping leaves an active episode incomplete; incomplete/discarded episodes are excluded from export.Add the ordinary
openyam-quest-collectionBlueprint, with measured state and accepted joint commands.Keep native build/schema pins, camera startup/shutdown fixes, and recorder integration tests in this owning layer.
Remove obsolete dynamic-profile DataPrep CLI paths. Keep the Python recorder used by Piper, xArm, and G1.
Pin Livox, RealSense, and dimSLAM to the shared native message revision and update the standalone lockfiles.
Retry pytest only when the initial test step failed, not after native setup/build failures.
API shape
Declarations below omit validation/default details:
source_kind="snapshot"applies to measured state and images, with existing nearest-frame tolerance.source_kind="joint_position_updates"applies to partial target updates: omitted joints retain their last target across ticks and episode boundaries.samplingalias or automatic schema migration. Existing recordings are not rewritten.status: In[EpisodeStatus].EpisodeControlSpecexposesget_status()andcommand("start" | "save" | "discard" | "toggle").RecordingSchema.read(directory).dataprep_config(directory, output), thenrun_lerobot_dataprep(config)orrun_dataprep(config).How to Test
With OpenYAM, Quest, and a wrist RGB camera configured:
dimos --can-port follower_l run openyam-quest-collection --recorder.recording recordings/session-001 --episodes.task "pick up the cube"Quest B starts/saves; Y discards. Repeat with a new directory and
--recorder.format sqlite.In the previous cleanup: 149 focused host tests, 36 isolated LeRobot tests, 4 native MCAP/SQLite round-trip tests, and 6 registry checks passed.
The native OpenYAM recording test also passes using synthetic messages; real collection remains a hardware release check.
Current review cleanup: 140 dataprep/collection tests passed at this layer, including source-kind serialization, shared-source single reads, causal reconstruction, and native MCAP/SQLite round trips with 1/2/4 cameras. Mypy passed for the three changed production files.
Keep raw-store round-trip interpretation tests in
dataprep/test_recording.py; raw capture itself remains unaligned.Generic camera-count and 14-D conversion tests use synthetic profiles rather than importing the later dual-arm preset.
CI repair: locked workspace Clippy and Rust tests passed; the Nix recorder build passed with the existing vendoring hash. All seven native MCAP/SQLite interoperability tests passed, and all three Cargo graphs resolve one shared message source.
AI assistance
Checklist