mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 10:31:13 +00:00
18 KiB
18 KiB
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_INPUTemission. - 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=14for MAVLink GPS input. - Source: Source #11
- Confidence: High
- Related Dimension: MAVLink output
- Fit Impact: Confirms production parameter requirement.
Fact #16
- Statement:
GPS_INPUTcarries 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_accuracyand 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:
matchesshape(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
Dand index matrixI. - 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_INPUTemission to ArduPilot withGPS1_TYPE=14. - Inputs in example: Telemetry streams, estimator lat/lon/alt/velocity/covariance.
- Outputs in example:
GPS_INPUTfields 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_HORIZhas 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.