Aero-VPA: Few-Step Flow-Matching Control over Non-Reconstructive JEPA Latents for Agile Flight on Edge Hardware
Organizations: SLING AI Inc., Incheon, Republic of Korea
Abstract
Vision-Language-Action (VLA) models generalize across tasks, but their autoregressive decoders need sequential forward passes in proportion to the action horizon, each bounded below on embedded aerial platforms by streaming billions of parameters from memory. We present Aero-VPA, a lightweight Vision-Predictor-Action architecture for 3D navigation on edge hardware. A compact RGB-D Vision Transformer and a five-head ensemble predictor, trained without pixel reconstruction, forecast the next latent state; a Conditional Flow Matching solver generates a velocity and yaw-rate chunk in two Euler steps, so each decision takes five sequential network evaluations; and the ensemble dispersion drives an uncertainty fallback. Version 1 specified the architecture, deployment and protocol without results. This version reports the first closed-loop evaluation: PX4 software-in-the-loop simulation of quadrotor missions in procedurally generated forests. Behaviour cloning failed on all 60 missions despite open-loop errors of 0.02-0.04 m/s: the policy copies its last command, a copycat form of causal confusion. DAgger with a privileged, safety-gated supervisor gave the first successes but plateaued at 11.1-21.1% across six checkpoints. A map-free runtime shield with a 15 s depth memory, barrier constraints, a cap on motion outside the 73-degree field of view and backoff along the flown path raised the first DAgger policy's success on 180 paired missions from 21.1% to 52.2% (95% CI [45.0, 59.4]; exact McNemar p = 1.2 x 10^-10) and cut its crashes from 72.2% to 22.2%, while timeouts rose from 2.8% to 23.3%. All six checkpoints gained 30.0-34.4 percentage points, at mean speeds of 1.16-1.36 m/s. The code (https://github.com/ylee-sling/Aero-VPA), the trained policy (72.6 MB, https://huggingface.co/ylee-sling/aero-vpa) and the full benchmark dataset are public.
Figures & tables
| Module | Configuration | Params | Evals./decision | FP16 weights |
| Encoder | ViT, input, patch 16, width 384, depth 6, 6 heads | 11.17M | 1 | 22.3 MB |
| Selector | MLP | 0.67M | 1 | 1.3 MB |
| Predictor | 5 heads, MLP | 2.72M | 1 (heads batched) | 5.4 MB |
| Solver | Transformer, width 256, depth 4, 4 heads, tokens | 3.57M | 7.1 MB | |
| Trainable total | 18.13M | sequential | 36.3 MB | |
| Text encoder (frozen) | CLIP ViT-B/32 text tower | 63.4M | once per mission | – |
| SR | CR | p50 / p95 | ||||||
| ID | Method | Params | (%) | (%) | (m/s) | (ms) | (W) | (mJ) |
| B1 | VINS-Fusion + OctoMap + min-snap | – | – | – | – | – / – | – | – |
| B2a | Vision PPO | matched | – | – | – | – / – | – | – |
| B2b | Vision SAC | matched | – | – | – | – / – | – | – |
| B3a | Diffusion Policy (DDIM 10 / 100) | matched | – | – | – | – / – | – | – |
| B3b | Octo-Small, fine-tuned | 27M | – | – | – | – / – | – | – |
| ID | Factor | Levels | Primary readouts | Tests |
|---|---|---|---|---|
| A1 | CFM integration steps | , , SR, CR, chunk error vs. reference | H 1 , H 2 | |
| A2 | Uncertainty threshold attenuation floor | or fallback off; | Pareto, spurious and true fallback rates | H 3 |
| A3 | Attenuation law | none, piecewise linear (Eq. ( 24 )) , exponential | CR, , jerk | H 3 |
| A4 | Braking envelope | off, on | CR in E1/E2, , conservatism | H 3 |
| A5 | Noise persistence | fresh noise, persistent, , persistent, | discontinuity at switches, SR in E3 | H 5 |
| A6 | Latent predictor | removed (reactive CFM), JEPA + VICReg , JEPA without | SR, effective rank of , AUROC | H 4 |
| Policy | Training data | Inputs and recipe |
|---|---|---|
| BC NR | demos | non-residual stage (i); all inputs |
| BC | demos | residual stage (i); all inputs |
| BC | demos | as BC, with withheld |
| D 1 | demos + DAgger round 1 (flown by BC) | all inputs |
| D 2 | demos + rounds 1–2 (round 2 flown by D 1 ) | all inputs |
| D 3 | demos + rounds 1–3 (round 3 flown by D 2 ) | withheld |
| Expert frames | ||||||||
| Policy | swap | swap | image | goal | all of | to only | selector | |
| BC | 0.85 (0.31) | 0.31 (0.86) | 0.01 | 0.01 | 1.14 | 0.00 | 0.02 | 98.0% |
| BC | – | 1.17 (0.21) | 0.03 | 0.02 | 1.14 | 0.00 | 0.04 | 93.6% |
| D 1 | 0.96 (0.15) | 0.17 (1.02) | 0.02 | 0.01 | – | – | – | – |
| D 2 | 0.93 (0.27) | 0.31 (0.99) | 0.02 | 0.01 | – | – | – | – |
| D 3 | – | 1.10 (0.28) | – | – | – | – | – | – |
| Round | Flown by | Missions | Success | Crash | Policy’s share of the flight |
|---|---|---|---|---|---|
| 1 | BC | 201 | 148 (73.6%) | 28 (13.9%) | 50% |
| 2 | D 1 | 201 | 166 (82.6%) | 5 (2.5%) | 63% |
| 3 | D 2 | 201 | 189 (94.0%) | 10 (5.0%) | 64% |
| Comparison (A vs B) | Only A succeeded | Only B succeeded | |
|---|---|---|---|
| D 1 vs D 2 | 29 | 14 | 0.0315 |
| D 1 vs D 3 | 28 | 10 | 0.0051 |
| D 1 vs D 3 | 33 | 19 | 0.0704 |
| D 1 vs D 3,SD | 28 | 18 | 0.184 |
| D 1 vs D 3,KW | 26 | 16 | 0.164 |
| D 2 vs D 3 | 19 | 16 | 0.736 |
| Success | Paired success | Crash (%) | Timeout (%) | ||||
|---|---|---|---|---|---|---|---|
| Checkpoint | U | S [95% CI] | (pp) | both / U / S / neither | U S | U S | |
| D 1 | 38 (21.1%) | 94 (52.2%) [45.0, 59.4] | 26 / 12 / 68 / 74 | 72.2 22.2 | 2.8 23.3 | ||
| D 2 | 23 (12.8%) | 77 (42.8%) [35.8, 50.1] | 14 / 9 / 63 / 94 | 80.0 38.3 | 1.1 16.7 | ||
| D 3 | 20 (11.1%) | 79 (43.9%) [36.8, 51.2] | 11 / 9 / 68 / 92 | 82.2 36.1 | 2.8 14.4 | ||
| D 3 | 24 (13.3%) | 81 (45.0%) [37.9, 52.3] | 11 / 13 / 70 / 86 | 77.2 42.8 | 3.3 10.0 | ||
| D 3,SD | 28 (15.6%) | 82 (45.6%) [38.4, 52.8] | 19 / 9 / 63 / 89 | 76.1 35.0 | 3.3 16.1 | ||
| Dense | Medium | Sparse | ||||
|---|---|---|---|---|---|---|
| Checkpoint | U | S [95% CI] | U | S [95% CI] | U | S [95% CI] |
| D 1 | 4 (6.7%) | 28 (46.7%) [35, 59] | 17 (28.3%) | 29 (48.3%) [36, 61] | 17 (28.3%) | 37 (61.7%) [49, 73] |
| D 2 | 0 (0.0%) | 21 (35.0%) [24, 48] | 9 (15.0%) | 32 (53.3%) [41, 65] | 14 (23.3%) | 24 (40.0%) [29, 53] |
| D 3 | 2 (3.3%) | 23 (38.3%) [27, 51] | 6 (10.0%) | 25 (41.7%) [30, 54] | 12 (20.0%) | 31 (51.7%) [39, 64] |
| D 3 | 1 (1.7%) | 17 (28.3%) [19, 41] | 6 (10.0%) | 28 (46.7%) [35, 59] | 17 (28.3%) | 36 (60.0%) [47, 71] |
| D 3,SD | 2 (3.3%) | 17 (28.3%) [19, 41] | 9 (15.0%) | 26 (43.3%) [32, 56] | 17 (28.3%) | 39 (65.0%) [52, 76] |
| Success | Paired success | Crashes | ||||
|---|---|---|---|---|---|---|
| Checkpoint | unshielded | shielded [95% CI] | both / only U / only S / neither | U S | ||
| D 1 | 31 | 75 (52.1%) [44.0, 60.1] | 21 / 10 / 54 / 59 | 103 33 | ||
| D 2 | 20 | 64 (44.4%) [36.6, 52.6] | 13 / 7 / 51 / 73 | 112 53 | ||
| D 3 | 15 | 62 (43.1%) [35.3, 51.2] | 8 / 7 / 54 / 75 | 120 51 | ||
| D 3 | 22 | 67 (46.5%) [38.6, 54.7] | 10 / 12 / 57 / 65 | 109 62 | ||
| D 3,SD | 24 | 65 (45.1%) [37.2, 53.3] | 15 / 9 / 50 / 70 | 107 50 | ||
| D 1 , unshielded | + shield v1 | + shield v2 | |
| Success [95% CI] | 7 (19.4%) [10, 35] | 12 (33.3%) [20, 50] | 20 (55.6%) [40, 70] |
| Crashes (collision / ground) | 27 (23 / 4) | 11 (10 / 1) | 9 (7 / 2) |
| Timeouts / camera timeouts | 0 / 2 | 12 / 1 | 7 / 0 |
| Paired with the unshielded run (both / only U / only S) | – | 2 / 5 / 10, | 5 / 2 / 15, |
| Crashes while the shield flew | – | 10 of 11 | 7 of 9 |
| Collisions in view / beside / behind | 13 / 12 / 0 of 25 † | 2 / 4 / 4 of 10 | 6 / 1 / 0 of 7 |
| Per mission | Seconds per mission | Memory | Update | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Checkpoint | backoffs | nudges | stalls | holds | barrier | blind | backoff | nudge | altitude | stale | clear. (m) | p95 (ms) |
| D 1 | 0.87 | 2.05 | 1.35 | 2.42 | 12.9 | 13.6 | 3.7 | 3.0 | 0.3 | 0.1 | 0.42 | 2.9 |
| D 2 | 1.03 | 1.98 | 1.26 | 1.59 | 11.8 | 14.1 | 3.7 | 3.1 | 0.1 | 0.1 | 0.32 | 2.9 |
| D 3 | 1.06 | 2.07 | 1.32 | 1.66 | 12.6 | 17.5 | 4.1 | 3.1 | 0.1 | 0.1 | 0.37 | 2.9 |
| D 3 | 0.91 | 1.72 | 1.11 | 1.35 | 11.1 | 14.4 | 2.6 | 2.6 | 0.0 | 0.0 | 0.33 | 3.0 |
| D 3,SD | 0.96 | 2.22 | 1.49 | 1.19 | 11.9 | 16.5 | 4.0 | 3.2 | 0.0 | 0.0 | 0.36 | 2.9 |
| Medians | Per mission | Seconds | ||||||||
| Ending | waypoints | time (s) | speed (m/s) | clear. (m) | backoffs | nudges | stalls | barrier / blind | ||
| D 1 | success | 94 | 1.00 | 83.1 | 1.24 | 0.60 | 0.50 | 1.36 | 0.86 | 11.7 / 11.4 |
| timeout | 42 | 0.71 | 120.3 | 0.85 | 0.53 | 1.17 | 4.26 | 3.10 | 17.7 / 25.0 | |
| collision | 33 | 0.25 | 50.3 | 1.13 | 0.35 | 1.52 | 1.27 | 0.67 | 11.4 / 7.7 | |
| ground | 7 | 0.50 | 56.0 | 1.08 | 0.40 | 1.43 | 2.57 | 1.14 | 12.8 / 8.1 | |
| camera timeout | 4 | 0.17 | 28.2 | 1.26 | 1.50 | 0.00 | 0.50 | 0.50 | 1.7 / 5.0 | |
Appendix figures & tables9 assets
Supplementary material from the paper’s appendix.
Appendix
| Component | Parameter | Value |
|---|---|---|
| Observation | RGB-D frame; camera | ; HFOV 1.274 rad (73°), depth 0.1–10 m |
| proprioception ; goal | ; , distance saturated at 20 m | |
| waypoint acceptance ; instruction | 1 m; CLIP ViT-B/32 text, 512-d (null embedding) | |
| Action | chunk , knot spacing | 16 knots, 0.02 s (0.32 s) |
| bounds | 7 m/s horizontal, 2 m/s vertical, 1.5 rad/s | |
| (11.17M) | ViT | patch 16, 80 tokens + CLS, width 384, depth 6, 6 heads, |
| Checkpoint | Success | Collision | Ground | Timeout | Camera timeout | Out of bounds | |
|---|---|---|---|---|---|---|---|
| D 1 | U | 38 | 114 | 16 | 5 | 7 | 0 |
| S | 94 | 33 | 7 | 42 | 4 | 0 | |
| D 2 | U | 23 | 133 | 11 | 2 | 10 | 1 |
| S | 77 | 64 | 5 | 30 | 4 | 0 | |
| D 3 | U | 20 | 131 | 17 | 5 | 7 | 0 |
| S | 79 | 55 | 10 | 26 | 7 | 3 |
| Checkpoint | Crashes U | Crashes S | Only U crashed | Only S crashed | |
|---|---|---|---|---|---|
| D 1 | 130 | 40 | 98 | 8 | |
| D 2 | 144 | 69 | 83 | 8 | |
| D 3 | 148 | 65 | 93 | 10 | |
| D 3 | 139 | 77 | 78 | 16 | |
| D 3,SD | 137 | 63 | 83 | 9 | |
| D 3,KW | 145 | 47 | 107 | 9 |
| Against unshielded D 1 | Against D 1 + shield | |||
|---|---|---|---|---|
| Shielded checkpoint | counts | counts | ||
| D 1 | 26 / 12 / 68 / 74 | – | – | |
| D 2 | 17 / 21 / 60 / 82 | 46 / 48 / 31 / 55 | 0.0712 | |
| D 3 | 17 / 21 / 62 / 80 | 50 / 44 / 29 / 57 | 0.101 | |
| D 3 | 19 / 19 / 62 / 80 | 52 / 42 / 29 / 57 | 0.154 | |
| D 3,SD | 22 / 16 / 60 / 82 | 47 / 47 / 35 / 51 | 0.224 | |
| Metric | D 1 | D 2 | D 3 | D 3 | D 3,SD | D 3,KW |
|---|---|---|---|---|---|---|
| Waypoints reached | 38.5% | 28.9% | 27.6% | 31.3% | 29.8% | 31.9% |
| Duration / path (s, m) | 38.7 / 46.1 | 28.9 / 35.1 | 30.6 / 33.3 | 32.7 / 43.5 | 30.1 / 41.4 | 35.5 / 38.6 |
| Fallback onsets per mission | 0.77 | 0.51 | 1.04 | 0.68 | 0.69 | 0.86 |
| Missions with a fallback | 21.1% | 21.1% | 30.6% | 23.3% | 26.1% | 31.1% |
| Braking or holding (s per mission) | 0.1 | 0.1 | 0.2 | 0.1 | 0.1 | 0.2 |
| Time / expert reference | 1.15 | 1.00 | 1.26 | 1.05 | 1.10 | 1.10 |
| Metric | D 1 | D 2 | D 3 | D 3 | D 3,SD | D 3,KW |
|---|---|---|---|---|---|---|
| Waypoints reached | 76.6% | 68.4% | 65.9% | 62.2% | 68.9% | 72.9% |
| Duration / path (s, m) | 86.3 / 95.4 | 77.9 / 88.0 | 76.1 / 90.5 | 60.7 / 81.2 | 77.6 / 90.0 | 82.2 / 93.5 |
| Fallback onsets per mission | 1.53 | 1.13 | 1.39 | 1.04 | 1.32 | 1.25 |
| Missions with a fallback | 30.0% | 32.2% | 34.4% | 33.9% | 36.7% | 34.4% |
| Braking or holding (s per mission) | 0.3 | 0.2 | 0.2 | 0.1 | 0.2 | 0.2 |
| Time / expert reference | 1.26 | 1.22 | 1.27 | 1.12 | 1.22 | 1.22 |
| Checkpoint | Dense | Medium | Sparse |
|---|---|---|---|
| D 1 | 28 / 17 / 15 | 29 / 16 / 15 | 37 / 7 / 12 |
| D 2 | 21 / 29 / 10 | 32 / 19 / 9 | 24 / 21 / 11 |
| D 3 | 23 / 24 / 12 | 25 / 28 / 6 | 31 / 13 / 8 |
| D 3 | 17 / 31 / 12 | 28 / 30 / 2 | 36 / 16 / 4 |
| D 3,SD | 17 / 31 / 12 | 26 / 21 / 11 | 39 / 11 / 6 |
| D 3,KW | 22 / 20 / 18 | 33 / 12 / 15 | 35 / 15 / 6 |
| Policy | Stage (i) | Success | Crash (collision / ground) | Other endings |
|---|---|---|---|---|
| BC NR | non-residual | 0/60 | 83% (48% / 35%) | 10 missions, not broken down |
| BC | residual | 0/60 | 51.7% (42% / 10%) | timeout 48.3% |
| BC | residual | 0/60 | 70.0% (22% / 48%) | timeout 8.3%, camera timeout 21.7% |
| D 3,SD | D 3,KW | |||||||
|---|---|---|---|---|---|---|---|---|
| Swapped input | change | primitive | own | donor | change | primitive | own | donor |
| none | 0.00 / 0.00 | 0.0% | 0.04 | 1.14 | 0.00 / 0.00 | 0.0% | 0.03 | 1.14 |
| image | 0.04 / 0.13 | 12.2% | 0.04 | 1.14 | 0.03 / 0.08 | 10.4% | 0.03 | 1.15 |
| goal | 0.03 / 0.40 | 16.9% | 0.05 | 1.09 | 0.02 / 0.09 | 9.0% | 0.03 | 1.14 |
| velocity | 0.16 / 1.54 | 12.9% | 0.18 | 0.98 | 0.49 / 1.85 | 28.9% | 0.50 | 0.97 |
| attitude | 0.05 / 0.89 | 17.3% | 0.07 | 1.16 | 0.04 / 0.57 | 12.3% | 0.05 | 1.16 |
UAV Navigation
Unmanned aerial vehicle (UAV) navigation develops methods for locating and guiding drones safely through known, unknown, and changing environments.
See all 277 papers