[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
+9 -10
View File
@@ -5,21 +5,20 @@ flow: greenfield
step: 7
name: Implement
status: between-batches
sub_step:
phase: 0
name: batch-19-select
detail: ""
sub_step: batch-20-select
retry_count: 0
cycle: 1
tracker: jira
## Last Completed Batch
batch: 18
commit: 0854d3b
ticket: AZ-659, AZ-660, AZ-661
jira_status: In Testing (confirmed via read-back for all three)
report: _docs/03_implementation/batch_18_cycle1_report.md
cumulative_review: _docs/03_implementation/cumulative_review_batches_16-18_cycle1_report.md
batch: 19
ticket: AZ-662, AZ-669
jira_status: In Progress (set at batch start; transition to In Testing after Jetson test run)
notes: >
opencv + petgraph added to workspace; movement_detector ego-motion (optical_flow, ego_motion
modules) and semantic_analyzer primitive-graph + freshness-scorer implemented. Local cargo check
blocked by missing native OpenCV on macOS; authoritative test is `cargo test --workspace` on
the Jetson (ssh jetson-e2e).
## Process Leftovers
- `_docs/_process_leftovers/2026-05-20_autopilot_clippy.md` — still pending; out-of-scope for batch 18