~/projects/visual-router

Lightweight Visual Router

Adaptive query routing for long-horizon robot tasks.

A lightweight state-aware model that uses visual feedback to select the next short-horizon instruction for a fine-tuned robot policy.

  • vla-pi0.5
  • query-router
  • state-estimation
  • error-recovery
## the problem

Vision-Language-Action models such as π0 / π0.5 can execute manipulation directly from natural-language instructions, but long-horizon commands introduce an additional challenge: the policy must not only generate the correct action, it must also understand which stage of the task it is currently executing.

“Pick up the adapter and place it in the box.”

This single instruction implicitly contains several states:

Reach→Grasp→Lift→Transport→Release

If the grasp fails but the policy continues to the transport stage, the remainder of the trajectory becomes meaningless.

The goal of this project is to introduce a lightweight supervisory mechanism that explicitly tracks task progress and determines what the VLA should be asked to do next.

Hand placing an adapter in front of a small robot gripper inside a white enclosure

Core idea

Reuse the π0.5 visual embeddings already computed for action prediction to infer task state, then switch among Reach, Grab and Drop.

Method overview of lightweight visual routing for long-horizon VLA manipulation
Method overview · a lightweight visual feedback layer reuses π0.5 visual embeddings to infer task state and route short-horizon queries for a shared VLA policy.

Instead of training a separate policy for every subtask, I retain a single shared VLA policy and dynamically change its language conditioning.

A lightweight visual router determines when to:

Continue→Advance→Retry→Finish

vla.policy

Generates actions

The VLA remains responsible for generating robot actions.

router.select()

Chooses the instruction

The router decides which instruction the VLA should execute right now.

## data collection

Demonstrations for query-adaptive fine-tuning are recorded on the 3D-printed arm, one short-horizon stage at a time.

Reach the adapter→Grab the adapter→Drop it in the box
data collection · demonstrations recorded on the real arm

Results

π0.5 baseline versus the same policy with the visual router, on Reach → Grab → Drop rollouts.

metricπ0.5 baseline+ visual routercomparison
Task success rate↑68%86%
Failed-grasp recovery↑22%81%
State transition accuracy↑74%93%
Error propagation↓ lower is better31%9%

## key contribution

A lightweight learned visual router that converts temporal execution feedback into dynamic query selection for a shared VLA policy, enabling explicit task-state tracking, adaptive progression, and recovery during long-horizon robotic manipulation.

Rollouts

Real-robot episodes on the Reach → Grab → Drop task.

failure case · a missed grasp during the task
full rollout · reach, grab and drop on the real arm
Task decomposition, closed-loop execution with the router, and failure recovery with and without routing
failure recovery · without routing a failed grasp propagates; with the router the policy retries before moving on
Robot gripper approaching a red adapter on the table during a recovery attempt
## how the rollout metrics are computed
Task success rate ↑
Percentage of full Reach → Grab → Drop episodes completed successfully.
successful episodes ÷ total episodes × 100
Failed-grasp recovery rate ↑
Percentage of failed grasp attempts where the system detects the failure, retries, and still completes the task.
recovered failed-grasp episodes ÷ total failed-grasp episodes × 100
State transition accuracy ↑
How often the router correctly identifies that the task has moved from one state to the next, e.g. Reach → Grab or Grab → Drop.
correct transition predictions ÷ total transition decisions × 100
Error propagation rate ↓
Percentage of intermediate failures that are not caught and cause the system to continue into the wrong next stage.
uncaught failures that propagate ÷ total intermediate failures × 100