[AZ-662] [AZ-669] Implement ego-motion estimator and primitive graph

AZ-662: movement_detector ego-motion
- Add opencv + petgraph to workspace dependencies
- internal/zoom_bands: per-band telemetry skew tolerances
- internal/telemetry_sync: skew gate (check_skew)
- internal/optical_flow: frame→gray, degenerate detection,
  LK sparse flow + RANSAC homography estimation
- internal/ego_motion: EgoMotionEstimator + atomic counters

AZ-669: semantic_analyzer primitive graph
- internal/primitive_graph: NodeType, PrimitiveNode, PrimitiveGraph,
  PrimitiveGraphBuilder with proximity-adjacency + BFS connectivity check
- internal/scoring/freshness: FreshnessScorer (Laplacian variance,
  texture stddev, undisturbed-surroundings heuristic)
- All ACs covered by unit tests (AC-1/2/3 per task)

Note: native OpenCV not installed on macOS; authoritative test is
cargo test --workspace on Jetson (ssh jetson-e2e).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-05-20 19:00:39 +03:00
parent 9ed2842c00
commit db844db232
20 changed files with 1546 additions and 46 deletions
+6
View File
@@ -87,6 +87,12 @@ libc = "0.2"
# Geospatial
h3o = "0.7"
# Computer vision (movement_detector ego-motion + semantic_analyzer freshness scoring)
opencv = { version = "0.98", default-features = false, features = ["calib3d", "imgproc", "video"] }
# Graph data structures (semantic_analyzer primitive graph)
petgraph = "0.8"
# Multimedia (RTSP + H.264/265 decode for frame_ingest — see AZ-658).
# Linked dynamically against the host FFmpeg 8.x install (libavcodec /
# libavformat / libavutil / libswscale / libswresample) via pkg-config.