Skip to content

Assembly-line scene builder: workstations + moving operator + overlapping camera rig #84

Description

@bamdadd

Part of #83.

Build an assembly-line scene: an operator (COCO-17 skeleton) moves along a line of 4-5 fixed workstations while 4-5 cameras give overlapping coverage of the line. Analytic geometry only (no renderer).

Scope

  • New scene builder, e.g. src/multicam_sim/assembly_line.py (build_assembly_line_scene(seed=0, fps=..., ...) -> Scene) mirroring mtmc.build_mtmc_scene and examples/assembly_station.py.
  • Workstations in 3D along the line, domain-neutral ids: station_1 (frame/base), station_2 (subassembly), station_3 (fasten), station_4 (inspect), station_5 (pack) — names illustrative; keep them generic. Use topology.Station + TransitEdge for adjacency/transit time down the line.
  • Camera rig via dsl/rig.CameraRig — overlapping FOVs over the line (start from .ring(...) for guaranteed overlap; a .stations(...)/.custom(...) layout with deliberate overlap between adjacent stations is the stretch goal).
  • Operator motion via the dsl/motion path DSL: walk station_1 -> station_2 -> ... -> station_5 with a dwell (pause = the operation) at each station. Chain with .then(...), pace with .at_speed(...).
  • Emit the standard manifest (calibration + per-cam projection + in_view/visible) plus the topology field.

Acceptance

  • build_assembly_line_scene() is deterministic (byte-stable manifest for a fixed seed), with a golden/round-trip test in the repo style.
  • The operator is in_view on at least two cameras simultaneously during station-to-station transits (proves overlap).
  • Pure typed pydantic, mypy-strict clean, ruff clean. No renderer/GL dependency.

Pointers

  • src/multicam_sim/mtmc.py, examples/assembly_station.py, src/multicam_sim/dsl/rig.py, src/multicam_sim/dsl/motion.py, src/multicam_sim/topology.py, src/multicam_sim/pose.py.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions