# Fact Cards ## Fact #1 - **Statement**: Fixed-wing high-altitude monocular VO suffers from scale ambiguity and accumulated error; comparing against satellite imagery can reduce accumulated drift. - **Source**: Source #1 - **Phase**: Phase 2 - **Target Audience**: UAV localization implementers - **Confidence**: High - **Related Dimension**: Architecture - **Fit Impact**: Supports satellite-anchored hybrid estimator. ## Fact #2 - **Statement**: Aerial VPR is sensitive to weather, season, scale variation, repetitive patterns, and map tile construction; overlap and scale level materially affect retrieval quality. - **Source**: Source #2 - **Confidence**: High - **Related Dimension**: VPR - **Fit Impact**: Supports AC-8.6 VPR chunks with overlap and seasonal validation. ## Fact #3 - **Statement**: Heavy VPR re-ranking can be too slow for steady-state embedded use; survey evidence reports some re-ranking around 1 s and SuperGlue much slower on evaluated hardware. - **Source**: Source #2 - **Confidence**: High - **Related Dimension**: Runtime - **Fit Impact**: Disqualifies per-frame global VPR/re-ranking unless profiled on Jetson. ## Fact #4 - **Statement**: OpenVINS is an EKF/MSCKF visual-inertial estimator with monocular tracking and calibration support, but its code is GPL-3. - **Source**: Source #3 - **Confidence**: High - **Related Dimension**: VO/VIO - **Fit Impact**: Reference/benchmark only unless GPL obligations are accepted. ## Fact #5 - **Statement**: ORB-SLAM3 supports monocular visual-inertial SLAM and multi-map operation, but it is GPLv3 and expects careful calibration and a SLAM-style runtime stack. - **Source**: Source #4 - **Confidence**: High - **Related Dimension**: VO/VIO - **Fit Impact**: Rejected as production dependency; useful benchmark/reference. ## Fact #6 - **Statement**: OpenCV provides camera calibration APIs that output camera matrix and distortion coefficients, and homography estimation APIs including RANSAC. - **Source**: Source #5 - **Confidence**: High - **Related Dimension**: Calibration / geometry - **Fit Impact**: Selected utility layer for calibration, undistortion, homography, and geometric validation. ## Fact #7 - **Statement**: LightGlue accepts local keypoints/descriptors from extractors such as DISK, ALIKED, SIFT, and SuperPoint, and returns matched keypoint indices, coordinates, and confidence scores. - **Source**: Source #6 - **Confidence**: High - **Related Dimension**: Local matching - **Fit Impact**: Selected candidate for conditional cross-domain local matching. ## Fact #8 - **Statement**: LightGlue has adaptive depth/width pruning, FlashAttention, mixed precision, and benchmark scripts; runtime must be profiled on Jetson because defaults are optimized for desktop GPUs. - **Source**: Source #6 - **Confidence**: High - **Related Dimension**: Runtime - **Fit Impact**: Selected with runtime-quality gate. ## Fact #9 - **Statement**: LightGlue code/weights are Apache-2.0, but SuperPoint pretrained weights/inference have restrictive licensing; DISK and ALIKED are safer extractor pairings from a licensing perspective. - **Source**: Source #6 - **Confidence**: High - **Related Dimension**: Licensing - **Fit Impact**: Select DISK/ALIKED+LightGlue for production candidate; treat SuperPoint as license-gated. ## Fact #10 - **Statement**: AnyLoc provides DINOv2 feature extraction and VLAD aggregation APIs, but its full experiment setup notes large storage/compute requirements. - **Source**: Source #7 - **Confidence**: High - **Related Dimension**: VPR descriptors - **Fit Impact**: DINOv2-VLAD selected as offline/conditional retrieval candidate, not unconditional per-frame path. ## Fact #11 - **Statement**: DINOv2 official repository provides Meta's DINOv2 implementation and model assets with Apache-2.0 / CC-BY-4.0 license notices. - **Source**: Source #8 - **Confidence**: High - **Related Dimension**: VPR descriptors - **Fit Impact**: Supports DINOv2 as a permissible descriptor backbone subject to model-license review. ## Fact #12 - **Statement**: FAISS is designed for efficient dense vector similarity search, top-k nearest-neighbor retrieval, speed/accuracy tradeoffs, and indexes too large for simple exhaustive scanning. - **Source**: Source #9 - **Confidence**: High - **Related Dimension**: Descriptor retrieval - **Fit Impact**: Selected vector index for offline VPR descriptors. ## Fact #13 - **Statement**: FAISS supports saving/loading indexes; GPU indexes must be converted to CPU before saving. - **Source**: Source #9 - **Confidence**: High - **Related Dimension**: Cache lifecycle - **Fit Impact**: Supports install-time/index-build flow with runtime load. ## Fact #14 - **Statement**: MAVSDK provides telemetry subscriptions for raw GPS, GPS info, status text, odometry, and position/velocity; it does not remove the need for raw MAVLink control over `GPS_INPUT` emission. - **Source**: Source #10 - **Confidence**: High - **Related Dimension**: MAVLink integration - **Fit Impact**: Select MAVSDK for telemetry, pymavlink/raw MAVLink for `GPS_INPUT`. ## Fact #15 - **Statement**: ArduPilot GPSInput requires `GPS1_TYPE=14` for MAVLink GPS input. - **Source**: Source #11 - **Confidence**: High - **Related Dimension**: MAVLink output - **Fit Impact**: Confirms production parameter requirement. ## Fact #16 - **Statement**: `GPS_INPUT` carries WGS84 lat/lon, MSL altitude, velocity, `fix_type`, `horiz_accuracy`, `vert_accuracy`, `speed_accuracy`, and ignore flags. - **Source**: Source #12 - **Confidence**: High - **Related Dimension**: Output contract - **Fit Impact**: Supports mapping estimator covariance to `horiz_accuracy` and failover fix types. ## Fact #17 - **Statement**: ArduPilot GPS glitch protection and EKF failsafe behavior are parameterized and vehicle-specific; Copter docs are not enough to prove Plane behavior. - **Source**: Sources #13, #14 - **Confidence**: High - **Related Dimension**: Failsafe - **Fit Impact**: Requires ArduPilot Plane SITL validation. ## Fact #18 - **Statement**: Jetson Orin Nano Super provides 67 INT8 TOPS, 8 GB memory, 102 GB/s bandwidth, and 7-25 W power range. - **Source**: Source #15 - **Confidence**: High - **Related Dimension**: Runtime - **Fit Impact**: Confirms target platform constraint. ## Fact #19 - **Statement**: NVIDIA warns Super power modes require thermal design that can handle the power modes; otherwise throttling can reduce performance. - **Source**: Source #16 - **Confidence**: High - **Related Dimension**: Thermal - **Fit Impact**: Supports AC-NEW-5 hot-soak and throttle logging. ## Fact #20 - **Statement**: PMTiles is efficient for single-file tile reads but is read-only and cannot be updated in place. - **Source**: Source #17 - **Confidence**: High - **Related Dimension**: Cache storage - **Fit Impact**: Rejected for mutable onboard tile writes; possible export/package format only. ## Fact #21 - **Statement**: COG supports tiled, compressed, overview-enabled GeoTIFFs suitable for efficient raster access and geospatial tooling. - **Source**: Source #18 - **Confidence**: High - **Related Dimension**: Cache storage - **Fit Impact**: Selected imagery storage unit for immutable service tiles and generated candidate tiles. ## Fact #22 - **Statement**: AerialVL provides aerial visual localization sequences, reference maps, and geo-referenced evaluation data. - **Source**: Source #19 - **Confidence**: Medium - **Related Dimension**: Validation - **Fit Impact**: Selected validation dataset for VPR/satellite-anchor algorithm development. ## Fact #23 - **Statement**: EuRoC provides synchronized camera/IMU and ground truth for VIO, but it is not representative of high-altitude fixed-wing nadir imagery. - **Source**: Source #20 - **Confidence**: High - **Related Dimension**: Validation - **Fit Impact**: Use for VIO sanity checks only, not final AC proof. ## MVE Evidence ### MVE — OpenCV calibration and homography utilities - **Source**: Source #5 - **Pinned mode/config**: Use OpenCV 4.x C++/Python APIs for checkerboard calibration, undistortion, homography estimation with RANSAC, and reprojection-error measurement. - **Inputs in example**: Object/image point correspondences, image size, matched keypoints. - **Outputs in example**: Camera matrix, distortion coefficients, rotation/translation vectors, homography matrix. - **Project inputs**: ADTi nav-camera frames, checkerboard calibration images, matched VO/satellite points. - **Project outputs required**: Intrinsics/distortion, homography, inlier mask, MRE. - **Match assessment**: Exact match. ### MVE — LightGlue in DISK/ALIKED local-matching mode - **Source**: Source #6 - **Pinned mode/config**: Use DISK+LightGlue or ALIKED+LightGlue on CUDA/TensorRT-profiled Jetson path, with inputs two normalized images and outputs matched keypoint coordinates plus confidence scores. - **Inputs in example**: Two images loaded to GPU; local features extracted by DISK/ALIKED/SuperPoint. - **Outputs in example**: `matches` shape `(K, 2)`, keypoint coordinates in each image, confidence scores. - **Project inputs**: Orthorectified nav frame crop and candidate satellite/VPR chunk. - **Project outputs required**: 2D-2D correspondences for RANSAC homography and cross-domain MRE. - **Match assessment**: Exact interface match; runtime quality gate remains. ### MVE — FAISS top-K VPR retrieval - **Source**: Source #9 - **Pinned mode/config**: Use FAISS CPU index with optional GPU acceleration for top-K nearest neighbor search over precomputed DINOv2/VLAD descriptors, saved/loaded at install/preflight time. - **Inputs in example**: Float32 descriptor matrix, query descriptor, `k`. - **Outputs in example**: Distance matrix `D` and index matrix `I`. - **Project inputs**: Precomputed VPR chunk descriptors, query frame descriptor. - **Project outputs required**: Top-K candidate chunk IDs for local matching. - **Match assessment**: Exact match. ### MVE — MAVSDK telemetry + pymavlink GPS_INPUT - **Source**: Sources #10, #11, #12 - **Pinned mode/config**: Use MAVSDK for telemetry subscriptions and pymavlink/raw MAVLink for `GPS_INPUT` emission to ArduPilot with `GPS1_TYPE=14`. - **Inputs in example**: Telemetry streams, estimator lat/lon/alt/velocity/covariance. - **Outputs in example**: `GPS_INPUT` fields accepted by ArduPilot GPS backend. - **Project inputs**: ESKF state and covariance, source label, mode/fix quality. - **Project outputs required**: Frame-by-frame WGS84 `GPS_INPUT`, status text, FDR record. - **Match assessment**: Exact match for output contract; Plane SITL validation remains. ## Mode B Findings ### Fact #24 - **Statement**: DINOv2 TensorRT optimization on Jetson may provide limited speedup and can change embedding distances; descriptor fidelity must be tested against the PyTorch/ONNX baseline before selecting a TensorRT descriptor path. - **Source**: Sources #21, #22 - **Phase**: Mode B - **Confidence**: Medium - **Related Dimension**: VPR runtime / quality - **Fit Impact**: Adds embedding-fidelity gate; keeps DINOv2 selected only after profiling. ### Fact #25 - **Statement**: LightGlue's SuperPoint path has documented license concerns; DISK/ALIKED remain the safer production default unless legal review approves SuperPoint. - **Source**: Source #23 - **Phase**: Mode B - **Confidence**: High - **Related Dimension**: Licensing - **Fit Impact**: Confirms draft01 decision to avoid SuperPoint as default. ### Fact #26 - **Statement**: ArduPilot `GPS_INPUT_IGNORE_FLAG_VEL_HORIZ` has a reported EKF3 pitfall where velocity may become zero rather than truly ignored; SITL must validate velocity-source parameters and message fields. - **Source**: Source #24 - **Phase**: Mode B - **Confidence**: Medium - **Related Dimension**: MAVLink integration - **Fit Impact**: Adds a specific MAVLink test and parameter gate. ### Fact #27 - **Statement**: FAISS deployment on Jetson ARM64 should assume CPU FAISS by default; GPU FAISS packages are not the safe default on aarch64. - **Source**: Source #25 - **Phase**: Mode B - **Confidence**: Medium - **Related Dimension**: Descriptor retrieval runtime - **Fit Impact**: Changes FAISS pinned mode from CPU with optional GPU to CPU-first, with custom GPU build only as future optimization. ### Fact #28 - **Statement**: Visual matching with orthophotos is a known GNSS-denied UAV approach, but available sources do not prove robustness against adversarial visual attacks on imagery/cache content. - **Source**: Source #26 - **Phase**: Mode B - **Confidence**: Medium - **Related Dimension**: Security - **Fit Impact**: Adds cache integrity, signed manifests, and consistency checks as required controls. ### Fact #29 - **Statement**: COG creation is a write-new-object workflow; the live onboard cache should append/replace tile objects through manifests, not mutate a COG in place. - **Source**: Source #18 - **Phase**: Mode B - **Confidence**: High - **Related Dimension**: Cache lifecycle - **Fit Impact**: Clarifies cache implementation. ### Fact #30 - **Statement**: OpenVINS is technically stronger than a pure hand-rolled OpenCV-only VIO stack for camera+IMU odometry, but its GPLv3 license and generic VIO lifecycle make it unsuitable as the default production dependency for this product. - **Source**: Sources #27, #28 - **Phase**: Mode B round 2 - **Confidence**: High - **Related Dimension**: VO / VIO selection - **Fit Impact**: Use OpenVINS as a mandatory benchmark/reference, not as the shipped estimator dependency unless GPL obligations are explicitly accepted. ### Fact #31 - **Statement**: The selected production estimator is not "custom OpenCV-only"; OpenCV is the geometry utility layer, while the product-owned ESKF/mode machine owns covariance, source labels, GPS spoofing, blackout, tile-write eligibility, and MAVLink semantics. - **Source**: Sources #5, #29; AC-1.4, AC-3.5, AC-4.3, AC-NEW-4, AC-NEW-7, AC-NEW-8 - **Phase**: Mode B round 2 - **Confidence**: High - **Related Dimension**: Estimator ownership - **Fit Impact**: Keep custom production estimator, but reject any interpretation that means building a naive OpenCV-only VIO stack. ### Fact #32 - **Statement**: Fixed-wing GPS-denied UAV research supports a hybrid of visual odometry plus satellite/orthophoto matching to reduce accumulated drift, matching the project architecture better than a standalone VIO-only solution. - **Source**: Sources #1, #26 - **Phase**: Mode B round 2 - **Confidence**: High - **Related Dimension**: Architecture - **Fit Impact**: Confirms that OpenVINS alone cannot satisfy the absolute-position and re-anchor responsibilities without the satellite anchor path. ### Fact #33 - **Statement**: DINOv2-VLAD/AnyLoc-style retrieval is a strong global candidate generator for aerial VPR, but descriptor size, model size, and environment-specific VLAD/index choices must be budgeted and profiled. - **Source**: Sources #7, #30, #32 - **Phase**: Mode B round 2 - **Confidence**: High - **Related Dimension**: Satellite retrieval - **Fit Impact**: Select DINOv2-VLAD for triggered retrieval, not steady-state per-frame execution. ### Fact #34 - **Statement**: Aerial VPR sources emphasize tile/chunk scale, overlap, weather/season changes, repetitive patterns, and re-ranking cost; local matching should be a verification/rerank stage over bounded top-K candidates. - **Source**: Source #32 - **Phase**: Mode B round 2 - **Confidence**: High - **Related Dimension**: Anchor verification - **Fit Impact**: Supports VPR chunks with 40-50% overlap, dynamic K, and conditional ALIKED/LightGlue verification. ### Fact #35 - **Statement**: ALIKED + LightGlue has an exact local matching interface and a plausible ONNX/TensorRT deployment path, but public evidence does not prove Jetson Orin Nano p95 latency for the project image sizes. - **Source**: Sources #6, #31 - **Phase**: Mode B round 2 - **Confidence**: Medium - **Related Dimension**: Local matching runtime - **Fit Impact**: Keep ALIKED/LightGlue selected with runtime gate; benchmark DISK and SIFT/ORB as fallbacks. ### Fact #36 - **Statement**: DINOv2 TensorRT conversion can reduce embedding discrimination and may not provide meaningful speedup on Jetson-class devices; descriptor-fidelity tests must precede any optimized engine acceptance. - **Source**: Source #22 - **Phase**: Mode B round 2 - **Confidence**: Medium - **Related Dimension**: VPR deployment - **Fit Impact**: TensorRT is an optimization candidate only after PyTorch/ONNX retrieval-rank equivalence is proven. ### Fact #37 - **Statement**: BASALT is the best production VIO candidate among BASALT, OpenVINS, and Kimera-VIO because it combines permissive licensing with strong published EuRoC accuracy and completion evidence. - **Source**: Sources #33, #34, #35 - **Phase**: Mode B round 3 - **Confidence**: Medium - **Related Dimension**: VO / VIO selection - **Fit Impact**: Select BASALT as the production VIO candidate, pending project replay/profiling. ### Fact #38 - **Statement**: OpenVINS has the clearest EKF covariance story, including full/marginal covariance helpers and NEES-style evaluation support, but remains production-constrained by GPLv3. - **Source**: Sources #27, #28, #38 - **Phase**: Mode B round 3 - **Confidence**: High - **Related Dimension**: Confidence / covariance - **Fit Impact**: Keep OpenVINS as covariance/reference baseline and use it to calibrate the BASALT wrapper's reported uncertainty. ### Fact #39 - **Statement**: Kimera-VIO is production-friendly from a license standpoint, but it is heavier/stereo-oriented and has documented mono-inertial parameter/performance caveats. - **Source**: Sources #34, #36 - **Phase**: Mode B round 3 - **Confidence**: Medium - **Related Dimension**: VO / VIO fallback - **Fit Impact**: Keep Kimera-VIO as a backup candidate, not the first production choice for a single fixed nadir camera. ### Fact #40 - **Statement**: None of BASALT, OpenVINS, or Kimera-VIO provides a special fixed-wing nadir mode; downward-camera support depends on accurate camera-to-IMU extrinsics, altitude/scale constraints, and validation under low-parallax planar terrain. - **Source**: Source #37 - **Phase**: Mode B round 3 - **Confidence**: High - **Related Dimension**: Nadir-camera support - **Fit Impact**: The architecture must keep satellite anchors and project-level confidence gates regardless of which VIO library is selected. ### Fact #41 - **Statement**: Published EuRoC-type VIO error rates are useful for ranking libraries but are not acceptance evidence for high-altitude fixed-wing nadir imagery over agricultural terrain. - **Source**: Sources #34, #35, #37 - **Phase**: Mode B round 3 - **Confidence**: High - **Related Dimension**: Validation - **Fit Impact**: Require representative replay/flight data before claiming AC-1/AC-2 accuracy.