GPS-Denied Onboard Localization — System Flows
Flow Inventory
| # |
Flow Name |
Trigger |
Primary Components |
Criticality |
| F1 |
Pre-flight cache preparation |
Operator sync before mission |
Satellite Service, cache/tile lifecycle, satellite retrieval |
High |
| F2 |
Normal frame processing |
Navigation frame + FC telemetry |
Camera ingest, BASALT VIO adapter, safety/anchor wrapper, MAVLink, FDR |
High |
| F3 |
Satellite relocalization |
Cold start, VO failure, sharp turn, covariance growth, stale anchor |
Satellite retrieval, anchor verification, safety/anchor wrapper |
High |
| F4 |
Visual blackout / spoofing degraded mode |
Image-quality failure and GPS health failure |
Camera ingest, MAVLink telemetry, safety/anchor wrapper, QGC, FDR |
Critical |
| F5 |
Generated tile lifecycle |
High-confidence pose + usable frame |
Camera ingest, safety/anchor wrapper, cache/tile lifecycle, FDR |
Medium |
| F6 |
Post-flight sync and audit |
Landing / operator offload |
Cache/tile lifecycle, Satellite Service, FDR |
Medium |
| F7 |
Validation replay |
Test harness invocation |
Validation harness, system runtime, public datasets, SITL |
High |
Flow Dependencies
| Flow |
Depends On |
Shares Data With |
| F1 |
Satellite Service cache export |
F2, F3, F5 |
| F2 |
F1 for cache availability; FC telemetry |
F3, F4, F5, FDR |
| F3 |
F1 cache/index; F2 state estimate |
F2, F5 |
| F4 |
F2 telemetry and quality signals |
F2, QGC/FDR |
| F5 |
Accepted state/covariance from F2/F3 |
F6 |
| F6 |
F5 generated tiles and FDR |
Satellite Service |
| F7 |
Test fixtures and selected execution environment |
All flows |
Flow F1: Pre-Flight Cache Preparation
Description
Before flight, the Satellite Service provides an offline cache for the operational area, including COG tiles, manifests, sidecars, VPR chunks, descriptors, and FAISS index files.
Preconditions
- Operational area and sector freshness classification are known.
- Cache imagery meets 0.5 m/px minimum and ideally 0.3 m/px.
- Cache package fits storage budget or has approved split descriptor budget.
Sequence Diagram
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Satellite Service |
Cache lifecycle |
Tiles and metadata |
COG + PostgreSQL/PostGIS manifest + signed JSON sidecars |
| 2 |
Cache lifecycle |
Satellite retrieval |
Descriptor/index files |
FAISS index + descriptor sidecars |
| 3 |
Cache lifecycle |
Operator/FDR |
Validation report |
Markdown/CSV/log |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Stale tile |
Cache validation |
Capture date exceeds sector threshold |
Reject/down-confidence tile |
| Hash mismatch |
Cache validation |
Sidecar hash mismatch |
Reject tile and report security event |
| Cache too large |
Cache load |
Storage accounting > budget |
Require cache rebuild or approved split budget |
Performance Expectations
| Metric |
Target |
Notes |
| Runtime network calls |
0 |
No in-flight provider calls |
| Cache load |
Within cold-start budget contribution |
Exact threshold set during implementation |
Flow F2: Normal Frame Processing
Description
During normal flight, the system processes each navigation frame and FC telemetry sample. The camera component first checks for total occlusion/blackout. Usable frames go to BASALT VIO; total-occlusion frames bypass VIO and send the wrapper into IMU-only degraded propagation.
Preconditions
- Camera calibration/extrinsics are loaded.
- BASALT and wrapper are initialized.
- FC telemetry stream is healthy.
Sequence Diagram
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Camera ingest |
BASALT adapter or safety wrapper |
Frame metadata, image, occlusion status |
Frame DTO / DegradationSignal |
| 2 |
FC telemetry |
BASALT adapter |
IMU/attitude/altitude |
MAVLink-derived telemetry DTO |
| 3 |
BASALT adapter |
Safety wrapper |
Relative VIO state |
VioState DTO |
| 4 |
Safety wrapper |
MAVLink output |
WGS84 estimate |
GPS_INPUT |
| 5 |
Safety wrapper |
FDR |
Inputs/outputs/audit |
FDR segment event |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Total occlusion / blackout |
Camera ingest |
Occlusion status, exposure/texture/decode checks |
Bypass BASALT, enter IMU-only dead_reckoned propagation |
| Frame unreadable |
Camera ingest |
Decode/quality failure |
Mark visual signal degraded and bypass BASALT for that frame |
| VIO quality low |
BASALT adapter |
Tracking/completion metrics |
Trigger relocalization or dead reckoning |
| Covariance grows |
Safety wrapper |
Covariance threshold |
Degrade fix type/source label |
Performance Expectations
| Metric |
Target |
Notes |
| End-to-end latency |
<400 ms p95 |
Frame input to emitted estimate |
| Dropped frames |
<=10% sustained |
Under load |
| Memory |
<8 GB shared |
Jetson limit |
Flow F3: Satellite Relocalization
Description
When the state becomes uncertain or disconnected, the system retrieves satellite/cache candidates and accepts an anchor only after local verification and safety gates pass.
Preconditions
- Offline VPR chunks and FAISS index are loaded.
- Trigger condition is met: cold start, VO failure, sharp turn, disconnected segment, covariance growth, or stale anchor.
Sequence Diagram
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Safety wrapper |
Satellite retrieval |
Query frame and prior/covariance |
Relocalization DTO |
| 2 |
Satellite retrieval |
Anchor verification |
Top-K chunks |
Candidate list |
| 3 |
Anchor verification |
Safety wrapper |
MRE, inliers, homography, provenance |
AnchorDecision DTO |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| No good candidate |
Retrieval/verification |
Low score or failed RANSAC |
Continue degraded and request GCS hint after threshold |
| Stale candidate |
Cache lifecycle |
Capture date gate |
Reject/down-confidence |
| Implausible anchor |
Safety wrapper |
Mahalanobis/impossible velocity gate |
Reject and log |
Performance Expectations
| Metric |
Target |
Notes |
| Invocation frequency |
Trigger-based only |
Not per-frame |
| Cross-domain MRE |
<2.5 px for accepted anchors |
AC-2.2 |
Flow F4: Visual Blackout / Spoofing Degraded Mode
Description
When visual localization is unavailable due to total occlusion/blackout and GPS is denied/spoofed, the wrapper switches to honest IMU-only propagation from the last trusted state and degrades MAVLink output based on covariance/time thresholds.
Preconditions
- Last trusted state exists.
- FC telemetry continues.
Sequence Diagram
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Blackout >30 s |
Safety wrapper |
Timer threshold |
Emit no-fix/failsafe |
| Covariance >500 m |
Safety wrapper |
Covariance threshold |
fix_type=0, horiz_accuracy=999.0 |
| Spoofed GPS recovers |
Safety wrapper |
FC health + visual consistency gate |
Re-enable only after required stable interval and visual/satellite consistency |
Performance Expectations
| Metric |
Target |
Notes |
| Mode transition |
<=1 processed frame or <=400 ms |
AC-3.5 |
| QGC status |
1-2 Hz |
Downsampled operator awareness |
Flow F5: Generated Tile Lifecycle
Description
When pose confidence is strong enough, the system orthorectifies navigation imagery into write-new generated tiles and records quality/provenance sidecars.
Preconditions
- Parent pose covariance passes tile-write gate.
- Frame quality supports orthorectification.
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Safety wrapper |
Cache lifecycle |
Pose/covariance + frame metadata |
TileGenerationRequest |
| 2 |
Cache lifecycle |
Local storage |
Generated COG + sidecar |
COG + signed JSON |
| 3 |
Cache lifecycle |
FDR |
Tile write event |
FDR event |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Parent covariance too high |
Safety wrapper |
Sigma gate |
Do not write tile |
| Duplicate sector |
Cache lifecycle |
Spatial deduplication |
Keep latest/highest-quality tile |
| Sidecar write failure |
Cache lifecycle |
I/O error |
Log and do not mark tile eligible |
Flow F6: Post-Flight Sync And Audit
Description
After landing, generated tiles and FDR evidence are exported for Satellite Service ingest and incident analysis.
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Cache lifecycle |
Satellite Service |
Generated tile package |
COG + sidecar + manifest delta |
| 2 |
FDR |
Operator/audit tools |
Mission replay evidence |
Segmented logs + optional Parquet export |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Upload unavailable |
Post-flight sync |
Network/service failure |
Retain package for retry |
| Candidate rejected by Service voting |
Satellite Service |
Ingest rules |
Keep as candidate/soft trust, not trusted basemap |
Flow F7: Validation Replay
Description
The validation harness runs deterministic still-image, public dataset, SITL, Jetson, and representative replay scenarios against public interfaces.
Preconditions
- Test data and expected results are pinned.
- Execution mode is selected: Docker/replay and local Jetson hardware.
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Validation harness |
Runtime |
Images/telemetry/cache fixtures |
File/stream/MAVLink |
| 2 |
Runtime |
Validation harness |
GPS_INPUT/FDR/status |
MAVLink/log files |
| 3 |
Validation harness |
Reports |
Pass/fail metrics |
CSV/Markdown |
Performance Expectations
| Metric |
Target |
Notes |
| PR smoke |
<=15 min |
Still-image/cache/SITL subset |
| Release gate |
Hardware-dependent |
Jetson and representative replay required |