mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 22:51:14 +00:00
5.4 KiB
5.4 KiB
Component Fit Matrix
| Candidate | Intended Role | Project Constraints Checked | Evidence | Mismatches / Disqualifiers | Status | Decision Rationale |
|---|---|---|---|---|---|---|
| Bounded latest-frame scheduler | Runtime flow control and deadline ownership | 3 Hz input, <400 ms p95 latency, <=10% frame drop allowance, no batching | Fact #27 | Must account for dropped frames and preserve timestamp correctness | Selected | Prevents stale FIFO backlog and makes AC-4.1/AC-4.4 implementable |
| Custom planar VO/IMU module | Relative motion between satellite anchors | Fixed nadir monocular camera, flat-terrain assumption, FC attitude/altitude, 400 ms p95, no raw frame storage | Facts #4, #9, #20 | Requires calibration, time sync, covariance model, and Jetson benchmark | Selected | Best exact fit for v1 sensor geometry without stereo/GPL dependency |
| NVIDIA cuVSLAM | Relative VO/VIO | Jetson support, IMU fallback, visual odometry | Facts #7, #20 | Official docs describe stereo-visual-inertial assumptions; IMU-only degraded tracking is short-duration | Rejected | Good Jetson stack but wrong v1 camera/input assumptions |
| ORB-SLAM3 | Mono-inertial SLAM baseline | Monocular+IMU support | Fact #8 | GPLv3 product risk; generic SLAM assumptions not tailored to nadir fixed-wing | Experimental only | Useful offline benchmark, not selected product dependency |
| VINS-Fusion | Mono-inertial estimator baseline | Monocular+IMU support | Fact #8 | GPL-3.0 product risk; ROS/research integration burden | Experimental only | Useful reference, not selected product dependency |
| AnyLoc/DINOv2-VLAD style descriptors | Coarse VPR over precomputed chunks | Offline descriptor generation, event-triggered online query, sparse terrain, cache cap | Facts #5, #6, #10, #15, #19 | Raw 49,152-dimensional descriptors can violate memory/cache budgets unless compressed | Selected with compression gate | Strong fit as conditional top-K retrieval layer only after descriptor/index-size proof |
| FAISS CPU/HNSW/Flat | VPR vector retrieval | Jetson ARM64, local cache, bounded chunk index | Fact #15 | GPU packages not assumed; source-built GPU optional only | Selected | Conservative v1 baseline |
| FAISS GPU/cuVS | Accelerated VPR retrieval | CUDA Jetson, lower latency | Fact #15 | ARM64 GPU support requires source build and validation | Experimental only | Optimization path, not v1 assumption |
| Official Magic Leap SuperPoint pretrained weights | Local feature extraction | Cross-view candidate refinement | Fact #17 | Noncommercial research-only license blocks product use without separate commercial permission | Rejected | Do not select as v1 product dependency by default |
| ALIKED + LightGlue + RANSAC | Learned local satellite/UAV geometric match | Cross-view candidate refinement, inlier/covariance gate, license separation | Facts #18, #24 | Jetson speed and sparse-steppe accuracy still need benchmark | Selected candidate | Concrete license-cleared learned-feature path for v1 planning |
| SIFT/AKAZE + classical matching fallback | License-safe local matching fallback | No special model weights, CPU/GPU fallback | Fact #10 | May be weaker on cross-domain imagery and sparse fields | Selected as fallback | Keeps implementation unblocked and provides a legal baseline |
| DeDoDe | Learned local feature fallback | MIT-licensed model family and deployment ports | Fact #25 | Model size/runtime and DINOv2-related variants need validation | Experimental only | Useful fallback if ALIKED/SIFT miss accuracy or robustness targets |
| ESKF in local NED/ENU | State fusion and covariance owner | IMU propagation, VO, satellite anchors, false-position budget, GPS_INPUT accuracy | Facts #1, #2, #9, #10 | Requires calibration and Monte Carlo validation | Selected | Necessary to satisfy confidence and safety ACs |
pymavlink GPS_INPUT emitter |
Primary FC output | ArduPilot-only v1, GPS substitute framing, WGS84 output | Facts #1, #2, #3 | Must configure EKF/GPS params and validate in SITL | Selected | Safest v1 output path |
MAVLink ODOMETRY auxiliary |
Rich covariance/yaw external nav | ArduPilot EKF3 external nav | Fact #3 | Source-fusion/version risk; can double-fuse if misconfigured | Needs user decision for v1.1 | Deferred until SITL confirms exact release behavior |
| FastAPI local API | Health/session/object localization API | Python CV stack, OpenAPI docs, local-only service | Fact #14 | Must stay out of hot frame path | Selected | Satisfies API documentation and integration needs |
| SQLite/MBTiles-like package | Onboard tile lookup and metadata | Offline cache, random lookup, 10 GB cap, freshness metadata | Facts #13, #16, #21 | Must handle corruption, sidecar schema, and measured descriptor/index budget | Selected with storage gate | Good embedded local cache shape, but the 10 GB budget needs a packing benchmark |
| COG/GeoTIFF exchange | Satellite Service import/export | Geospatial processing, provider imagery, tile write-back ingestion | Facts #16, #21 | Not selected as sole hot lookup format; compression ratio must be measured | Selected | Good boundary format with Satellite Service |
| AerialVL / UAV-VisLoc adapters | Early VPR and cross-view validation data | Public aerial localization data with satellite references | Facts #22, #23 | Partial match only; not enough for FC IMU/MAVLink acceptance | Selected for early validation | Useful benchmark inputs, not final acceptance evidence |