Files
mikkeli d438b516e5 svc-vision: camera live view, moved from app-flutter's test tool
Camera-agnostic (--camera auto finds any V4L2 capture device and finds it
again after a replug; non-MJPEG cameras are encoded), says when the camera
is unavailable, paced per decision 28. Python, standard library only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
2026-10-12 16:14:03 +09:00

1.2 KiB
Raw Permalink Blame History

type, status, updated
type status updated
plan active 2026-10-12

Initial plan

Scope

The camera end to end on the Orin: capture, the live view, recording, and later inference. Hardware facts for the current camera are in orin-nano-env-setup docs/impl/reports/USB-CAMERA.md; tablet link limits in app-flutter docs/impl/reports/LINK-TEST-2026-10-11.md.

Order

  1. Live view — in place: src/liveview.py as yukart-vision.service on :7710. Started as a test tool in app-flutter and moved here once the live view became a product feature (decision 27). Protocol in the module docstring.
  2. Capture fan-out. One capture process, frames to several consumers (live view, recorder, inference). Needed before a second consumer exists.
  3. Recording. H.264 in software (x264enc, ~1.3–2 cores at 1080p) in segments on the recorder's sessions, under the recordings bound.
  4. Exposure for sign reading. Manual exposure with own metering to hold the frame rate; LED signs flicker under short exposures.
  5. Inference — deferred (decision 7): road signs, speed limits first.

Open

  • The protocol lives in the docstring. It moves to contracts when a second client exists or it changes shape.