Commit Graph

22 Commits

Author SHA1 Message Date
crosstyan 2f74a9561d feat(zed): export depth at neural optimal resolution
Restrict ZED depth export to neural modes and default offline MCAP conversion to the SDK-selected optimal depth size instead of camera resolution.

Add a configurable --depth-size option, propagate the actual returned depth dimensions into DepthMap metadata, and emit a dedicated depth calibration topic when depth resolution differs from video.

Update the batch and recording helper scripts to use the new neural-only depth mode surface and pass through depth sizing.

Verification:
- cmake --build build --target zed_svo_to_mcap mcap_multi_record_tester mcap_pose_record_tester -j4
- build/bin/mcap_multi_record_tester
- build/bin/mcap_pose_record_tester
- build/bin/zed_svo_to_mcap --input /workspaces/data/kindergarten/jump/experiment/2/2026-03-18T11-27-15/2026-03-18T11-27-15_zed4.svo2 --output /tmp/zed4_neural_optimal_test.mcap --codec h264 --encoder-device software --mcap-compression zstd --depth-mode neural --depth-size optimal --start-frame 0 --end-frame 9
2026-03-24 16:01:46 +08:00
crosstyan 7808b89a03 feat: support bundled frame-window offsets in zed_svo_to_mcap
Implement bundled multi-camera --start-frame semantics as synced-group\nindices from the common synced start, inclusive with --end-frame.\n\nUpdate zed_svo_to_mcap to skip synced groups before writing, keep\nsingle-camera raw SVO frame semantics unchanged, and adjust exact\nprogress totals for selected bundled windows.\n\nReplace the expensive bundled exact pre-count path with approximate\ntime-window progress when --end-frame is not set, and update the\nshared TTY progress bar helper to support fraction-based rendering.\n\nExpose --start-frame in the batch MCAP wrapper and document the\nbundled frame-window semantics and approximate progress behavior in\nthe README.
2026-03-24 16:01:46 +08:00
crosstyan 1369f5235d feat: add shared TTY progress bars for ZED offline tools
Extract the tqdm-like stderr progress bar into a shared helper and reuse it across zed_svo_to_mp4, zed_svo_grid_to_mp4, and zed_svo_to_mcap.

For zed_svo_to_mcap, single-source exports now report exact frame totals and bundled multi-camera exports report exact synced-group totals on TTY. When bundled mode runs without --end-frame, the tool performs a counting pass first so the progress total remains exact instead of estimated.

Also document the bundled MCAP progress behavior in the README and record the current third_party dependency state in third_party/README. That note now makes it explicit that CLI11 and proxy are the active submodules, while tomlplusplus and mcap are vendored source drops, and adds a TODO to revisit converting mcap into a submodule later.

Verified with the Debug build during implementation, including single-camera and bundled zed_svo_to_mcap runs that rendered clean progress output to a TTY.
2026-03-24 16:01:46 +08:00
crosstyan 8d9bd1b815 feat: bundle synced multi-camera ZED SVO streams into MCAP
Extend zed_svo_to_mcap to export multiple SVO inputs or a kindergarten segment directory into a single MCAP with per-camera namespaced topics.

Add a MultiMcapRecordSink so one writer can manage independent video, depth, calibration, pose, and body channels for multiple cameras while reusing the existing protobuf schemas and encoded access-unit flow.

Implement strict timestamp synchronization for bundled exports by computing the common time window, seeking each SVO to the shared start, dropping unsynced frames, and only emitting groups that fall within the configured tolerance.

Load per-camera positional tracking settings from a cv-mmap style TOML pose config, preserve single-camera behavior, and add graceful SIGINT or SIGTERM shutdown so interrupted exports flush encoders and finalize readable MCAP files.

Add mcap_multi_record_tester coverage and switch zed_svo_to_mcap defaults to H.265 plus QUALITY depth mode.
2026-03-20 17:25:29 +08:00
crosstyan 2671ac7ba9 Add synced ZED SVO grid exporter 2026-03-20 17:25:29 +08:00
crosstyan ae19b881b0 feat: add mcap recorder control and cnats providers
Register an MCAP recorder service on the streamer control subjects, reuse the shared recording request and status model, and expose the zed recording preview/conversion helper.

This also replaces the temporary cnats boolean with the explicit CVMMAP_CNATS_PROVIDER modes and documents the supported system and workspace build paths.
2026-03-18 11:53:04 +08:00
crosstyan 0fef0595fb Add ZED SVO to MCAP conversion tool 2026-03-17 02:03:59 +00:00
crosstyan ee53d1958e refactor(streamer): consume control and body over NATS 2026-03-16 17:07:45 +08:00
crosstyan 172df30225 feat(record): add raw ZED body MCAP capture 2026-03-13 17:30:57 +08:00
crosstyan 59ff8b79d9 feat(record): add depth RVL recording to MCAP 2026-03-11 21:15:25 +08:00
crosstyan 782af9481c refactor(streamer): remove gstreamer and legacy rtmp paths 2026-03-11 16:43:29 +08:00
crosstyan ed3f32ff6e feat(mcap): add paced replay tooling 2026-03-11 15:51:38 +08:00
crosstyan e16ceec647 refactor(core): use std error_code conditions 2026-03-10 23:54:22 +08:00
crosstyan 0ad6887095 refactor(streamer): adopt proxy backends and typed statuses 2026-03-10 23:29:59 +08:00
crosstyan 6af97ee5d3 feat(streamer): add ffmpeg encoder and mcap recording 2026-03-10 22:12:22 +08:00
crosstyan ec492fe985 refactor(input): consume cvmmap-core package 2026-03-06 14:42:07 +08:00
crosstyan fb59695461 refactor(protocol): move wire helpers into canonical protocol module
Rehome the wire serialization helpers under protocol ownership so the module name reflects its real role instead of simulator-era naming.

- rename sim/wire header to protocol/wire_codec
- rename sim/wire implementation to protocol/wire_codec
- keep behavior and byte layout unchanged

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-06 10:41:18 +08:00
crosstyan c252f7ddde refactor(core): remove dead simulator stubs and rename pipeline runtime 2026-03-06 10:23:24 +08:00
crosstyan 3e1ee23e42 feat(input): add real and dummy FrameSource backends 2026-03-06 08:50:15 +08:00
crosstyan 529de17eea refactor(cli): unify streamer and testers on CLI11 parsing 2026-03-06 08:49:58 +08:00
crosstyan 7413590519 refactor(cli): migrate runtime and simulator parsers to CLI11
Replace hand-rolled argument parsing with CLI11-backed parse paths for streamer runtime config and simulator runtime options.

Simulator help text is now generated from CLI11 app definitions to keep parser/help output in sync, while preserving legacy validation messages and exit semantics used by automation.
2026-03-05 23:52:09 +08:00
crosstyan 56e874ab6d feat(downstream): add cvmmap downstream runtime implementation
This commit introduces the full downstream runtime implementation needed to ingest, transform, and publish streams.

It preserves the original upstream request boundary by packaging the entire cvmmap-streamer module (build config, public API, protocol and IPC glue, and simulator/tester entrypoints) in one coherent core unit.

Keeping this group isolated enables reviewers to validate runtime behavior and correctness without mixing test evidence or process documentation changes.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-05 20:31:58 +08:00