# Fact Cards — Draft02 Assessment

## Fact #1
- **Statement**: GTSAM `GPSFactor` works with `Pose3` variables, NOT `Pose2`. `GPSFactor2` works with `NavState`. Neither accepts `Pose2`. For 2D position constraints, use `PriorFactorPoint2` or a custom factor.
- **Source**: [Source #1] https://gtsam.org/doxygen/a04084.html, [Source #2]
- **Phase**: Assessment
- **Target Audience**: GPS-denied UAV navigation developers
- **Confidence**: ✅ High (official GTSAM documentation)
- **Related Dimension**: Factor Graph Design

## Fact #2
- **Statement**: GTSAM 4.2 is stable on pip. GTSAM 4.3 alpha has breaking changes (C++17 migration, Boost removal). Known pip dependency resolution issues for Python bindings (Sept 2025). Production should use 4.2.
- **Source**: [Source #3] https://pypi.org/project/gtsam/
- **Phase**: Assessment
- **Confidence**: ✅ High (PyPI official)
- **Related Dimension**: Factor Graph Design

## Fact #3
- **Statement**: LightGlue-ONNX achieves 2-4x speedup over compiled PyTorch. FP16 works on Turing (RTX 2060). FP8 requires Ada Lovelace/Hopper — falls back to higher precision on Turing. Mixed precision supported since July 2023.
- **Source**: [Source #4] https://github.com/fabio-sim/LightGlue-ONNX
- **Phase**: Assessment
- **Confidence**: ✅ High (official repo, benchmarks)
- **Related Dimension**: Processing Performance

## Fact #4
- **Statement**: SuperPoint and LightGlue are NOT rotation-invariant. Performance degrades significantly at 90°/180° rotations. Practical workaround: try matching at {0°, 90°, 180°, 270°} rotations. SIFT+LightGlue hybrid is proven better for high-rotation UAV scenarios (ISPRS 2025).
- **Source**: [Source #5] issue #64, [Source #6] ISPRS 2025
- **Phase**: Assessment
- **Confidence**: ✅ High (confirmed in official issue + peer-reviewed paper)
- **Related Dimension**: Rotation Handling

## Fact #5
- **Statement**: DINOv2 achieves 86.27 R@1 on DenseUAV benchmark for UAV-to-satellite matching (with adaptive enhancement). Raw DINOv2 performance is lower but still viable for coarse retrieval.
- **Source**: [Source #7] https://ui.adsabs.harvard.edu/abs/2025IRAL...10.2080Y/
- **Phase**: Assessment
- **Confidence**: ✅ High (peer-reviewed)
- **Related Dimension**: Satellite Matching

## Fact #6
- **Statement**: SatLoc-Fusion validates the exact architecture pattern: DINOv2 for absolute geo-localization + XFeat for VO + optical flow for velocity. Achieves <15m error at >2Hz on 6 TFLOPS edge hardware. Uses adaptive confidence-based fusion.
- **Source**: [Source #8] https://www.mdpi.com/2072-4292/17/17/3048
- **Phase**: Assessment
- **Confidence**: ✅ High (peer-reviewed, dataset provided)
- **Related Dimension**: Overall Architecture

## Fact #7
- **Statement**: XFeat is 5x faster than SuperPoint. Runs real-time on CPU. Has built-in matcher for fast matching. Also compatible with LightGlue via xfeat-lightglue trained models (HuggingFace vismatch/xfeat-lightglue). ONNX export available.
- **Source**: [Source #9] CVPR 2024, [Source #10] GitHub
- **Phase**: Assessment
- **Confidence**: ✅ High (CVPR paper + working implementations)
- **Related Dimension**: Feature Extraction

## Fact #8
- **Statement**: DINOv2 VRAM: ViT-S/14 ~300MB (0.05s/img), ViT-B/14 ~600MB (0.1s/img), ViT-L/14 ~1.5GB (0.35s/img). On GTX 1080.
- **Source**: [Source #11] blog benchmark
- **Phase**: Assessment
- **Confidence**: ⚠️ Medium (third-party benchmark, not official)
- **Related Dimension**: Memory Model

## Fact #9
- **Statement**: Copernicus DEM GLO-30 is freely available on AWS S3 without authentication: `s3://copernicus-dem-30m/`. Cloud Optimized GeoTIFFs, 30m resolution, global coverage. Alternative: Sentinel Hub API (requires free registration).
- **Source**: [Source #12] AWS Registry
- **Phase**: Assessment
- **Confidence**: ✅ High (AWS official registry)
- **Related Dimension**: DEM Integration

## Fact #10
- **Statement**: Google Maps Tiles API: 100K free requests/month, 15,000/day, 6,000/min. Requires session tokens (not just API key). $200 monthly credit expired Feb 2025. February 2026: split quota buckets for 2D and Street View tiles.
- **Source**: [Source #13] Google official docs
- **Phase**: Assessment
- **Confidence**: ✅ High (official documentation)
- **Related Dimension**: Satellite Provider

## Fact #11
- **Statement**: Google Maps and Mapbox both use z/x/y Web Mercator tiles (256px). Compatible coordinate systems. Main differences: authentication method (session tokens vs API tokens), max zoom levels (Google: 22, Mapbox: global 16, regional 21+).
- **Source**: [Source #14] Google + Mapbox docs
- **Phase**: Assessment
- **Confidence**: ✅ High (official docs)
- **Related Dimension**: Multi-Provider Cache

## Fact #12
- **Statement**: FastAPI SSE async generators cannot be easily cancelled once awaited. Causes shutdown hangs, connection lingering. Solution: EventPublisher pattern with asyncio.Queue for proper lifecycle management.
- **Source**: [Source #15] sse-starlette issue #99
- **Phase**: Assessment
- **Confidence**: ⚠️ Medium (community report, confirmed by library maintainer)
- **Related Dimension**: API Stability

## Fact #13
- **Statement**: cv2.decomposeHomographyMat returns up to 4 solutions. Can return non-orthogonal rotation matrices. Disambiguation requires: positive depth constraint + calibration matrix K precision. Not just "motion consistent with previous direction."
- **Source**: [Source #16] OpenCV issue #23282
- **Phase**: Assessment
- **Confidence**: ✅ High (confirmed OpenCV issue)
- **Related Dimension**: VO Robustness

## Fact #14
- **Statement**: Pillow CVE-2025-48379: heap buffer overflow in 11.2.0-11.2.1. Fixed in 11.3.0. Image processing pipeline must pin Pillow ≥11.3.0.
- **Source**: [Source #17] NVD
- **Phase**: Assessment
- **Confidence**: ✅ High (CVE database)
- **Related Dimension**: Security

## Fact #15
- **Statement**: DINOv2+SALAD (optimal transport aggregation) outperforms raw DINOv2 CLS token for visual place recognition. Single-stage, no re-ranking needed. 30-minute training. Better suited for coarse retrieval than raw cosine similarity on CLS tokens.
- **Source**: [Source #18] arXiv
- **Phase**: Assessment
- **Confidence**: ✅ High (peer-reviewed)
- **Related Dimension**: Satellite Matching

## Fact #16
- **Statement**: FAISS GPU allocates ~2GB scratch space by default. On 6GB VRAM RTX 2060, GPU faiss would consume 33% of VRAM just for indexing. CPU-based faiss recommended for this hardware profile.
- **Source**: [Source #20] FAISS wiki
- **Phase**: Assessment
- **Confidence**: ✅ High (official wiki)
- **Related Dimension**: Memory Model

## Fact #17
- **Statement**: NaviLoc achieves 19.5m MLE by treating VPR as noisy measurement and optimizing at trajectory level (not per-frame). 16x improvement over per-frame approaches. Validates trajectory-level optimization concept.
- **Source**: [Source #19]
- **Phase**: Assessment
- **Confidence**: ✅ High (peer-reviewed)
- **Related Dimension**: Optimization Strategy

## Fact #18
- **Statement**: Mapbox satellite imagery for Ukraine: no specific update schedule. Uses Maxar Vivid product. Coverage to zoom 16 globally (~2.5m/px), regional zoom 18+ (~0.6m/px). No guarantee of Ukraine freshness — likely 2+ years old in conflict areas.
- **Source**: [Source #14] Mapbox docs
- **Phase**: Assessment
- **Confidence**: ⚠️ Medium (general Mapbox info, no Ukraine-specific data)
- **Related Dimension**: Satellite Provider

## Fact #19
- **Statement**: For 2D factor graphs, GTSAM uses Pose2 (x, y, theta) with BetweenFactorPose2 for odometry and PriorFactorPose2 for anchoring. Position-only constraints use PriorFactorPoint2. Custom factors via Python callbacks are supported but slower than C++ factors.
- **Source**: [Source #2] GTSAM by Example
- **Phase**: Assessment
- **Confidence**: ✅ High (official GTSAM examples)
- **Related Dimension**: Factor Graph Design

## Fact #20
- **Statement**: XFeat's built-in matcher (match_xfeat) is fastest for VO (~15ms total extraction+matching). xfeat-lightglue is higher quality but slower. For satellite matching where accuracy matters more, SuperPoint+LightGlue remains the better choice.
- **Source**: [Source #9] CVPR 2024, [Source #10]
- **Phase**: Assessment
- **Confidence**: ⚠️ Medium (inference from multiple sources)
- **Related Dimension**: Feature Extraction Strategy
