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.
This commit is contained in:
@@ -37,6 +37,7 @@ class BatchConfig:
|
||||
with_pose: bool
|
||||
pose_config: Path | None
|
||||
world_frame_id: str | None
|
||||
start_frame: int | None
|
||||
end_frame: int | None
|
||||
sync_tolerance_ms: float | None
|
||||
|
||||
@@ -293,6 +294,8 @@ def command_for_job(job: ConversionJob, config: BatchConfig) -> list[str]:
|
||||
command.extend(["--pose-config", str(config.pose_config)])
|
||||
if config.world_frame_id is not None:
|
||||
command.extend(["--world-frame-id", config.world_frame_id])
|
||||
if config.start_frame is not None:
|
||||
command.extend(["--start-frame", str(config.start_frame)])
|
||||
if config.end_frame is not None:
|
||||
command.extend(["--end-frame", str(config.end_frame)])
|
||||
if config.sync_tolerance_ms is not None:
|
||||
@@ -576,6 +579,12 @@ def run_batch(jobs: list[ConversionJob], config: BatchConfig, jobs_limit: int) -
|
||||
default=None,
|
||||
help="Optional pose reference frame id passed through to zed_svo_to_mcap.",
|
||||
)
|
||||
@click.option(
|
||||
"--start-frame",
|
||||
type=click.IntRange(min=0),
|
||||
default=None,
|
||||
help="First synced frame group to export (inclusive) in bundled multi-camera mode.",
|
||||
)
|
||||
@click.option(
|
||||
"--end-frame",
|
||||
type=click.IntRange(min=0),
|
||||
@@ -609,6 +618,7 @@ def main(
|
||||
with_pose: bool,
|
||||
pose_config: Path | None,
|
||||
world_frame_id: str | None,
|
||||
start_frame: int | None,
|
||||
end_frame: int | None,
|
||||
sync_tolerance_ms: float | None,
|
||||
) -> None:
|
||||
@@ -631,6 +641,7 @@ def main(
|
||||
with_pose=with_pose,
|
||||
pose_config=pose_config.expanduser().resolve() if pose_config is not None else None,
|
||||
world_frame_id=world_frame_id,
|
||||
start_frame=start_frame,
|
||||
end_frame=end_frame,
|
||||
sync_tolerance_ms=sync_tolerance_ms,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user