Files

13 KiB

Component Fit Matrix

Top-Level Matrix

Component Area Candidate Pinned Mode/Config Option Family Intended Role API Capability Evidence Mismatches / Disqualifiers Status Decision Rationale
Calibration / geometry OpenCV 4.x C++/Python calibration, undistortion, RANSAC homography, reprojection-error measurement Established production / open-source Camera intrinsics, image normalization, VO/satellite homography verification MVE: 02_fact_cards.md OpenCV block; Source #5 None Selected Exact API fit and permissive utility role.
VO / IMU propagation BASALT + project-owned safety/anchor wrapper BASALT VIO consumes calibrated nav-camera frames + FC IMU; wrapper fuses satellite anchors, calibrates uncertainty, emits source labels and GPS_INPUT semantics Open-source production candidate Relative VIO state, completion/error benchmark, wrapped covariance/confidence, degraded modes, GPS_INPUT semantics Sources #33-#35; Facts #37, #40, #41 BASALT covariance/confidence must be calibrated in wrapper; no special nadir mode Selected User-selected best production trade-off: permissive licensing and stronger benchmark/completion evidence than OpenVINS/Kimera, with wrapper covering project-specific safety semantics.
VO / VIO reference OpenVINS Monocular camera + IMU EKF/MSCKF reference runs with covariance extraction Open-source research Benchmark and covariance reference Sources #3, #27, #28, #35, #38; Facts #4, #30, #38 GPL-3 production dependency risk; completion/divergence risk on some sequences; does not own satellite anchor / GPS_INPUT / blackout / cache-write state machine Reference only Best covariance baseline, but not selected as shipped production dependency.
VO / VIO backup Kimera-VIO Mono/stereo camera + IMU VIO/SLAM backup candidate Open-source production candidate / fallback Alternative VIO baseline Sources #34, #36; Fact #39 Heavier/stereo-oriented; mono-inertial path has documented parameter caveats Backup candidate BSD-friendly backup if BASALT fails project replay/runtime gates.
VO / SLAM alternative ORB-SLAM3 Monocular-inertial SLAM Open-source research Benchmark and failure-mode comparison Source #4, Fact #5 GPLv3; heavier SLAM/map lifecycle than required Rejected Does not fit licensing/scope for production.
VPR descriptors DINOv2-VLAD / AnyLoc-style Precomputed satellite chunk descriptors; conditional query descriptor on relocalization triggers; TensorRT path only after embedding-fidelity check Current SOTA / research Global top-K candidate retrieval Sources #7, #8, #21, #22, #30, #32; Facts #10, #11, #24, #33, #34, #36 Runtime and embedding-fidelity gates on Jetson; model-size/index-size selection required Selected with runtime gate Best evidence for change-robust VPR, but not per-frame and not blindly TensorRT-converted.
Vector retrieval FAISS CPU-first aarch64 index; saved/loaded index over float/PQ descriptors; GPU only if custom Jetson build is proven Established production / open-source Top-K candidate chunk search MVE: 02_fact_cards.md FAISS block; Sources #9, #25 GPU FAISS not default on Jetson ARM64 Selected Exact top-K descriptor retrieval fit with CPU-first deployment.
Local matching LightGlue + DISK/ALIKED CUDA/ONNX-profiled DISK or ALIKED feature extraction + LightGlue matching on bounded top-K candidates Current SOTA / open-source 2D-2D correspondences for RANSAC and MRE MVE: 02_fact_cards.md LightGlue block; Sources #6, #23, #31 Runtime quality gate; extractor choice must avoid SuperPoint license issue Selected with runtime gate Exact input/output fit with deployable licensing path; ALIKED/LightGlue is preferred for anchor verification.
Local matching fallback SuperPoint + LightGlue SuperPoint features + LightGlue Current SOTA / license-gated Optional benchmark/fallback Source #6 SuperPoint restrictive license Needs user decision Do not use as default production dependency without legal review.
Cache imagery COG + manifest/sidecar Tiled compressed GeoTIFF tile objects with CRS, capture date, source, m/px, freshness, descriptor sidecars; write-new-object lifecycle Established geospatial format Immutable service tiles and generated candidate tiles Source #18, Facts #21, #29 No in-place mutation; manifest manages active tile version Selected Fits geospatial raster access and write-new-tile workflow.
Cache packaging PMTiles Read-only tile archive Established web-map archive Optional export/snapshot Source #17, Fact #20 Cannot update in place Rejected for live cache In-flight tile generation needs mutable write-new objects.
MAVLink MAVSDK + pymavlink MAVSDK telemetry subscriptions; pymavlink/raw MAVLink GPS_INPUT emission to ArduPilot GPS1_TYPE=14; velocity source/ignore-flag behavior SITL-tested Established APIs FC telemetry, QGC status, GPS substitute output MVE: 02_fact_cards.md MAVSDK/pymavlink block; Sources #10-#12, #24 Plane SITL behavior and velocity-source parameters must be validated Selected Exact output contract with known ArduPilot pitfall covered.
Validation EuRoC + AerialVL/VPAir + Plane SITL + representative flight Layered validation suite Test strategy Prove ACs before production Sources #19, #20 Public data not sufficient for final proof Selected Covers component de-risking plus final representative proof.

Restrictions Cross-Check — Selected Production Architecture

Restriction Candidate-mode behavior Result Evidence
Fixed-wing only Architecture assumes forward motion, rare sharp turns, no hover dependency. Pass Problem context; Source #1
Fixed nadir nav camera VO/orthorectification uses fixed camera extrinsics; attitude compensation from FC. Pass Source #5
Operational area / flat terrain Flat terrain assumption supported; repetitive agricultural terrain handled as validation class and confidence risk. Pass Source #2
Weather/season classes Validation matrix includes seasonal/visibility classes. Pass 05_validation_log.md
Two-camera split Nav camera drives localization; AI camera object localization uses current GPS-denied state and AI gimbal/zoom. Pass AC-7.1/7.2
Satellite Service offline boundary Runtime uses local COG/cache + FAISS descriptors only; no in-flight provider fetch. Pass Sources #17, #18
Freshness gates Tile manifest carries capture date and sector; stale tiles rejected/down-weighted. Pass AC-8.2, AC-NEW-6
Jetson Orin Nano Super Hot path is lightweight; heavy VPR conditional; runtime profiling gate required. Pass Sources #15, #16
MAVLink / ArduPilot only MAVSDK telemetry + pymavlink GPS_INPUT, GPS1_TYPE=14. Pass Sources #10-#12
No raw frame storage FDR keeps estimates, telemetry, tiles, and low-rate failure thumbnails only. Pass AC-8.5, AC-NEW-3

AC Cross-Check — Selected Production Architecture

AC Candidate-mode behavior Result Evidence
AC-1.1 Satellite anchors and ESKF output target <=50 m for >=80% normal frames. Pass Facts #1, #2
AC-1.2 Same pipeline targets <=20 m for >=50% normal frames; validated statistically. Pass 05_validation_log.md
AC-1.3 ESKF tracks anchor age and covariance; VO-only and IMU-fused drift measured between anchors. Pass Fact #1
AC-1.4 ESKF emits covariance; telemetry/FDR carries source label. Pass Fact #16
AC-2.1a VO hot path handles normal overlapping frames; failures trigger mode change. Pass Facts #1, #6
AC-2.1b Satellite anchor success measured separately through VPR + local match + RANSAC. Pass Facts #2, #7, #12
AC-2.2 OpenCV/LightGlue provide correspondences and homography MRE measurement. Pass Facts #6, #7
AC-3.1 ESKF innovation gates reject outliers; covariance grows instead of trusting jumps. Pass Reasoning chain
AC-3.2 Sharp turn VO failure triggers VPR relocalization. Pass AC design; Source #2
AC-3.3 Disconnected segment handled by global retrieval and pose-graph/ESKF re-anchor. Pass Source #2
AC-3.4 Loss counter and timer trigger GCS relocalization request while dead reckoning continues. Pass AC design
AC-3.5 Image-quality/blackout state switches to IMU-only and rejects spoofed GPS. Pass AC design; Facts #16, #17
AC-4.1 Heavy VPR is conditional; steady-state path is VO/IMU. Jetson profiling is a runtime quality gate. Pass Facts #3, #18
AC-4.2 Descriptor/index memory is budgeted; FAISS and cache are precomputed/pruned. Pass Facts #12, #13
AC-4.3 GPS_INPUT emitted by pymavlink; ODOMETRY remains disabled in v1. Pass Facts #14-#16
AC-4.4 Estimator emits frame-by-frame; no batching required. Pass Architecture
AC-4.5 Corrections are emitted as updated estimates with timestamps and covariance. Pass Architecture
AC-5.1 Startup initializes from last trusted FC state plus IMU propagation. Pass Architecture
AC-5.2 >3 s no-estimate path enters degraded/failsafe behavior; Plane SITL proves FC response. Pass Fact #17
AC-5.3 Cold restart uses FC state and preloaded cache/index. Pass AC-NEW-1
AC-6.1 QGC receives downsampled status; FDR keeps high-rate details. Pass MAVSDK telemetry + FDR design
AC-6.2 Command ingress reserved through MAVLink status/named values/custom dialect. Pass MAVLink design
AC-6.3 GPS_INPUT lat/lon is WGS84. Pass Fact #16
AC-7.1 Object localization exposes level-flight accuracy and maneuver bound. Pass Geometry design
AC-7.2 Flat-terrain trig projection from UAV GPS + gimbal/zoom/altitude. Pass Geometry design
AC-8.1 Cache contract requires 0.3-0.5 m/px imagery. Pass Restrictions
AC-8.2 Freshness metadata gates anchors. Pass Restrictions
AC-8.3 Precomputed descriptors and FAISS index are part of cache budget. Pass Facts #10, #12, #13
AC-8.4 Generated tiles are new COGs with quality metadata for Service ingest. Pass Fact #21
AC-8.5 Raw frames are not retained. Pass FDR design
AC-8.6 VPR chunks use overlap/multi-scale descriptors and dynamic K. Pass Facts #2, #12
AC-NEW-1 Engines/indexes built before flight; first fix benchmark validates <30 s. Pass Runtime plan
AC-NEW-2 Plane SITL verifies spoofing trigger and promotion <3 s. Pass Fact #17
AC-NEW-3 FDR segment rollover validates <=64 GB. Pass Validation plan
AC-NEW-4 Mahalanobis gates and calibrated covariance target false-position budget. Pass ESKF design
AC-NEW-5 Thermal profiling at 25 W validates no throttle. Pass Facts #18, #19
AC-NEW-6 Tile age rejection/down-weighting built into anchor gate. Pass AC design
AC-NEW-7 Tile writes require parent-pose covariance and sidecar metadata; Satellite Service voting is external contract. Pass AC design
AC-NEW-8 Dead-reckoned blackout mode degrades GPS_INPUT fields at covariance thresholds. Pass Facts #16, #17

Decision Rules Applied

  • No GPL VIO/SLAM library is selected as a production dependency.
  • Runtime gates are classified as runtime-quality validation gates, not API capability blockers.
  • Every selected component has an exact input/output role and a validation path.
  • Any candidate with license uncertainty is marked Needs user decision or non-production.

Mode B Revisions Applied

  • FAISS pinned mode changed to CPU-first on Jetson ARM64.
  • DINOv2 TensorRT path requires descriptor-fidelity validation against PyTorch/ONNX.
  • GPS_INPUT tests now include velocity-source and ignore-flag behavior.
  • COG cache lifecycle clarified as write-new-object plus manifest versioning, not in-place mutation.
  • Visual/satellite security controls now include signed manifests, cache provenance, stale-tile rejection, and multi-signal consistency checks.

Mode B Round 2 Revisions Applied

  • OpenVINS is explicitly better than naive OpenCV-only VIO, but remains reference-only because the shipped estimator must own source labels, covariance gates, spoofing/blackout states, cache-write eligibility, and MAVLink semantics.
  • The selected VO wording is now "OpenCV geometry + project-owned ESKF" to avoid implying a fragile OpenCV-only odometry implementation.
  • DINOv2-VLAD + CPU-first FAISS + ALIKED/LightGlue remains selected for satellite retrieval and anchor verification, with retrieval limited to relocalization triggers and bounded top-K verification.
  • SIFT/ORB remains a regression/fallback baseline; SuperPoint remains non-production until legal approval.

Mode B Round 3 Revisions Applied

  • BASALT is selected as the production VIO candidate.
  • OpenVINS remains the covariance/reference baseline, not a shipped dependency by default.
  • Kimera-VIO remains a backup VIO candidate because its license is production-friendly but mono-inertial caveats make it weaker for the single-nadir-camera path.
  • The project-owned safety/anchor wrapper remains mandatory around BASALT for satellite anchor acceptance, source labels, blackout/spoofing modes, cache-write eligibility, calibrated confidence, and MAVLink GPS_INPUT.