EdgeGround-VLA fuses OWLv2 (open-vocabulary detection) and Kosmos-2 (phrase grounding) — both frozen — behind a 0.866M-parameter MLP action head. Only 1.128M of 459M parameters are trained, and the whole pipeline runs entirely on an NVIDIA Jetson Orin NX with no cloud connectivity and no pre-built map.
Recent mobile-robot navigation research has pushed toward language-instructed navigation with large Vision-Language Models, exemplified by Mobility VLA. But VLM-based inference is computationally heavy and depends on pre-built infrastructure — demo-tour videos and offline topological graphs — which limits deployment on resource-constrained platforms.
EdgeGround-VLA takes a different path. It fuses the representations of two vision encoders with distinct grounding characteristics — OWLv2 for real-time open-vocabulary object localization, and Kosmos-2's vision encoder for phrase-grounded visual features — and combines them with a lightweight MLP action head that outputs one of 8 discrete movement classes, mapped to a 3-DoF command via a fixed lookup table. Both backbones stay frozen; only the 0.866M-parameter action head (plus a 0.262M projection layer) is trained. Deployed on a Jetson Orin NX with no cloud connectivity, the system reaches a 95.0% goal-reaching success rate across 100 real-world trials — above the 86–90% end-to-end success Mobility VLA reports in comparable settings. Decomposing the pipeline by component further shows that OWLv2 grounding alone accounts for ~97% of inference latency, identifying exactly where future compression effort (quantization, distillation) should go when porting to platforms as constrained as a Raspberry Pi.
A 1280×720 RGB frame is processed in parallel by two independently pre-trained, frozen encoders — one built for detection, one built for phrase grounding — and their outputs are concatenated into a single 260-dimensional frame feature.
The action space is deliberately discrete: 8 classes covering stop, forward, lateral strafe (×2), diagonal strafe (×2), and in-place rotation (×2) — well matched to the robot's 3-axis omni-wheel (Kiwi-drive) chassis, which can move laterally without rotating. Continuous regression or diffusion/flow-matching action experts were considered and rejected: they typically need far more demonstration data than this project's 225-episode dataset provides. The 8-class logit is mapped to a 3-DoF (x, y, z) command via a fixed lookup table:
| class | action | x | y | z |
|---|---|---|---|---|
| 0 | STOP | +0.00 | +0.00 | +0.00 |
| 1 | FORWARD | +1.15 | +0.00 | +0.00 |
| 2 | LEFT | +0.00 | +1.15 | +0.00 |
| 3 | RIGHT | +0.00 | -1.15 | +0.00 |
| 4 | FWD+LEFT | +1.15 | +1.15 | +0.00 |
| 5 | FWD+RIGHT | +1.15 | -1.15 | +0.00 |
| 6 | ROT_L | +0.00 | +0.00 | +0.25 |
| 7 | ROT_R | +0.00 | +0.00 | -0.25 |
Table 1 — 8-class → 3-DoF lookup table (fixed constants; the robot's firmware ignores speed magnitude, so only the direction bits matter).
image_proj via
direction anchor-sentence matching (5-class), then freezes it. Stage 2 trains only the MLP
action head on top of the frozen representation — 1.128M parameters end to end.| Item | Value |
|---|---|
| Episodes | 225 (track A 180 + track F 45) |
| Total frames | 16,599 |
| Train / val split | 192 / 33 (seed 42, episode-level) |
| BBox annotation | bbox_dataset_v6_owl.json |
| Deployed head | exp73_owl_stage1v3_v6_mlp.pt |
Table 2 — Dataset composition.
| Class | Frames | Share |
|---|---|---|
| STOP | 1,452 | 8.75% |
| FORWARD | 7,641 | 46.03% |
| LEFT | 716 | 4.31% |
| RIGHT | 858 | 5.17% |
| FWD+LEFT | 2,532 | 15.25% |
| FWD+RIGHT | 3,117 | 18.78% |
| ROT_L | 136 | 0.82% |
| ROT_R | 147 | 0.89% |
Table 3 — Action class distribution. FORWARD dominance (46.03%) motivates the inverse-frequency class weighting used in Stage 2.
image_proj (Stage 1) trains to near-identical train/validation accuracy. The action head (Stage 2) shows a much larger train–validation gap — a well-documented pattern in teleoperation-based imitation learning, and one that episode-level closed-loop control is structurally able to correct for.
| Direction | Frames | Anchor sentence (Stage 1 contrastive target) | Class weight |
|---|---|---|---|
| strong_left | 3,611 | "...strongly on the left side of the image" | 0.91 |
| weak_left | 3,299 | "...slightly on the left side of the image" | 1.00 |
| center | 2,819 | "...in the center of the image" | 1.17 |
| weak_right | 3,268 | "...slightly on the right side of the image" | 1.01 |
| strong_right | 3,602 | "...strongly on the right side of the image" | 0.91 |
Table 6 — The 5 direction anchor sentences ("The gray basket is <degree> on the <side> of the image") that Stage 1 contrastively matches each frame's vision feature against. Frame counts sum to exactly 16,599, matching Table 2.
Validation accuracy is a lower bound on real-world competence, not a ceiling on it.
Frame-level scoring can't credit re-decision; closed-loop control can.Why does a 17.4-point gap not translate into a 17.4-point drop in real-world success? Two reasons. First, frame-level validation accuracy asks whether the model matches the single action the human happened to choose; at any given moment, several actions can be equally valid (e.g. FORWARD and FWD+LEFT both make progress when the target is slightly left). Second, the robot re-observes and re-decides at every timestep — an average of 11.64 decisions per successful episode — so a substitutable frame-level "error" gets corrected on the very next frame. Breaking down the 629 validation errors by severity confirms this directly:
exp73_owl_stage1v3_v6_mlp.pt) scored with the same stride=1 protocol used in
training — 74.1% overall (n=2,431). The 6 well-sampled classes score 66.7–84.5% fairly evenly;
only ROT_L/ROT_R look low, and they are 1.15% of validation (28/2,431), so one or two
misclassifications swing their per-class number sharply.
| Module | Status |
|---|---|
| OWLv2 | frozen (zero-shot) |
Kosmos-2 vision_model | frozen |
image_proj | Stage 1 trained → frozen for deploy |
text_proj | Stage 1 trained, deploy-unused |
| MLP action head | Stage 2 trained (0.866M) |
| Language decoder | never called at deploy time |
Table 4 — Training status of every pipeline component.
| Param | Value |
|---|---|
| threshold | 0.25 default / 0.20 deployed |
| window | 6 frames |
| bbox_scale | 3.0 |
| optimizer | AdamW, lr=5e-4 |
| epochs | 300, CosineAnnealingLR |
| class weight | inverse-frequency, normalized |
Table 5 — Stage 2 action-head hyperparameters.
100 real-robot episodes — 20 per target position — run entirely on-device on the Jetson Orin NX, with no cloud connectivity and no pre-built map.
Decomposing end-to-end latency by pipeline stage reveals a counter-intuitive result: the smaller model is the slower one.
OWLv2 (0.155B params) is responsible for ~97% of end-to-end latency, while Kosmos-2's vision encoder — nearly twice as many parameters (0.303B) — accounts for only ~3%. Parameter count alone does not predict inference latency; OWLv2's cost comes from cross-attention text-query matching and multi-scale anchor processing, not raw FLOPs. Switching OWLv2 to fp16 cuts its latency by ~49% (1901.7ms → 962.1ms), confirming that compressing the grounding stage — not the policy — is where future work should focus when porting to platforms as constrained as a Raspberry Pi.
End-to-end pipeline latency is ~1.96s (fp32) or ~1.02s (fp16) — far from the tens-of-milliseconds a continuous controller would need. But EdgeGround-VLA doesn't need continuous control: it updates a discrete action periodically, re-issuing the last decided command at 10Hz between grounding updates so the robot never actually stops waiting. The 95% real-world success rate is the direct evidence that this control scheme is practical for goal-reaching.
Kangnam University, Dept. of Artificial Intelligence / Dept. of Computer Science.
Full parameter breakdown, hyperparameters, and inference control logic, kept in sync with the deployed checkpoint.
GrounderWhy OWLv2 was adopted, threshold/fp16/skip_n behavior, and the real-world grounding-availability data behind it.
PaperLine-by-line advisor Q&A, reference audit, and before/after diffs tracked through the KCI submission process.
Research LogThe full experiment history — offline ablations, chapter-by-chapter findings, and archived legacy results.
WikiThe 70+ research-log chapters reorganized by topic (grounding, action heads, backbone, real-robot testing, ...) instead of chronologically.
CodeTraining scripts, inference server, and figure-generation code referenced throughout this page.
RelatedA π0-style flow-matching VLA baseline explored on the same platform, for comparison.