Files
gps-denied-desktop/docs/02_components/component_coverage_analysis.md
T
Oleksandr Bezdieniezhnykh 2037870f67 add chunking
2025-11-27 03:43:19 +02:00

18 KiB
Raw Blame History

Component Coverage Analysis: Solution, Problem, Acceptance Criteria, and Restrictions

Executive Summary

This document analyzes how the ASTRAL-Next component architecture covers the solution design, addresses the original problem, meets acceptance criteria, and operates within restrictions.

Key Findings:

  • Components comprehensively implement the tri-layer localization strategy (Sequential VO, Global PR, Metric Refinement)
  • Atlas multi-map chunk architecture properly handles sharp turns and disconnected routes
  • All 10 acceptance criteria are addressed by specific component capabilities
  • Restrictions are respected through component design choices
  • ⚠️ Some architectural concerns identified (see architecture_assessment.md)

1. Solution Coverage Analysis

1.1 Tri-Layer Localization Strategy

The solution document specifies three layers operating concurrently:

Solution Layer Component(s) Implementation Status
L1: Sequential Tracking F07 Sequential Visual Odometry Fully covered
L2: Global Re-Localization F08 Global Place Recognition Fully covered
L3: Metric Refinement F09 Metric Refinement Fully covered
State Estimation F10 Factor Graph Optimizer Fully covered

Coverage Details:

L1 - Sequential VO (F07):

  • Uses SuperPoint + LightGlue as specified
  • Handles <5% overlap scenarios
  • Provides relative pose factors to F10
  • Chunk-aware operations (factors added to chunk subgraphs)

L2 - Global PR (F08):

  • Implements AnyLoc (DINOv2 + VLAD) as specified
  • Faiss indexing for efficient retrieval
  • Chunk semantic matching (aggregate descriptors)
  • Handles "kidnapped robot" scenarios

L3 - Metric Refinement (F09):

  • Implements LiteSAM for cross-view matching
  • Requires pre-rotation (handled by F06)
  • Extracts GPS from homography
  • Chunk-to-satellite matching support

State Estimation (F10):

  • GTSAM-based factor graph optimization
  • Robust kernels (Huber/Cauchy) for outlier handling
  • Multi-chunk support (Atlas architecture)
  • Sim(3) transformation for chunk merging

1.2 Atlas Multi-Map Architecture

Solution Requirement: Chunks are first-class entities, created proactively on tracking loss.

Component Coverage:

  • F12 Route Chunk Manager: Manages chunk lifecycle (creation, activation, matching, merging)
  • F10 Factor Graph Optimizer: Provides multi-chunk factor graph with independent subgraphs
  • F11 Failure Recovery Coordinator: Proactively creates chunks on tracking loss
  • F02 Flight Processor: Chunk-aware frame processing

Chunk Lifecycle Flow:

  1. Tracking Loss Detected → F11 creates chunk proactively (not reactive)
  2. Chunk Building → F07 adds VO factors to chunk subgraph via F10
  3. Chunk Matching → F08 (semantic) + F09 (LiteSAM) match chunks
  4. Chunk Anchoring → F10 anchors chunk with GPS
  5. Chunk Merging → F10 merges chunks using Sim(3) transform

Coverage Verification:

  • Chunks created proactively (not after matching failures)
  • Chunks processed independently
  • Chunk semantic matching (aggregate DINOv2)
  • Chunk LiteSAM matching with rotation sweeps
  • Chunk merging via Sim(3) transformation

1.3 REST API + SSE Architecture

Solution Requirement: Background service with REST API and SSE streaming.

Component Coverage:

  • F01 Flight API: REST endpoints (FastAPI)
  • F15 SSE Event Streamer: Real-time result streaming
  • F02 Flight Processor: Background processing orchestration
  • F14 Result Manager: Result publishing coordination

API Coverage:

  • POST /flights - Flight creation
  • GET /flights/{id} - Flight retrieval
  • POST /flights/{id}/images/batch - Batch image upload
  • POST /flights/{id}/user-fix - User anchor input
  • GET /flights/{id}/stream - SSE streaming

SSE Events:

  • frame_processed - Per-frame results
  • frame_refined - Refinement updates
  • user_input_needed - User intervention required
  • search_expanded - Progressive search updates

1.4 Human-in-the-Loop Strategy

Solution Requirement: User input for 20% of route where automation fails.

Component Coverage:

  • F11 Failure Recovery Coordinator: Monitors confidence, triggers user input
  • F01 Flight API: Accepts user fixes via REST endpoint
  • F15 SSE Event Streamer: Sends user input requests
  • F10 Factor Graph Optimizer: Applies user anchors as hard constraints

Recovery Stages:

  1. Stage 1: Progressive tile search (single-image)
  2. Stage 2: Chunk building and semantic matching
  3. Stage 3: Chunk LiteSAM matching with rotation sweeps
  4. Stage 4: User input (last resort)

2. Original Problem Coverage

2.1 Problem Statement

Original Problem: Determine GPS coordinates of image centers from UAV flight, given only starting GPS coordinates.

Component Coverage:

  • F13 Coordinate Transformer: Converts pixel coordinates to GPS
  • F09 Metric Refinement: Extracts GPS from satellite alignment
  • F10 Factor Graph Optimizer: Optimizes trajectory to GPS coordinates
  • F14 Result Manager: Publishes GPS results per frame

Coverage Verification:

  • Starting GPS used to initialize ENU coordinate system (F13)
  • Per-frame GPS computed from trajectory (F10 → F13)
  • Object coordinates computed via pixel-to-GPS transformation (F13)

2.2 Image Processing Requirements

Requirement: Process images taken consecutively within 100m spacing.

Component Coverage:

  • F05 Image Input Pipeline: Handles sequential image batches
  • F07 Sequential VO: Processes consecutive frames
  • F02 Flight Processor: Validates sequence continuity

Coverage Verification:

  • Batch validation ensures sequential ordering
  • VO handles 100m spacing via relative pose estimation
  • Factor graph maintains trajectory continuity

2.3 Satellite Data Usage

Requirement: Use external satellite provider for ground checks.

Component Coverage:

  • F04 Satellite Data Manager: Fetches Google Maps tiles
  • F08 Global Place Recognition: Matches UAV images to satellite tiles
  • F09 Metric Refinement: Aligns UAV images to satellite tiles

Coverage Verification:

  • Google Maps Static API integration (F04)
  • Tile caching and prefetching (F04)
  • Progressive tile search (1→4→9→16→25) (F04 + F11)

3. Acceptance Criteria Coverage

AC-1: 80% of photos < 50m error

Component Coverage:

  • F09 Metric Refinement: LiteSAM achieves ~17.86m RMSE (within 50m requirement)
  • F10 Factor Graph Optimizer: Fuses measurements for accuracy
  • F13 Coordinate Transformer: Accurate GPS conversion

Implementation:

  • LiteSAM provides pixel-level alignment
  • Factor graph optimization reduces drift
  • Altitude priors resolve scale ambiguity

Status: Covered


AC-2: 60% of photos < 20m error

Component Coverage:

  • F09 Metric Refinement: LiteSAM RMSE ~17.86m (close to 20m requirement)
  • F10 Factor Graph Optimizer: Global optimization improves precision
  • F04 Satellite Data Manager: High-resolution tiles (Zoom Level 19, ~0.30m/pixel)

Implementation:

  • Multi-scale LiteSAM processing
  • Per-keyframe scale model in factor graph
  • High-resolution satellite tiles

Status: Covered (may require Tier-2 commercial data per solution doc)


AC-3: Robust to 350m outlier

Component Coverage:

  • F10 Factor Graph Optimizer: Robust kernels (Huber/Cauchy) downweight outliers
  • F11 Failure Recovery Coordinator: Detects outliers and triggers recovery
  • F07 Sequential VO: Reports low confidence for outlier frames

Implementation:

  • Huber loss function in factor graph
  • M-estimation automatically rejects high-residual constraints
  • Stage 2 failure logic discards outlier frames

Status: Covered


AC-4: Robust to sharp turns (<5% overlap)

Component Coverage:

  • F12 Route Chunk Manager: Creates new chunks on tracking loss
  • F08 Global Place Recognition: Re-localizes after sharp turns
  • F06 Image Rotation Manager: Handles unknown orientation
  • F11 Failure Recovery Coordinator: Coordinates recovery

Implementation:

  • Proactive chunk creation on tracking loss
  • Rotation sweeps (0°, 30°, ..., 330°) for unknown orientation
  • Chunk semantic matching handles featureless terrain
  • Chunk LiteSAM matching aggregates correspondences

Status: Covered


AC-5: < 10% outlier anchors

Component Coverage:

  • F10 Factor Graph Optimizer: Robust M-estimation (Huber loss)
  • F09 Metric Refinement: Match confidence filtering
  • F11 Failure Recovery Coordinator: Validates matches before anchoring

Implementation:

  • Huber loss automatically downweights bad anchors
  • Match confidence threshold (0.7) filters outliers
  • Inlier count validation before anchoring

Status: Covered


AC-6: Connect route chunks; User input

Component Coverage:

  • F12 Route Chunk Manager: Manages chunk lifecycle
  • F10 Factor Graph Optimizer: Merges chunks via Sim(3) transform
  • F11 Failure Recovery Coordinator: Coordinates chunk matching
  • F01 Flight API: User input endpoint
  • F15 SSE Event Streamer: User input requests

Implementation:

  • Chunk semantic matching connects chunks
  • Chunk LiteSAM matching provides Sim(3) transform
  • Chunk merging maintains global consistency
  • User input as last resort (Stage 4)

Status: Covered


AC-7: < 5 seconds processing/image

Component Coverage:

  • F16 Model Manager: TensorRT optimization (2-4x speedup)
  • F07 Sequential VO: ~50ms (SuperPoint + LightGlue)
  • F08 Global Place Recognition: ~150ms (DINOv2 + VLAD, keyframes only)
  • F09 Metric Refinement: ~60ms (LiteSAM)
  • F10 Factor Graph Optimizer: ~100ms (iSAM2 incremental)

Performance Breakdown:

  • Sequential VO: ~50ms
  • Global PR (keyframes): ~150ms
  • Metric Refinement: ~60ms
  • Factor Graph: ~100ms
  • Total (worst case): ~360ms << 5s

Status: Covered (with TensorRT optimization)


AC-8: Real-time stream + async refinement

Component Coverage:

  • F15 SSE Event Streamer: Real-time frame results
  • F14 Result Manager: Per-frame and refinement publishing
  • F10 Factor Graph Optimizer: Asynchronous batch refinement
  • F02 Flight Processor: Decoupled processing pipeline

Implementation:

  • Immediate per-frame results via SSE
  • Background refinement thread
  • Batch waypoint updates for refinements
  • Incremental SSE events for refinements

Status: Covered


AC-9: Image Registration Rate > 95%

Component Coverage:

  • F07 Sequential VO: Handles <5% overlap
  • F12 Route Chunk Manager: Chunk creation prevents "lost" frames
  • F08 Global Place Recognition: Re-localizes after tracking loss
  • F09 Metric Refinement: Aligns frames to satellite

Implementation:

  • "Lost track" creates new chunk (not registration failure)
  • Chunk matching recovers disconnected segments
  • System never "fails" - fragments and continues

Status: Covered (Atlas architecture ensures >95%)


AC-10: Mean Reprojection Error (MRE) < 1.0px

Component Coverage:

  • F10 Factor Graph Optimizer: Local and global bundle adjustment
  • F07 Sequential VO: High-quality feature matching (SuperPoint + LightGlue)
  • F09 Metric Refinement: Precise homography estimation

Implementation:

  • Local BA in sequential VO
  • Global BA in factor graph optimizer
  • Per-keyframe scale model minimizes graph tension
  • Robust kernels prevent outlier contamination

Status: Covered


4. Restrictions Compliance

R-1: Photos from airplane-type UAVs only

Component Coverage:

  • F17 Configuration Manager: Validates flight type
  • F02 Flight Processor: Validates flight parameters

Compliance: Validated at flight creation


R-2: Camera pointing downwards, fixed, not autostabilized

Component Coverage:

  • F06 Image Rotation Manager: Handles rotation variations
  • F09 Metric Refinement: Requires pre-rotation (handled by F06)
  • F07 Sequential VO: Handles perspective variations

Compliance: Rotation sweeps handle fixed camera orientation


R-3: Flying range restricted to Eastern/Southern Ukraine

Component Coverage:

  • F02 Flight Processor: Validates waypoints within operational area
  • F04 Satellite Data Manager: Prefetches tiles for operational area
  • F13 Coordinate Transformer: ENU origin set to operational area

Compliance: Geofence validation, operational area constraints


R-4: Image resolution FullHD to 6252×4168

Component Coverage:

  • F16 Model Manager: TensorRT handles variable resolutions
  • F07 Sequential VO: SuperPoint processes variable resolutions
  • F05 Image Input Pipeline: Validates image dimensions

Compliance: Components handle variable resolutions


R-5: Altitude predefined, no more than 1km

Component Coverage:

  • F10 Factor Graph Optimizer: Altitude priors resolve scale
  • F13 Coordinate Transformer: GSD calculations use altitude
  • F02 Flight Processor: Validates altitude <= 1000m

Compliance: Altitude used as soft constraint in factor graph


R-6: NO data from IMU

Component Coverage:

  • F10 Factor Graph Optimizer: Monocular VO only (no IMU factors)
  • F07 Sequential VO: Pure visual odometry
  • F13 Coordinate Transformer: Scale resolved via altitude + satellite matching

Compliance: No IMU components, scale resolved via altitude priors


R-7: Flights mostly in sunny weather

Component Coverage:

  • F08 Global Place Recognition: DINOv2 handles appearance changes
  • F09 Metric Refinement: LiteSAM robust to lighting variations
  • F07 Sequential VO: SuperPoint handles texture variations

Compliance: Algorithms robust to lighting conditions


R-8: Google Maps (may be outdated)

Component Coverage:

  • F04 Satellite Data Manager: Google Maps Static API integration
  • F08 Global Place Recognition: DINOv2 semantic features (invariant to temporal changes)
  • F09 Metric Refinement: LiteSAM focuses on structural features

Compliance: Semantic matching handles outdated satellite data


R-9: 500-1500 photos typically, up to 3000

Component Coverage:

  • F05 Image Input Pipeline: Batch processing (10-50 images)
  • F10 Factor Graph Optimizer: Efficient optimization (iSAM2)
  • F03 Flight Database: Handles large flight datasets

Compliance: Components scale to 3000 images


R-10: Sharp turns possible (exception, not rule)

Component Coverage:

  • F12 Route Chunk Manager: Chunk architecture handles sharp turns
  • F11 Failure Recovery Coordinator: Recovery strategies for sharp turns
  • F06 Image Rotation Manager: Rotation sweeps for unknown orientation

Compliance: Chunk architecture handles exceptions gracefully


R-11: Processing on RTX 2060/3070 (TensorRT required)

Component Coverage:

  • F16 Model Manager: TensorRT optimization (FP16 quantization)
  • F07 Sequential VO: TensorRT-optimized SuperPoint + LightGlue
  • F08 Global Place Recognition: TensorRT-optimized DINOv2
  • F09 Metric Refinement: TensorRT-optimized LiteSAM

Compliance: All models optimized for TensorRT, FP16 quantization


5. Coverage Gaps and Concerns

5.1 Architectural Concerns

See architecture_assessment.md for detailed concerns:

  • Component numbering inconsistencies
  • Circular dependencies (F14 → F01)
  • Duplicate functionality (chunk descriptors)
  • Missing component connections

5.2 Potential Gaps

  1. Performance Monitoring: H05 Performance Monitor exists but integration unclear
  2. Error Recovery: Comprehensive error handling not fully specified
  3. Concurrent Flights: Multi-flight processing not fully validated
  4. Satellite Data Freshness: Handling of outdated Google Maps data relies on semantic features (may need validation)

5.3 Recommendations

  1. Fix Architectural Issues: Address concerns in architecture_assessment.md
  2. Performance Validation: Validate <5s processing on RTX 2060
  3. Accuracy Validation: Test against ground truth data (coordinates.csv)
  4. Chunk Matching Validation: Validate chunk matching reduces user input by 50-70%

6. Summary Matrix

Requirement Category Coverage Status
Solution Architecture Tri-layer + Atlas + REST/SSE Complete
Problem Statement GPS localization from images Complete
AC-1 (80% < 50m) LiteSAM + Factor Graph Covered
AC-2 (60% < 20m) LiteSAM + High-res tiles Covered
AC-3 (350m outlier) Robust kernels Covered
AC-4 (Sharp turns) Chunk architecture Covered
AC-5 (<10% outliers) Robust M-estimation Covered
AC-6 (Chunk connection) Chunk matching + User input Covered
AC-7 (<5s processing) TensorRT optimization Covered
AC-8 (Real-time stream) SSE + Async refinement Covered
AC-9 (>95% registration) Atlas architecture Covered
AC-10 (MRE < 1.0px) Bundle adjustment Covered
Restrictions All 11 restrictions Compliant

7. Conclusion

The component architecture comprehensively covers the solution design, addresses the original problem, meets all acceptance criteria, and operates within restrictions. The Atlas multi-map chunk architecture is properly implemented across F10, F11, and F12 components. The tri-layer localization strategy is fully covered by F07, F08, and F09.

Key Strengths:

  • Complete solution coverage
  • All acceptance criteria addressed
  • Restrictions respected
  • Chunk architecture properly implemented

Areas for Improvement:

  • Fix architectural concerns (see architecture_assessment.md)
  • Validate performance on target hardware
  • Test accuracy against ground truth data
  • Validate chunk matching effectiveness