mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-04-27 16:46:36 +00:00
9eba1689b3
- Revised acceptance criteria in the acceptance_criteria.md file to clarify metrics and expectations, including updates to GPS accuracy and image processing quality. - Enhanced restrictions documentation to reflect operational parameters and constraints for UAV flights, including camera specifications and satellite imagery usage. - Added new research documents for acceptance criteria assessment and question decomposition to support ongoing project evaluation and decision-making.
26 KiB
26 KiB
Source Registry — Phase 1 (AC & Restrictions Assessment)
Tier legend: L1 = official spec / standard / reference manual; L2 = peer-reviewed paper or tool from a vendor / SOTA author; L3 = vendor docs, popular OSS repo, expert blog; L4 = forum post, secondary blog.
| ID | Tier | Title | URL | Used for |
|---|---|---|---|---|
| S01 | L2 | Xu et al., UAV-VisLoc: A Large-scale Dataset for UAV Visual Localization (arXiv 2405.11936, May 2024) | https://arxiv.org/html/2405.11936v1 | Fixed-wing UAV visual localization benchmark; 405–840 m altitudes; 0.3 m/px Google Earth satellite reference |
| S02 | L2 | Xu et al., Exploring the best way for UAV visual localization under Low-altitude Multi-view Observation Condition: a Benchmark (AnyVisLoc, arXiv 2503.10692, 2025) | https://arxiv.org/html/2503.10692v1 | SOTA recall@Xm numbers; 74.1% @ 5 m at 30–300 m altitude |
| S03 | L2 | He et al., AerialVL: A Dataset, Baseline and Algorithm Framework for Aerial-Based Visual Localization With Reference Map (RA-L 2024) | https://ieeexplore.ieee.org/document/10632587 ; https://github.com/hmf21/AerialVL | Fixed-wing aerial VPR + visual alignment + VO benchmark; 70 km of trajectories; FLIR + gimbal + NovAtel GNSS 1.5 m RMS |
| S04 | L2 | Schmidt-Salzmann et al., Visual Place Recognition for Aerial Imagery: A Survey (arXiv 2406.00885, 2024) + aero-vloc benchmark | https://arxiv.org/abs/2406.00885 ; https://github.com/prime-slam/aero-vloc | VPR methods (AnyLoc, CosPlace, EigenPlaces, MixVPR, NetVLAD, SALAD, SelaVPR) for aerial domain |
| S05 | L2 | Keetha et al., AnyLoc: Towards Universal Visual Place Recognition | https://anyloc.github.io/ ; https://github.com/AnyLoc/AnyLoc | DINOv2 + VLAD VPR, training-free, strong on aerial cross-domain |
| S06 | L2 | Ali-bey et al., MixVPR: Feature Mixing for Visual Place Recognition (arXiv 2303.02190) | https://arxiv.org/abs/2303.02190 | Lightweight VPR aggregation, 94.6% R@1 Pitts250k |
| S07 | L2 | Lindenberger et al., LightGlue: Local Feature Matching at Light Speed | https://github.com/cvg/LightGlue | Real-time matcher (with SuperPoint) |
| S08 | L2 | Potje et al., XFeat: Accelerated Features for Lightweight Image Matching (CVPR 2024) | https://openaccess.thecvf.com/content/CVPR2024/papers/Potje_XFeat_Accelerated_Features_for_Lightweight_Image_Matching_CVPR_2024_paper.pdf ; https://github.com/verlab/accelerated_features | 5× faster than LightGlue, designed for embedded; semi-dense option |
| S09 | L2 | Leroy et al., Grounding Image Matching in 3D with MASt3R (ECCV 2024) | https://arxiv.org/abs/2406.09756 | Cross-view 3D-grounded matching; +30% AUC on Map-free |
| S10 | L3 | fettahyildizz/superpoint_lightglue_tensorrt (TRT 8.5.2.2, dynamic shapes) |
https://github.com/fettahyildizz/superpoint_lightglue_tensorrt | TensorRT-ready SuperPoint+LightGlue C++ |
| S11 | L3 | yuefanhao/SuperPoint-LightGlue-TensorRT |
https://github.com/yuefanhao/SuperPoint-LightGlue-TensorRT | RTX3080 baseline: SP 0.95 ms + LG 2.54 ms @ 320×240 = 286 FPS |
| S12 | L3 | qdLMF/LightGlue-with-FlashAttentionV2-TensorRT (Jetson Orin NX, CUTLASS plugin) |
https://github.com/qdLMF/LightGlue-with-FlashAttentionV2-TensorRT | Jetson Orin–class deployment proof |
| S13 | L3 | fabio-sim/LightGlue-ONNX (FP8) |
https://github.com/fabio-sim/LightGlue-ONNX | ONNX/TRT path for matchers |
| S14 | L1 | NVIDIA — JetPack 6.2 brings Super Mode to Jetson Orin Nano and Orin NX | https://developer.nvidia.com/blog/nvidia-jetpack-6-2-brings-super-mode-to-nvidia-jetson-orin-nano-and-jetson-orin-nx-modules/ | Confirms 67 TOPS sparse INT8, 15/25 W/MAXN SUPER modes, 8 GB shared LPDDR5 |
| S15 | L1 | NVIDIA — Jetson Orin Nano / Orin NX / AGX Orin Power & Performance | https://docs.nvidia.com/jetson/archives/r35.6.1/DeveloperGuide/SD/PlatformPowerAndPerformance/ | Power-mode specifics, throttling behaviour |
| S16 | L1 | ArduPilot — MAVProxy GPSInput module | https://ardupilot.org/mavproxy/docs/modules/GPSInput.html | GPS1_TYPE=14 (MAVLink); GPS_INPUT message fields |
| S17 | L1 | ArduPilot — MAVProxy GPSInput source | https://github.com/ArduPilot/MAVProxy/blob/master/MAVProxy/modules/mavproxy_GPSInput.py | Reference impl for GPS_INPUT injection |
| S18 | L3 | mavlink/MAVSDK-Python issue #320 — Input external gps through mavsdk | https://github.com/mavlink/MAVSDK-Python/issues/320 | MAVSDK has no native GPS_INPUT support — must use pymavlink |
| S19 | L1 | PX4 PR #21244, #23366 — Add GPS spoofing state / EKF2 spoofing GPS check | https://github.com/PX4/PX4-Autopilot/pull/21244 ; https://github.com/PX4/PX4-Autopilot/pull/23366 | PX4 spoofing flag, ~1 s hysteresis; EKF2 disables GNSS fusion when spoofed |
| S20 | L1 | PX4 PR #23346 — EKF2 fix timeout after gps failure | https://github.com/PX4/PX4-Autopilot/pull/23346 | Dead-reckoning timeout logic |
| S21 | L1 | PX4 issue #23970 — COM_POS_FS_DELAY does not take effect | https://github.com/PX4/PX4-Autopilot/issues/23970 | Failsafe delay parameter behaviour (default 1 s) |
| S22 | L1 | Google — Map Tiles API Policies | https://developers.google.com/maps/documentation/tile/policies | Explicit prohibition: "Offline uses … Image analysis, Machine interpretation, Object detection or identification, Geodata extraction or resale" |
| S23 | L1 | Google — Maps Platform Terms of Service | https://developers.google.com/maps/terms | Prohibits use "with any products, systems, or applications for … any systems or functions for automatic or autonomous control of vehicle behavior" |
| S24 | L1 | Microsoft — Bing Maps Terms of Use (April 2024) | https://www.bingmapsportal.com/terms/TermsApril2024 | Bing tiles cannot be cached/stored offline; tile URLs are not stable |
| S25 | L1 | Maxar/Vantor — Vivid Mosaic 30 cm Basemaps | https://maxar.com/precision ; https://developers.maxar.com/docs/ordering/guides/vivid-standard-30 | 30 cm global mosaic (135 M km²), 15 cm urban mosaic (7 M km²), AI change detection refresh; ~$25–32/km² archive |
| S26 | L1 | Airbus — Order Pléiades Neo (30 cm) | https://space-solutions.airbus.com/imagery/how-to-order-imagery-and-data/how-to-order-pleiades-neo/ | Pléiades Neo 30 cm, OneAtlas tasking; ~€5–8.50/km² volume tier |
| S27 | L1 | Planet Community — Commercial imagery pricing | https://community.planet.com/advanced-analysis-apis-81/commercial-imagery-pricing-4926 | SkySat / PlanetScope pricing tiers |
| S28 | L3 | EOX — Sentinel-2 cloudless (s2maps.eu) | https://s2maps.com/ | Free 10 m/px global mosaic; updated annually; CC-BY-NC for non-commercial |
| S29 | L3 | UAV Coach — GSD calculator | https://uavcoach.com/gsd-calculator/ | GSD = (alt × sensor_w) / (focal × image_w); validates ~24 cm/px at 1 km AGL with full-frame 24 mm |
| S30 | L2 | Mid-Air dataset (synthetic, quadcopter, IMU + GPS + 420k frames) | https://midair.ulg.ac.be/ | Training-time augmentation candidate (synthetic) |
| S31 | L2 | AgriLiRa4D (LiDAR + 4D radar + IMU, 5–18 m AGL agriculture) | https://arxiv.org/html/2512.01753v1 | Out of altitude band — only useful for SLAM regression baselines |
| S32 | L2 | Survey & comparison of ORB-SLAM3 / VINS-Fusion / DROID-SLAM / RTAB-Map | https://article.isarpublisher.com/viewArticle/Numerical-Evaluation-and-Comparative-Analysis-of-Visual-Inertial-SLAM-Algorithms-ORB-SLAM3-VINS-Fusion-DROID-SLAM-and-RTAB-Map | VIO drift baselines |
| S33 | L3 | nicholasaleks/Damn-Vulnerable-Drone wiki — GPS Data Injection | https://github.com/nicholasaleks/Damn-Vulnerable-Drone/wiki/GPS-Data-Injection | Confirms ArduPilot blends GPS sources by quality; security implications of GPS_INPUT |
| S34 | L1 | QGroundControl — StatusTextHandler / RequestMessageState API | https://api.qgroundcontrol.com/master/classStatusTextHandler.html | STATUSTEXT pipeline used for companion-computer comms |
| S35 | L4 | mavlink/qgroundcontrol issue #7599 — Display Companion Status on QGC | https://github.com/mavlink/qgroundcontrol/issues/7599 | Companion-computer status display gap; ONBOARD_COMPUTER_STATUS workflow |
| S36 | L2 | Bian et al., ViewBridge: Revisiting Cross-View Localization from Image Matching (arXiv 2508.10716, 2025) | https://arxiv.org/abs/2508.10716 | CVFM benchmark, 32,509 cross-view pairs, BEV projection + similarity refinement |
| S37 | L2 | OrthoLoC (2025) — UAV-to-orthographic 6-DoF localization with AdHoP refinement | (referenced in cross-view SOTA results) | Compatible with any matcher; ↑95% match quality, ↓63% translation error |
| S38 | L3 | LAND INFO — Satellite imagery pricing | https://www.landinfo.com/satellite-imagery-pricing.html | Cross-vendor reference pricing (WV-3/4 30 cm pansharpened: $25.50–32.50/km² archive vs new) |
| S39 | L2 | Cross-view UAV-satellite matching survey (MDPI Sensors 2024) | https://www.mdpi.com/1424-8220/24/12/3719 | RDS 84.40%, MA@20 83.35% — practical accuracy ceiling for cross-view in mostly-nadir setup |
Coverage notes
- Multiple L1/L2 sources for every quantitative AC line (accuracy, MRE, latency, hardware envelope, tile size).
- The Google Maps + Bing Maps offline-prohibition findings have two L1 sources each (terms of service + dev-platform AUP).
- The "fixed-wing 1 km AGL with public IMU" gap is a finding, not a fixable source — no public dataset matches all four constraints simultaneously.
Mode B (Solution Assessment) sources — appended 2026-04-26
| ID | Tier | Title | URL | Used for |
|---|---|---|---|---|
| S40 | L1 | NVIDIA Jetson AI Lab — Benchmarks (DINOv2-base-patch14, ViT-base, CLIP-ViT-base) | https://www.jetson-ai-lab.com/archive/benchmarks.html | Measured Orin Nano Super throughput: DINOv2-base-patch14 = 126 inf/s (Super), 75 inf/s (original); CLIP-ViT-base/16 = 161 inf/s; ViT-base/16 = 158 inf/s. Real numbers for AnyLoc backbone (W2.a / W9.a). |
| S41 | L1 | ArduPilot — Non-GPS Position Estimation (dev docs) | https://ardupilot.org/dev/docs/mavlink-nongps-position-estimation.html | ODOMETRY is the preferred external-nav method in ArduPilot (over VISION_POSITION_ESTIMATE and over GPS_INPUT for non-GPS-substitute use). Carries quaternion, velocity, 21-element pos+attitude covariance, and a quality field (-1=failed → 100=best). VISO_QUAL_MIN gates ignored messages. |
| S42 | L1 | ArduPilot PR #19563 — VisualOdom: Support ODOMETRY mavlink message | https://github.com/ArduPilot/ardupilot/pull/19563 | ODOMETRY support landed Dec 2021 for the Plane stack as well as Copter; tested with ModalAI VOXL VIO. |
| S43 | L1 | ArduPilot PR #30080 — External nav+gps fix | https://github.com/ArduPilot/ardupilot/pull/30080 | Active 2025 work on source-switching when running external nav alongside GPS — confirms there are real edge cases when migrating between GPS_INPUT and ODOMETRY mid-flight. Relevant to AC-NEW-2 (spoofing-promotion latency). |
| S44 | L1 | ArduPilot Plane — MAVLink2 Signing | https://ardupilot.org/plane/docs/common-MAVLink2-signing.html | Signing is per-link, USB bypasses signing, keys live in FRAM (32-byte secret + timestamp). Configured via Mission Planner. Production-mature in ArduPilot 4.5+ but key-distribution is an operator step. |
| S45 | L3 | mavlink-router issue #436 — Stack-based buffer overflow in ConfFile::get_sections | https://github.com/mavlink-router/mavlink-router/issues/436 | Public, easily-triggered overflow in config-file parsing of mavlink-router. Repo has no formal security policy / no SECURITY.md. Direct attack surface for any project that uses mavlink-router on the companion. |
| S46 | L2 | Ali-bey et al., BoQ: A Place is Worth a Bag of Learnable Queries (CVPR 2024) | https://arxiv.org/abs/2405.07364 ; https://github.com/amaralibey/bag-of-queries | New VPR SOTA (CVPR 2024); cross-attention over learnable queries; works on CNN + ViT backbones; outperforms NetVLAD, MixVPR, EigenPlaces + outperforms two-stage (Patch-NetVLAD, TransVPR, R2Former) at lower cost. DinoV2 results added Nov 2024. |
| S47 | L2 | Izquierdo & Civera, DINOv2 SALAD: Optimal Transport Aggregation for VPR (CVPR 2024) | https://serizba.github.io/salad.html ; https://github.com/serizba/salad | DINOv2 + Sinkhorn-based optimal-transport VLAD aggregation; R@1 75% on MSLS Challenge, 92.2% on MSLS Val, 76% on NordLand. Already in aero-vloc benchmark, so we get an apples-to-apples bench against AnyLoc/MixVPR/EigenPlaces. |
| S48 | L2 | Shen et al., GIM: Learning Generalizable Image Matcher From Internet Videos (ICLR 2024 spotlight) | https://arxiv.org/abs/2402.11095 ; https://github.com/xuelunshen/gim ; https://xuelunshen.com/gim | Self-training on 50 h of YouTube videos → 8.4–18.1% relative zero-shot improvement over LightGlue / RoMa / DKM / LoFTR baselines. ZEB benchmark (zero-shot evaluation). Same architecture, more general training. |
| S49 | L2 | AerialExtreMatch: A Benchmark for Extreme-View Image Matching and UAV Localization | https://openreview.net/forum?id=5a5T3IW2B6 | 1.5 M synthetic image-pair benchmark with 32 difficulty levels (overlap × scale × pitch). Real-world UAV localization subset. Direct measurement of the failure-mode that worries us most. |
| S50 | L2 | 2chADCNN: Template Matching for Season-Changing UAV Aerial Images and Satellite Imagery (MDPI Drones 2023) | https://www.mdpi.com/2504-446X/7/9/558 | Two-channel CNN trained for cross-season UAV↔satellite matching. Useful both as season-robustness baseline and as a target for the bench-off (does the SOTA matcher really need season-aware training, or do generic GIM/RoMa already win?). |
| S51 | L2 | TartanAir V2 — photorealistic synthetic SLAM dataset | https://tartanair.org/ ; https://tartanair.org/modalities.html | 65 environments, 12-camera rig, IMU + LiDAR + depth + semantic + flow + event modalities, custom camera models (pinhole / fisheye / equirectangular). Photorealistic (AirSim-based). Higher fidelity than MidAir. |
| S52 | L2 | Kim — Monocular Visual Odometry for Fixed-Wing Small Unmanned Aircraft Systems (AFIT thesis #2266) | https://scholar.afit.edu/etd/2266 | SOTA monocular VO (SVO, DSO, ORB-SLAM2) tested on real fixed-wing flights — all three had significant difficulty maintaining localisation. Confirms VO-only is not viable; the draft's "VO between satellite anchors" framing is the right answer. |
| S53 | L2 | Quan & Cao, Visual-Inertial Odometry Using High Flying Altitude Drone Datasets (MDPI Drones 2023) | https://www.mdpi.com/2504-446X/7/1/36 | High-altitude VIO performance numbers for the 300–1000 m AGL band — directly applicable to our 1 km AGL operating band; benchmark baseline for AC-1.3. |
| S54 | L1 | mapproxy issue #196 + maplibre/martin mbtiles pool |
https://github.com/mapproxy/mapproxy/issues/196 ; https://github.com/maplibre/martin/blob/738c55e9/mbtiles/src/pool.rs | Operational recipe for MBTiles SQLite under concurrent read+write: WAL mode + connection pool + transaction batching. Non-WAL MBTiles is the typical reason "MBTiles is slow" complaints exist. |
| S55 | L1 | Python.org — Free-threaded mode (Python 3.13) | https://docs.python.org/3.13/howto/free-threading-python.html ; https://py-free-threading.github.io/ | Free-threading is experimental in 3.13; has "substantial single-threaded performance hit"; many C extensions don't support it; GIL auto-re-enables on import of non-FT-aware extensions. Not v1-ready. |
| S56 | L2 | Lazarski et al. — Terrain Analysis in Eastern Ukraine (Kharkiv-region UAV survey, IEEE 2018) | https://ieeexplore.ieee.org/document/8441556 ; http://www.50northspatial.org/medium-cost-uav-mapping/ | Eastern-Ukraine relief amplitude ≈ 24 m peak-to-trough in Kharkiv test areas, with creek + gully (yary) systems. Quantifies the residual error of the flat-Earth ortho assumption (R-Terrain). |
| S57 | L1 | aedelon/mast3r-runtime | https://github.com/aedelon/mast3r-runtime | MASt3R inference runtime: Jetson Orin support listed as "Planned", not implemented. Plus Speedy MASt3R paper achieves 91 ms/pair on A40 GPU — Jetson Orin Nano Super is roughly 1/30 of A40 throughput, putting MASt3R at ~3 s/pair on our target hardware. |
Mode B Round 2 (component-replacement deep-dive) — appended 2026-04-26
| ID | Tier | Title | URL | Used for |
|---|---|---|---|---|
| S58 | L2 | Yang et al., LiteSAM: Lightweight and Robust Feature Matching for Satellite and Aerial Imagery (Remote Sensing 17(19):3349, MDPI, Oct 2025) | https://www.mdpi.com/2072-4292/17/19/3349 ; https://github.com/boyagesmile/LiteSAM | Purpose-built satellite↔aerial matcher. 6.31 M params (2.4× smaller than EfficientLoFTR's 15.05 M); RMSE@30 = 17.86 m on UAV-VisLoc (beats EfficientLoFTR); 61.98 ms / pair on standard GPU; 497.49 ms / pair on Jetson AGX Orin (= 22.9% / 19.8% faster than EfficientLoFTR-optimized). Components: TAIFormer (token-aggregation transformer with conv token mixer) + MinGRU dynamic sub-pixel refinement. |
| S59 | L1 | leftfield-geospatial/orthority — Python orthorectification toolkit | https://orthority.readthedocs.io/ ; https://github.com/leftfield-geospatial/orthority ; https://pypi.org/project/orthority/ | Per-image orthorectification as a Python library (frame + RPC camera models, GeoTIFF DEM, RPC refinement, pan-sharpening). Successor of dugalh/simple-ortho. Pip/conda installable; CLI + API. Direct fit for Component 1b's per-frame ortho step (replaces hand-rolled pinhole-on-DEM code). |
| S60 | L2 | Korovko et al. (NVIDIA), cuVSLAM: CUDA-Accelerated Visual Odometry and Mapping (arXiv 2506.04359, Jul 2025) | https://arxiv.org/abs/2506.04359 ; https://github.com/nvidia-isaac/cuVSLAM ; https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_visual_slam | NVIDIA's CUDA-accelerated VSLAM, explicitly optimized for Jetson edge devices. Modular front-end (Shi-Tomasi GFTT keypoints + LK pyramidal tracking + NCC consistency check) and back-end (sparse bundle adjustment + pose-graph optimization + loop closure). Supports 1 → 32 cameras, monocular + monocular-depth + stereo + multi-stereo, optional IMU. <1 % ATE on KITTI; <5 cm on EuRoC, real-time on Orin platforms. Apache-2.0. Drop-in via isaac_ros_visual_slam ROS 2 package. |
| S61 | L2 | Liao, DPVO-QAT++: Heterogeneous QAT and CUDA Kernel Fusion for High-Performance Deep Patch Visual Odometry (arXiv 2511.12653, Nov 2025) | https://arxiv.org/abs/2511.12653 ; https://arxiv.org/html/2511.12653v1 | Quantization-aware training + CUDA kernel fusion for DPVO front-end (back-end stays FP32). On RTX-4060: +52% FPS (TartanAir), +30% FPS (EuRoC), −37–65 % peak GPU memory, ATE preserved. Confirms the "deployment gap" framing: even DPVO-QAT++ is benchmarked on RTX-4060, NOT on Jetson — Orin Nano Super extrapolation puts plain DPVO at ≈4–10 FPS (well under our 10 Hz inference target). |
| S62 | L2 | Murai et al. (Imperial / NVIDIA), MASt3R-SLAM: Real-Time Dense SLAM with 3D Reconstruction Priors (CVPR 2025) | https://arxiv.org/abs/2412.12392 ; https://github.com/rmurai0610/MASt3R-SLAM ; https://opencv.org/mast3r-slam/ | Dense monocular SLAM built on MASt3R prior. 15 FPS on a single GPU; outperforms DROID-SLAM on EuRoC + 7-Scenes; calibration-free. No Jetson port; given Speedy MASt3R = 91 ms/pair on A40, MASt3R-SLAM on Orin Nano Super is sub-1-Hz → infeasible for inline v1 use. Useful as offline ground-truth oracle or future-track candidate. |
| S63 | L2 | Edstedt et al., RoMa v2: Harder Better Faster Denser Feature Matching (arXiv 2511.15706, Nov 2025) | https://arxiv.org/abs/2511.15706 ; https://github.com/Parskatt/romav2 | New SOTA dense matcher: frozen DINOv3 backbone + custom CUDA + predictive covariance + decoupled match-then-refine. Best published pose-estimation accuracy. Compute footprint is GPU-class; not a candidate for inline Jetson Orin Nano Super inference, but a plausible offline ceiling reference for the Component-3 bench-off. |
| S64 | L1 | NVIDIA Isaac ROS — Visual SLAM (Jetson tutorial + reference implementation) | https://nvidia-ai-iot.github.io/jetson_isaac_ros_visual_slam_tutorial/ ; https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_visual_slam ; https://github.com/bandofpv/VSLAM-UAV | Reference implementation of GPS-denied UAV with cuVSLAM on Jetson Orin Nano + RealSense D435i + MAVROS + PX4 (Hackster.io / bandofpv). Demonstrates the production-deployable path: cuVSLAM publishes ROS 2 pose; MAVROS converts to MAVLink; FC consumes via VISION_POSITION_ESTIMATE / ODOMETRY. ArduPilot variant exists (sidharthmohannair/ros2-ardupilot-sitl-hardware). |
| S65 | L1 | ArduPilot issue #30076 — Fixing ExternalNav + GPS | https://github.com/ArduPilot/ardupilot/issues/30076 | EKF3 incorrectly fuses GPS data simultaneously when ExtNav is the configured POSXY source — root cause was a stray else branch in FuseVelPosNED(). Causes "unstable positions with high variances and reset behavior when position estimates diverge". Documents the double-fusion-is-not-a-feature invariant for our hybrid GPS_INPUT + ODOMETRY plan. Status: PR landed; pin ArduPilot to a fixed version. |
| S66 | L1 | ArduPilot issue #32506 — EKF3 Position Down snaps to ODOMETRY Z value when ExternalNav is not configured as POSZ source | https://github.com/ArduPilot/ardupilot/issues/32506 | Sister bug to #30076: Z-axis snap-to-ODOMETRY when only POSXY uses ExtNav. Reinforces the "only one horizontal position source active at a time" architectural invariant — feeding both GPS_INPUT and ODOMETRY for the same axis is a configuration error, not a feature. Has a direct impact on draft02's M-1 conclusion. |
| S67 | L1 | ArduPilot wiki — EKF Sources (common-ekf-sources.rst) |
https://github.com/ArduPilot/ardupilot_wiki/blob/master/common/source/docs/common-ekf-sources.rst | Authoritative spec for EK3_SRC1_* / EK3_SRC2_* / EK3_SRC3_* and runtime source switching via RC aux or MAVLink. Confirms architectural rule: only one position source per axis at a time; ExtNav is option 6. |
| S68 | L1 | PX4 PR #22262 — EKF2: Error-State Kalman Filter | https://github.com/PX4/PX4-Autopilot/pull/22262 | Confirms PX4 EKF2 is an ESKF (in contrast to ArduPilot's EKF3 which is a classical extended Kalman filter). Real-hardware PX4 testing: ESKF reduces CPU load by ~0.3 % vs total-state EKF on autopilot. Key takeaway: ArduPilot users (us) cannot swap the FC filter to ESKF — the FC-side debate is moot. ESKF only matters for any companion-side filter we choose to add. |
| S69 | L2 | Sola, Quaternion kinematics for the error-state Kalman filter (arXiv 1711.02508) + Madgwick / Solà / Forster references | https://arxiv.org/abs/1711.02508 | Canonical ESKF treatment: nominal + error-state decomposition, tangent-space covariance, retraction through Exp/Log on SO(3) / SE(3). The standard reference for any companion-side ESKF implementation. |
| S70 | L2 | Yu et al., T-ESKF: Transformed Error-State Kalman Filter for Consistent Visual-Inertial Navigation (arXiv 2510.23359, Oct 2025) + Adaptive Covariance and Quaternion-Focused Hybrid ESKF/UKF for VIO (arXiv 2512.17505, Dec 2025) | https://arxiv.org/abs/2510.23359 ; https://arxiv.org/abs/2512.17505 | 2025 advances on top of ESKF: T-ESKF restores observability consistency under partial-yaw observability; Hybrid ESKF/UKF gains +49 % position / +57 % rotation accuracy vs pure ESKF, ~48 % cheaper than full SUKF. Both are research-track; v1 if we run a companion-side filter at all, vanilla ESKF is enough. |
| S71 | L1 | OpenStreetMap Sensors / VINS-Fusion + OpenVINS Jetson Orin Nano integration reports | https://github.com/HKUST-Aerial-Robotics/VINS-Fusion/issues/220 ; https://github.com/rpng/open_vins/issues/421 ; https://github.com/fdcl-gwu/openvins_jetson_realsense | Field reports: VINS-Fusion runs ~15 FPS on Xavier NX after OpenCV pinning; on Orin Nano builds with JetPack 6 + ROS 2 Humble after fixing OpenCV ArUco/CUDA mismatches. Useful as comparison baselines for any cuVSLAM bench-off, not as primary candidates (integration cost dwarfs cuVSLAM's drop-in). |
| S72 | L2 | Quan et al., Visual-Inertial Odometry Using High Flying Altitude Drone Datasets (Drones 7(1):36, MDPI 2023) | https://www.mdpi.com/2504-446X/7/1/36 | High-altitude (40–100 m) VIO field tests: stereo-VIO = 2.186 m error over 800 m trajectory; monocular VIO "acceptable but worse than stereo". Lower bound on the altitude band; our regime is 1 km AGL where motion-parallax VO degrades further (most VO benchmarks assume non-trivial parallax per frame). Reinforces R8. |
| S73 | L2 | Princeton VL — Deep Patch Visual SLAM (DPV-SLAM, ECCV 2024) | https://www.ecva.net/papers/eccv_2024/papers_ECCV/papers/00272.pdf ; https://github.com/iis-esslingen/DPV-SLAM | DPV-SLAM = DPVO + two loop-closure mechanisms. 2.5× faster than DROID-SLAM on EuRoC, 5–7 GB GPU memory vs DROID's 24 GB, 1×–4× real-time on real-world datasets. Same Jetson-deployment caveat as DPVO. |
| S74 | L2 | OrthoLoC + AdHoP — UAV-to-orthographic 6-DoF localization with feature-matcher refinement | (referenced in cross-view SOTA results) | Compatible with any matcher (drop-in refinement layer): up to +95 % matching accuracy / −63 % translation error. Architecturally orthogonal to the matcher choice itself; we can layer this on top of SP+LG / GIM-LG / LiteSAM regardless of which wins the bench-off. |
| S75 | L2 | AerialExtreMatch open-review (1.5 M synthetic pairs, 32 difficulty levels) — methods evaluated table | https://openreview.net/forum?id=5a5T3IW2B6 ; https://github.com/Xecades/AerialExtreMatch | Confirms AerialExtreMatch evaluates 16 representative matchers (detector-based + detector-free), with publicly-available results. Becomes our primary structured-difficulty regression bench (already in draft02 as F-T5b). |
| S76 | L4 | Stack Overflow / Jetson dev forum — Orin Nano FP16/INT8 throughput discussion | https://forums.developer.nvidia.com/t/jetson-orin-nano-fp16-int8-performance/326723 ; https://github.com/ultralytics/ultralytics (YOLO26 Jetson Orin Nano Super benchmark commit 8d4e6e8) | Empirical reference points on Orin Nano Super: FP16 ≈ 4.5 ms / INT8 ≈ 3.8 ms per YOLO26-n inference. Useful sanity-check rate: small TRT engines run in single-digit ms; SP+LG / GIM-LG family fits comfortably in our budget. |
| S77 | L2 | thomasthelliez.com — ROS 2 / Isaac ROS on Jetson Orin Nano Super practical guide + Hackster.io GPS-Denied Drone reference design | https://thomasthelliez.com/blog/isaac-ros-on-nvidia-jetson-orin-nano-super/ ; https://www.hackster.io/bandofpv/gps-denied-drone-with-nvidia-jetson-orin-nano-9f3417 | ROS 2 Humble + JetPack 6 + Isaac ROS 3.2 + cuVSLAM + MAVROS is a working reference architecture on the exact target hardware (Orin Nano Super). Establishes ROS 2 vs DIY Python orchestrator as a real alternative for Component 9. |