GPS-Denied Onboard System - System Flows
Flow Inventory
| # |
Flow Name |
Trigger |
Primary Components |
Criticality |
| F1 |
Airframe Provisioning & FC Bootstrap |
Client setup or airframe maintenance |
C-12, C-6, FC, Jetson UI |
High |
| F2 |
Pre-Flight Mission Setup & Tile Fetch |
Operator prepares mission on Jetson UI |
Jetson UI, C-1, C-2, Suite Satellite Service |
High |
| F3 |
In-Flight VO-First Localization |
Nav-cam frame arrives |
C-4, C-2, C-3, C-5, C-6, C-10, C-11 |
High |
| F4 |
Re-Localization Recovery |
Cold start, VO loss, sharp turn, disconnected segment, or sigma_xy > 50 m |
C-2, C-3, C-5, C-7 |
High |
| F5 |
In-Flight Tile Generation & Local Write |
Eligible satellite-anchored frame |
C-1b, C-1, C-10 |
Medium |
| F6 |
Post-Flight Candidate Tile Upload |
Aircraft lands and network is available |
C-1, Suite Satellite Service |
Medium |
| F7 |
Cold Start, Spoofing Promotion & Failsafe |
Boot, GPS-denial signal, or output gap |
C-6, C-7, FC, QGC |
High |
| F8 |
AI-Camera Object Localization |
AI detection system requests object coordinates |
C-8, C-5, MAVROS/FC telemetry |
Medium |
Flow Dependencies
| Flow |
Depends On |
Shares Data With |
| F1 |
Physical wiring and FC access |
F2 and F3 via signed airframe manifest and FC parameter pins |
| F2 |
F1 for manifest and signing; Suite Service connectivity |
F3/F4/F5 via tile cache, mission YAML, VPR index |
| F3 |
F2 for sufficient local cache; F1 for FC integration |
F4 via re-loc triggers; F5 via satellite-anchored pose; F7 via output health |
| F4 |
F2 cache and descriptors; F3 trigger context |
F3 via recovered anchor fix; F7 via failure state |
| F5 |
F3 satellite-anchored pose and tile cache |
F6 via candidate tiles; C-10 via tile-generation events |
| F6 |
F5 candidate tiles and post-flight network |
Future F2 through Suite Service trusted-basemap refresh |
| F7 |
F1 signing and FC params; F3 output health |
F3 via source mode; QGC via status messages |
| F8 |
F3 current pose and FC altitude/attitude |
FDR via object-localization audit records |
Flow F1: Airframe Provisioning & FC Bootstrap
Description
At client setup, the operator or field engineer uses the Jetson UI and Provisioning Tool to make one airframe safe and repeatable for GPS-Denied operation. The output is a signed airframe manifest and a verified FC link.
Preconditions
- Jetson, FC, nav camera, and harness are physically installed.
- FC is reachable over the intended companion link.
- The operator can perform manual physical wiring checks and standard QGC compass/accelerometer calibration.
Sequence Diagram
Flowchart
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
FC |
Provisioning Tool |
Firmware, sysid, current params |
MAVLink |
| 2 |
Provisioning Tool |
FC |
Serial/GPS/EKF params, signing key |
MAVLink commands |
| 3 |
Jetson UI |
Provisioning Tool |
Camera calibration observations |
Guided calibration payload |
| 4 |
Provisioning Tool |
Runtime |
Airframe manifest |
Signed file |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| FC not detected |
FC link check |
No heartbeat |
Stop and repair wiring/link settings. |
| Signing bootstrap fails |
Signing setup |
FC rejects command or verification |
Stop; do not run flight stack unsigned. |
| GPS_INPUT round-trip fails |
Smoke test |
FC does not receive/accept test frame |
Stop and debug params/sysids/signing. |
| Intrinsics calibration incomplete |
Jetson UI |
Missing calibration artifact |
Keep airframe unprovisioned. |
Performance Expectations
| Metric |
Target |
Notes |
| Provisioning duration |
Human-paced |
Safety and correctness matter more than speed. |
| Smoke-test result |
Deterministic pass/fail |
Must run before production flight. |
Flow F2: Pre-Flight Mission Setup & Tile Fetch
Description
Before takeoff, the operator connects to the Jetson UI, defines the route and sector, requests tiles from the Suite Satellite Service, and writes mission YAML next to the local tile cache. This is the only time the aircraft needs Service connectivity for the upcoming mission.
Preconditions
- Airframe provisioning is complete.
- Jetson has pre-flight internet.
- Suite Satellite Service is reachable and authorized.
- The operator knows the intended operational area and sector classes.
Sequence Diagram
Flowchart
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Operator |
Jetson UI |
Route, sector polygon, mission ID |
UI form |
| 2 |
Jetson UI |
Suite Service |
Tile fetch request |
HTTPS/API |
| 3 |
Suite Service |
Tile Cache |
Tiles and metadata |
MBTiles/package contract |
| 4 |
Tile Cache |
VPR Index |
Chunks and descriptors |
Local files / FAISS index |
| 5 |
Jetson UI |
Runtime |
Mission configuration |
YAML |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Service unavailable |
Tile fetch |
Request fails |
Retry pre-flight; do not assume in-flight fetch. |
| Tile freshness invalid |
Cache validation |
Capture date violates sector budget |
Reject or mark down-confidence per AC-NEW-6. |
| Cache incomplete |
Coverage validation |
Operational area gap |
Block mission-ready status until resolved. |
| Descriptor build fails |
VPR index |
Index missing or corrupt |
Rebuild; block flight if unresolved. |
Performance Expectations
| Metric |
Target |
Notes |
| Initial preload size |
About 700 MB for 400 km2 at z=19 |
Throughput-sensitive but pre-flight only. |
| Runtime dependency |
Zero Service calls in flight |
All needed data must be local before takeoff. |
Flow F3: In-Flight VO-First Localization
Description
For each nav-camera frame, the runtime uses the cheap C-4 motion bridge to propagate pose from the last satellite anchor. Satellite retrieval and matching are not run on every frame; they are invoked on anchor cadence, covariance growth, VO-health triggers, sharp turns, cold start, or disconnected-segment recovery.
Preconditions
- Mission YAML and tile cache are loaded.
- Airframe manifest is valid.
- Camera stream and FC telemetry are live.
- TensorRT engines and descriptor indexes are warmed.
Sequence Diagram
Flowchart
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Nav camera |
Motion bridge / matcher |
Current frame |
ROS 2 image |
| 2 |
FC |
Motion bridge / output |
IMU, attitude, altitude, GPS health |
MAVLink -> ROS 2 |
| 3 |
Tile cache |
VPR / matcher |
Candidate chunks and descriptors |
Local cache/index |
| 4 |
Matcher / VO |
Output stage |
Pose hypotheses and covariance |
ROS 2 messages |
| 5 |
Output stage |
FC |
WGS84 fix and accuracy |
MAVLink GPS_INPUT |
| 6 |
Output stage |
FDR |
Decisions and gates |
FlatBuffers record |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Frame dropped under load |
Camera/runtime |
Queue overflow or skip policy |
Drop up to allowed budget; keep latest-frame processing. |
| VO unhealthy |
Motion bridge |
Low overlap, blur, weak features, inconsistent IMU/attitude, or covariance growth |
Trigger F4 re-localization. |
| Matcher outlier |
Output gate |
Mahalanobis distance exceeds threshold |
Reject, do not down-weight into a false anchor. |
| GPS_INPUT rejected |
FC |
Missing acceptance/round-trip evidence |
Raise health alert and F7 failsafe path. |
Performance Expectations
| Metric |
Target |
Notes |
| Camera-to-FC output |
<400 ms p95 |
Steady-state path is VO-first; satellite matching is cadence/triggered correction, not every-frame work. |
| Frame rate |
3 fps input; up to about 10% drops allowed under load |
Output must not batch. |
| Memory |
<8 GB shared |
Includes TensorRT engines and ROS 2 overhead. |
Flow F4: Re-Localization Recovery
Description
When the system lacks a trustworthy recent anchor, it expands retrieval and matching to recover an absolute pose. This path handles cold start, sharp turns, disconnected segments, sigma_xy growth, and VO failure.
Preconditions
- Tile cache and VPR index cover the current operational area.
- The runtime has an initial or predicted position from FC/VO/dead reckoning.
- LiteSAM and inline matcher engines are installed and warmed according to deployment mode.
Sequence Diagram
Flowchart
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Output stage |
VPR |
Predicted position, sector type, sigma_xy |
Re-loc request |
| 2 |
VPR |
Matcher |
Candidate chunks |
Chunk list |
| 3 |
Matcher/LiteSAM |
Output stage |
Correspondences, pose, covariance |
Pose candidate |
| 4 |
Output stage |
FDR |
Attempt metadata |
FlatBuffers record |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| No candidate chunk |
VPR |
Empty result |
Expand window to K=50; if still empty, no anchor. |
| Stale tile match |
Matcher/output |
Tile freshness metadata invalid |
Reject or downgrade; never emit satellite_anchored from stale tile. |
| LiteSAM too slow |
Fallback |
Exceeds rare-path budget |
Record timeout; continue dead reckoning/failsafe logic. |
Performance Expectations
| Metric |
Target |
Notes |
| Inline re-loc pair latency |
<=200 ms per candidate path target |
Bench-off decides exact settings. |
| LiteSAM fallback |
<=2 s rare-path budget |
Not part of steady-state p95. |
| Cold-start TTFF |
<30 s p95 |
F7 includes full boot budget. |
Flow F5: In-Flight Tile Generation & Local Write
Description
When a frame has a high-confidence satellite-anchored pose, the system may orthorectify it into the z=19 basemap projection and write a candidate tile into the local cache with sidecar metadata.
Preconditions
- Current source label is
satellite_anchored.
- Parent pose sigma_xy <=5 m for hard write eligibility.
- Terrain class is flat or moderate, not rugged.
- DEM and camera intrinsics are available.
Sequence Diagram
Flowchart
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Output stage |
Ortho generator |
Frame, pose, covariance, source label |
ROS 2/local message |
| 2 |
Tile cache |
Ortho generator |
Existing tile metadata |
SQLite/sidecar |
| 3 |
Ortho generator |
Tile cache |
Candidate/soft tile and metadata |
MBTiles transaction |
| 4 |
Ortho generator |
FDR |
Quality, write decision, failure thumbnail reference |
FlatBuffers record |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Orthority latency too high |
F-T14/runtime metric |
>50 ms/frame budget |
Switch implementation to OpenCV + bilinear DEM fallback after validation. |
| Pose covariance too high |
Eligibility |
sigma_xy >5 m |
Skip write; do not poison cache. |
| Service tile overwrite risk |
Dedup/write |
Existing trusted tile within freshness budget |
Do not overwrite service-source tile. |
| Cache write failure |
SQLite/MBTiles |
Transaction fails |
Log event; keep localization running. |
Performance Expectations
| Metric |
Target |
Notes |
| Orthorectification latency |
<=50 ms/frame budget |
Measured on Orin Nano Super. |
| Misaligned tile probability |
>30 m <1%; >100 m <0.1% per flight |
AC-NEW-7 Monte Carlo gate. |
Flow F6: Post-Flight Candidate Tile Upload
Description
After landing, candidate tiles generated during flight are uploaded from the local cache boundary to the Suite Satellite Service candidate pool. The Service owns voting and trusted-basemap promotion.
Preconditions
- Aircraft has landed and post-flight network is available.
- Candidate tiles and sidecars are present.
- Suite Service credentials are available in the approved ground context.
Sequence Diagram
Flowchart
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
Tile cache |
Uploader |
Candidate tiles and sidecars |
Local files/SQLite |
| 2 |
Uploader |
Suite Service |
Candidate upload batch |
Service API contract |
| 3 |
Suite Service |
Uploader |
Accepted/rejected records |
API response |
| 4 |
Uploader |
FDR/log |
Upload summary |
FlatBuffers/log record |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Network unavailable |
Upload |
Connection failure |
Keep candidates pending; retry on next post-flight sync. |
| Service rejects tile |
Service ingest |
Rejection response |
Record reason; do not mark uploaded. |
| Contract mismatch |
Upload payload |
Schema/API error |
Block upload and raise integration issue with ../satellite-service/. |
Performance Expectations
| Metric |
Target |
Notes |
| Upload timing |
Post-flight, not flight-critical |
Can retry without affecting flight safety. |
| Promotion |
Service-owned |
This build never marks tiles trusted. |
Flow F7: Cold Start, Spoofing Promotion & Failsafe
Description
This flow covers safety state changes around boot, GPS denial/spoofing, promotion to primary GPS substitute, and output failure. It keeps FC behavior explicit and makes QGC telemetry a status surface, not a control-plane dependency.
Preconditions
- FC is configured by F1.
- Runtime has access to FC GPS/EKF health telemetry.
- Mission cache is loaded for cold-start matching.
Sequence Diagram
Flowchart
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
FC |
Runtime |
EKF position, GPS health, status |
MAVLink |
| 2 |
Runtime |
FC |
Signed GPS_INPUT |
MAVLink |
| 3 |
Runtime |
QGC |
Status summary / STATUSTEXT via FC |
MAVLink |
| 4 |
Runtime |
FDR |
Boot, promotion, failsafe events |
FlatBuffers record |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Cold-start no fix |
First re-loc |
TTFF budget exceeded |
Continue re-loc, report degraded, FC continues own fallback behavior. |
| Spoofing not promoted |
Health monitor |
Promotion >3 s |
Fails AC-NEW-2; record and investigate. |
| Output gap |
Runtime output |
>3 s without fix |
FC falls back to IMU-only dead reckoning. |
| Signing failure |
MAVLink link |
FC rejects frames |
Do not bypass signing in flight; report unsafe state. |
Performance Expectations
| Metric |
Target |
Notes |
| Cold-start first fix |
<30 s p95 |
From companion boot to first valid GPS_INPUT. |
| Spoofing promotion |
<3 s p95 |
From FC GPS-denial signal. |
| Failsafe output gap |
>3 s |
FC fallback threshold. |
Flow F8: AI-Camera Object Localization
Description
Other onboard AI systems can request the coordinates of an object detected by the AI camera. The system projects the object using current GPS-Denied position, altitude, AI-camera gimbal angle, zoom, and level-flight assumptions.
Preconditions
- Current GPS-Denied position estimate is available with confidence.
- AI-camera gimbal angle and zoom are available.
- Flight altitude is available.
- Request is scoped to level flight accuracy unless the caller accepts the published maneuvering error bound.
Sequence Diagram
Flowchart
Data Flow
| Step |
From |
To |
Data |
Format |
| 1 |
AI system |
Object localization |
Object detection and camera metadata |
Local API/topic |
| 2 |
Output stage |
Object localization |
Current pose and confidence |
Runtime state/topic |
| 3 |
FC |
Object localization |
Altitude and attitude |
MAVLink/ROS 2 |
| 4 |
Object localization |
AI system |
Object WGS84 and error bound |
Response DTO/message |
Error Scenarios
| Error |
Where |
Detection |
Recovery |
| Pose unavailable |
C-5 current state |
No current estimate or high sigma_xy |
Return unavailable; do not invent coordinates. |
| Maneuvering flight |
FC attitude |
bank/pitch >=5 degrees |
Publish bounded error, lower confidence. |
| Missing gimbal/zoom |
AI-camera metadata |
Required field absent |
Reject request with explicit missing input. |
Performance Expectations
| Metric |
Target |
Notes |
| Response latency |
Near-real-time local call |
Not on FC safety-critical path. |
| Accuracy |
Consistent with frame-center accuracy in level flight |
AC-7.1/AC-7.2 scoped behavior. |