mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 08:41:12 +00:00
15 KiB
15 KiB
Acceptance Criteria Assessment
Scope
- Mode: Mode A Phase 1 — acceptance criteria and restrictions assessment.
- Problem boundary: fixed-wing UAV, downward fixed navigation camera, high-rate IMU over MAVLink, GPS may be denied or spoofed, offline satellite tile cache, eastern/southern Ukraine operating region, onboard Jetson Orin Nano Super.
- Novelty sensitivity: High for onboard AI/VPR, Jetson/TensorRT, and ArduPilot EKF integration; Medium for photogrammetry/GSD and slippy-map math; Low for high-level VO/INS principles.
- Input data observed: 60 nadir-like agricultural/steppe frames with sparse landmarks, ground-truth frame-center coordinates, two Google Maps reference screenshots, no real IMU trace.
Acceptance Criteria
| Criterion | Our Values | Researched Values | Cost/Timeline Impact | Status |
|---|---|---|---|---|
| AC-1.1 / AC-1.2 frame-center accuracy | 80% <50 m, 50% <20 m | Recent UAV GNSS-denied visual localization work reports roughly 15-20 m mean localization error in favorable datasets, while fixed-wing satellite-aided VO demonstrates drift reduction over >17 km rather than a universal meter-level guarantee. The thresholds are plausible if satellite anchors succeed regularly, but they require dataset-specific validation. | Keep, but budget a full evaluation harness and Monte Carlo replay early. | Keep |
| Expected-results threshold for 20 m accuracy | AC says 50%; expected_results/results_report.md says 60% |
This is an internal contradiction, not a research issue. Tests will enforce the stricter 60% if left as-is. | Low effort to correct, high risk if unnoticed because it changes pass/fail. | Needs decision |
| AC-1.3 VO drift between anchors | <100 m VO-only, <50 m IMU-fused | Visual-inertial odometry drift below ~1% of distance is realistic in some outdoor tests; at 60 km/h and 3 Hz, anchor cadence and turn handling dominate. The criterion is feasible if satellite relocalization prevents long VO-only intervals. | Keep, but require explicit anchor-age limits in tests. | Keep |
| AC-1.4 confidence score | 95% covariance ellipse + source label | MAVLink GPS_INPUT supports horizontal/vertical accuracy fields; producing calibrated covariance is feasible but must be statistically validated against false-position budgets. |
Medium effort; requires calibration and reliability testing, not just API plumbing. | Keep |
| AC-2.1 registration rate | >95% normal segments | Plausible only under the definition already scoped: nadir, daylight, season-matched, >=40% overlap. Sparse agricultural frames and active-conflict scene changes make this too optimistic outside that scope. | Keep the scoped definition; add separate degraded-condition metrics later. | Keep |
| AC-2.2 reprojection error | <1.0 px VO, <2.5 px UAV-satellite | VO MRE <1 px is plausible after calibration. Cross-domain UAV-satellite <2.5 px is aggressive because appearance, season, scale, and orthorectification errors dominate. | Keep as a stretch or lab-gated target; do not make it the only production acceptance signal. | Modify |
| AC-3.1 outliers / AC-3.2 sharp turns / AC-3.3 disconnected segments | 350 m outliers; <5% overlap turns; >=3 disconnected segments | These are operationally important and realistic as failure modes. They cannot be solved by VO alone; they require VPR/global retrieval + EKF gating. | High implementation risk; keep because they drive the right architecture. | Keep |
| AC-3.4 relocalization request | >=3 failed frames and >=2 s | At 3 fps, this means the frame-count trigger can fire around 1 s but the time trigger waits 2 s. The combined trigger is coherent. | Low implementation cost; important for operator workflow. | Keep |
| AC-4.1 latency | <400 ms p95 capture-to-FC output, <=10% frame drop | Jetson Orin Nano Super has official 67 TOPS sparse / 8 GB / 25 W mode. DINOv2-base TensorRT examples can run at high FPS, but DINOv2-S GitHub issue data shows ~22-23 ms GPU compute and limited INT8 gain; SuperPoint/LightGlue data on Orin Nano is thin. End-to-end 400 ms is plausible only with conditional VPR and heavy offline preprocessing. | High risk; needs prototype benchmark before implementation decomposition. | Keep with benchmark gate |
| AC-4.2 memory | <8 GB shared LPDDR5 | Feasible only if model set is small, descriptors are tiled/indexed, TensorRT engines are prebuilt, and raw frames are not retained. | Medium risk; memory profiling must be an acceptance test. | Keep |
| AC-4.3 MAVLink output | v1 GPS_INPUT only; ODOMETRY disabled | ArduPilot/MAVProxy documents GPS1_TYPE=14 for MAVLink GPS input. MAVLink says GPS_INPUT is raw sensor input, not global position estimate, so covariance/accuracy fields matter. ArduPilot issue #30076 shows external-nav/GPS fusion risk was real and is now marked closed; v1 GPS_INPUT-only remains conservative, but ODOMETRY should be re-evaluated against the exact ArduPilot release before v1.1. |
Keep v1 GPS_INPUT-only; add version-pinned SITL gate before enabling ODOMETRY. | Keep |
| AC-5 startup/failsafe | TTFF <30 s; fail if no estimate >3 s | Cold-start <30 s is plausible only if TensorRT engines and tile indexes are loaded without first-run compilation. >3 s failover matches the 3 fps / sharp-turn recovery intent. | Medium effort; requires boot profiling and watchdog tests. | Keep |
| AC-6 QGC telemetry | 1-2 Hz downsampled summary, commands via MAVLink | Feasible and appropriately scoped; keeps high-rate data local. | Low/medium depending on command dialect choice. | Keep |
| AC-7 object localization | Frame-center-equivalent in level flight; publish bank/pitch bound outside level flight | This is realistic because AI-camera bank/pitch is unavailable. The bound altitude * sin(angle) correctly exposes the limitation instead of hiding it. |
Keep; API must always return accuracy bound. | Keep |
| AC-8.1 imagery resolution | >=0.5 m/px, ideal 0.3 m/px | Commercial 30 cm imagery is realistic through providers such as Airbus Pléiades Neo and Vantor/Maxar-class constellations, but upstream availability/freshness in active-conflict areas remains a service risk. | Keep; dependency belongs to Suite Satellite Service SLA. | Keep |
| AC-8.2 / AC-NEW-6 freshness | <6 months active sectors, <12 months stable sectors | Operationally justified. It will reduce false positives but increases mission planning/sourcing burden. | Medium/high cost delegated to Satellite Service and cache metadata. | Keep |
| AC-8.3 preprocessing | Offline cache with descriptors | Correct architectural choice for onboard latency and no in-flight network dependency. | Medium offline compute/storage cost. | Keep |
| AC-8.4 / AC-8.5 tile write-back and no raw frame storage | Persist generated tiles, not raw frames | Good storage control and privacy/security posture. Requires tile quality gates to prevent poisoning. | Medium/high because write-back quality scoring is non-trivial. | Keep |
| AC-8.6 VPR chunks | 600-800 m chunks, 40-50% overlap, conditional VPR | Fits the latency evidence: online VPR should be event-triggered, not per-frame. Multi-scale chunks are appropriate for active-conflict scene changes. | Keep; index size and load time need measurement. | Keep |
| AC-NEW-3 FDR | <=64 GB / flight | Feasible because raw frames are excluded. Must include rollover logging so no payload class disappears silently. | Low/medium. | Keep |
| AC-NEW-4 false-position budget | P(error >500 m) <0.1%, P(error >1 km) <0.01% per flight | This is the right safety metric, but it cannot be proven from unit tests alone. It requires calibrated covariance, outlier rejection, and Monte Carlo over representative datasets. | High validation cost; keep as safety gate. | Keep |
| AC-NEW-5 environmental envelope | -20 C to +50 C, 25 W for 8 h, no throttling | DO-160G-style environmental testing is a recognized airborne-equipment pattern; applying it to a small UAV is conservative. The thermal target is realistic only with designed cooling, not a bare dev kit. | Hardware integration and chamber testing required. | Keep |
| AC-NEW-7 cache-poisoning budget | Tile misalignment >30 m <1%, >100 m <0.1% | Correct risk to control, but the thresholds depend on covariance calibration and multi-flight voting. Single-flight promotion in active sectors should remain exceptional and heavily gated. | High validation cost; keep with explicit service-side voting tests. | Keep |
Restrictions Assessment
| Restriction | Our Values | Researched Values | Cost/Timeline Impact | Status |
|---|---|---|---|---|
| UAV type and camera pose | Fixed-wing, fixed downward navigation camera | This fits visual odometry and orthorectification assumptions better than gimbaled imagery. Lack of gimbal stabilization means bank/pitch compensation must come from FC attitude. | Keep; camera/FC time sync is critical. | Keep |
| Operational area | Eastern/southern Ukraine, steppe/agricultural terrain | Sample images confirm low-texture fields, tree lines, roads, sparse structures, and seasonal/appearance risk. This is a hard test for cross-view matching. | Keep; research and tests must avoid urban-only datasets. | Keep |
| Camera spec inconsistency | Problem text says ~6200x4100; restrictions say 20 MP 5472x3648; input data says 26 MP 6252x4168 at 400 m | The repo distinguishes target camera from example data, but the solution needs one authoritative v1 navigation camera/lens for GSD, intrinsics, and latency. | Needs confirmation or the plan will produce conflicting calibration tasks. | Needs decision |
| GSD target | 10-20 cm/px at <=1 km AGL | Formula GSD = sensor width * altitude / (focal length * image width) supports tuning GSD by lens choice. With 23.5 mm sensor width, 6252 px, 25 mm lens: ~6 cm/px at 400 m and ~15 cm/px at 1 km. |
Keep; lens selection must be locked before calibration tasks. | Keep |
| Tile zoom statement | "slippy-XYZ z=20 (~30 cm/px, 512x512)" | OSM zoom table gives z20 = 0.149 m/px at equator for 256 px tiles, about 0.10 m/px at latitude 48; 512 px tile conventions can shift effective zoom. The stated "z=20 ~30 cm/px" is inconsistent unless this uses a custom provider convention. | Needs correction before storage and cache-index tasks. | Needs decision |
| Satellite provider boundary | Onboard consumes Azaion Suite Satellite Service cache only | Correct. Commercial provider contracts, tasking, licensing, and freshness are outside this build but must become Satellite Service SLAs. | Keep. | Keep |
| Hardware | Jetson Orin Nano Super, 8 GB, 25 W | Official specs support the constraint, but thermal and memory limits are tight for multi-model CV. | Keep; prototype benchmark is mandatory. | Keep |
| IMU source | High-rate IMU from FC via MAVLink | Feasible. Test gap remains because current input data has no real IMU trace. Synthetic/SITL IMU is acceptable for early tests but not final validation. | Add real or representative flight IMU capture plan. | Modify |
| Autopilot | ArduPilot only, QGroundControl only | Good scope control. ArduPilot GPS_INPUT path is documented; EKF source/fusion behavior must be version-pinned. | Keep. | Keep |
| Storage | ~10 GB persistent tile cache plus 64 GB FDR | Feasible if tile zoom/resolution is corrected and raw frames remain excluded. | Keep after zoom correction. | Keep |
| No raw photo storage | Tiles only; failure thumbnails <=0.1 Hz | Strong restriction for storage and security; compatible with FDR cap. | Keep. | Keep |
Key Findings
- Most existing ACs are directionally sound and should remain, especially the safety budgets, covariance reporting, freshness gates, GPS_INPUT-only v1 scope, and no-raw-frame storage policy.
- Three items should be resolved before planning proceeds: AC-1.2's 50% vs expected-results 60% contradiction, the authoritative v1 navigation camera/lens, and the tile zoom/resolution convention.
- The 400 ms p95 latency target is plausible only if VPR is conditional and reference descriptors are precomputed; it should be treated as a benchmark gate before implementation tasks are finalized.
- Cross-domain reprojection error <2.5 px is an aggressive lab target. Production acceptance should rely on position error, covariance calibration, registration success, and false-position rejection, not pixel error alone.
- The public evidence supports satellite-aided visual localization as feasible, but the project's operating region is harder than many benchmark datasets because farmland/steppe imagery has sparse stable features and active-conflict areas change quickly.
Recommended Adjustments Before Phase 2
| Decision | Recommendation | Rationale |
|---|---|---|
| AC-1.2 threshold mismatch | Align expected_results/results_report.md with AC-1.2 at 50%, unless the user intentionally wants a 60% stretch target. |
Avoid hidden test/spec disagreement. |
| Navigation camera | Confirm ADTi 20MP 20L V1 + selected lens as v1 target; keep 26 MP images as sample/test data only. | Calibration, GSD, FOV, latency, and orthorectification depend on intrinsics. |
| Tile zoom | Replace "z=20 (~30 cm/px, 512x512)" with an explicit cache convention: provider pixel size, tile matrix, tile dimension, CRS, and latitude-adjusted resolution. | Prevent wrong storage estimates and matcher scale assumptions. |
| IMU validation data | Add a requirement to obtain real FC MAVLink IMU logs or approved SITL-generated IMU traces before final acceptance. | Current sample data cannot validate fusion, covariance, or latency-to-FC behavior. |
| Cross-domain MRE | Mark <2.5 px as lab/stretched diagnostic; keep position/covariance as production gate. | Pixel error does not fully capture orthorectification, map freshness, and geodetic error. |
Sources
- ArduPilot MAVProxy GPSInput documentation, accessed 2026-04-29:
https://ardupilot.org/mavproxy/docs/modules/GPSInput.html - MAVLink common message spec,
GPS_INPUT, accessed 2026-04-29:https://mavlink.io/en/messages/common.html#GPS_INPUT - ArduPilot issue #30076, ExternalNav + GPS fusion behavior, accessed 2026-04-29:
https://github.com/ArduPilot/ardupilot/issues/30076 - NVIDIA Jetson Orin Nano Super technical blog, published 2024-12-17, accessed 2026-04-29:
https://developer.nvidia.com/blog/nvidia-jetson-orin-nano-developer-kit-gets-a-super-boost - NVIDIA JetPack 6.2 Super Mode benchmarks, accessed 2026-04-29:
https://developer.nvidia.com/blog/nvidia-jetpack-6-2-brings-super-mode-to-nvidia-jetson-orin-nano-and-jetson-orin-nx-modules/ - NVIDIA TensorRT issue #4348, DINOv2-S Jetson Orin TensorRT measurements, accessed 2026-04-29:
https://github.com/NVIDIA/TensorRT/issues/4348 - MDPI Applied Sciences 2024, "Visual Odometry in GPS-Denied Zones for Fixed-Wing Unmanned Aerial Vehicle with Reduced Accumulative Error Based on Satellite Imagery", accessed 2026-04-29:
https://www.mdpi.com/2076-3417/14/16/7420 - MDPI Sensors 2024, "A Cross-View Geo-Localization Algorithm Using UAV Image and Satellite Image", accessed 2026-04-29:
https://www.mdpi.com/1424-8220/24/12/3719 - Airbus Pléiades Neo official imagery page, accessed 2026-04-29:
https://www.airbus.com/en/pleiades-neo-satellite-imagery - Vantor/Maxar WorldView Legion page, accessed 2026-04-29:
https://www.maxar.com/worldview-legion - OpenStreetMap Wiki zoom levels, accessed 2026-04-29:
https://wiki.openstreetmap.org/wiki/Zoom_levels - FAA AC 21-16G / RTCA DO-160G reference, accessed 2026-04-29:
https://www.faa.gov/documentLibrary/media/Advisory_Circular/AC_21-16G.pdf