Asynchronous Robot Policies

Anonymous authors

arXiv preprint, 2026

ARP-3B (ours)
π0.5-DROID
“Put the vegetables in the bowl.” The first trial of each policy, uncut, at 4× speed. The clock shows real time. ARP finished in 67 s. π0.5-DROID had placed 1 of 5 vegetables when the episode limit was reached at 82 s. ARP's lead was largest on this task, and π0.5-DROID did better on cup stacking. All 60 trials are in the real-robot section.

TL;DR: We run the large vision-language model and the small action network of a robot policy as two separate processes. The robot reacts to every new camera frame without waiting for the large model, and the large model only needs to update now and then.

Abstract

Vision-language-action models (VLAs) control robots by running a vision-language model (VLM) and an action expert one after the other for every chunk of actions. The time from observation to action therefore grows with the size of the VLM, which matters whenever the scene changes while the robot is moving. We propose Asynchronous Robot Policies (ARP), which run the two parts as independent processes at different rates. The VLM periodically writes a fixed-size semantic memory. A lightweight vision-action expert with its own camera input reads the most recent memory and produces actions at a high rate. Because that memory is always somewhat out of date, we train the expert on memories of varying age and condition it on that age and on its own execution delay. In simulation, when the target object is moved during the reach, ARP-1B succeeds in 51.5% of episodes against 9.5% for a π0-style baseline with the same backbone. On LIBERO it keeps 79.0% success with the VLM refreshed only once every 4 seconds, where the baseline drops to 45.3%. On a Franka robot, a DROID-trained ARP-3B reaches 78, 73 and 80% task progress on three tasks, against 32, 80 and 50% for π0.5-DROID. On the broader RoboLab benchmark it remains well behind π0.5-DROID (20.0 vs 37.9%).

Big models, slow reflexes

Most general-purpose robot policies today are built on vision-language models, the kind of neural network that can describe an image or answer questions about it. A vision-language-action model (VLA), such as π0 or π0.5, adds an action expert: a smaller network that turns the VLM's understanding of the scene and the instruction into motor commands. At every step the robot takes a picture, runs the VLM, runs the action expert, and executes a short chunk of motions before repeating.

This loop works when nothing moves. A plan made half a second ago is still a good plan if the cup is where it was. It breaks down when the world changes during the motion, for example when an object gets nudged or a ball rolls. The robot keeps executing a plan based on an old picture, and the next plan has to wait for the VLM again. A larger VLM understands more, and it also makes this wait longer.

Left: a VLA runs the VLM and the action expert in sequence at one rate. Right: ARP runs the VLM at a low rate f1 and the vision-action expert at a high rate f2, reading every camera frame.
Left: a VLA runs the VLM and the action expert in sequence, so the delay from a new image to an action is tVLM + tAE. Right: ARP runs them in separate loops at rates f1 and f2. The action expert reads every new image itself, so the loop that reacts to the scene only contains the small network.

Two processes, two speeds

ARP splits the policy into two processes that never wait for each other. The large VLM, which we call the semantic expert, looks at the camera image and the instruction from time to time and writes what it has understood into a memory of fixed size. A much smaller vision-action expert runs continuously. Each time it is called, it looks at the current camera images, reads whichever memory is newest, and outputs the next actions.

The fast loop never runs the VLM, so the robot's reaction time no longer depends on how big the VLM is. On one RTX A6000 GPU, a VLM call takes 64 ms at 1B parameters and 120 ms at 8B, while the action expert takes about 61 ms at every size:

VLM sizeLanguage modelLarge model (VLM)Action expertBoth in sequence
1BQwen3-0.6B64 ms60 ms124 ms
2BQwen3-1.7B64 ms62 ms126 ms
4BQwen3-4B87 ms61 ms148 ms
8BQwen3-8B120 ms61 ms181 ms

Simulation models, median of 100 calls, bf16, batch size 1. The last column is the delay per action chunk of a VLA built from the same two parts.

Camera, 20 Hz VLM, 1 Hz Memory in use Action expert, 5 Hz reads frame 0reads frame 20f. 40 memory from frame 0memory from frame 20 age 48121620 481216204 step 01020 (1 s)3040 (2 s)
The two loops over two seconds (ARP-1B in simulation, VLM refreshed once per second). Every 4 control steps the action expert takes the newest camera frames and the newest finished memory. The age of that memory, between 4 and 20 steps here, is one of the expert's inputs.

The catch: the memory is always out of date

Running the two processes independently has a price. The memory the action expert reads was computed from an older image, sometimes a fifth of a second old and sometimes several seconds. A model that only saw fresh memories during training does not cope with that.

We deal with this in training. Each training example pairs the current camera frames of a demonstration with a memory computed from an earlier frame of the same demonstration, up to 2 s earlier, and the action expert is told how old the memory is. The table shows what this does. Every row is the same architecture trained on the same LIBERO data. Only the memory ages seen in training differ. The columns are how often the VLM refreshes the memory at test time.

Memory age seen in trainingfresh5 Hz2.5 Hz1 Hz0.5 Hz0.25 Hz
always fresh (d = 0)81.863.023.54.82.0–
up to 0.4 s (d ≤ 8 steps)79.581.556.811.85.0–
up to 2 s (d ≤ 40, default)85.383.384.882.081.879.0
up to 4 s (d ≤ 80)81.084.587.587.586.584.0

Success rate (%), 400 LIBERO episodes per cell. Trained only on fresh memories, the model does well with fresh memories (81.8%) and fails when the VLM refreshes at 0.5 Hz (2.0%). Trained on memories up to 2 s old, it keeps 81.8% at 0.5 Hz. Even older training memories help further at the slowest rates.

Architecture

Architecture: the semantic expert (VLM) writes keys and values of 8 layers through a cache adapter into a fixed-size memory M. The vision-action expert cross-attends to M in every block, reads its own image tokens and proprioception, and is conditioned on the flow time, the memory's staleness and its own delay through adaptive RMS norm.

Semantic expert. In simulation this is InternVL3.5 at 1B to 14B parameters, and on DROID it is PaliGemma-3B. It reads one image and the instruction. We take the keys and values of 8 of its layers. A LayerNorm and a linear projection map them to a memory M with a fixed number of 768-wide tokens. We then add a position embedding and an embedding of the memory's age. M has the same shape for every VLM, so nothing downstream changes when the VLM does.

Vision-action expert. A 12-block transformer (183M parameters in simulation). It encodes the current external and wrist images and cross-attends to M in every block. It predicts a 20-step action chunk by flow matching with 5 Euler steps. Adaptive RMS normalisation conditions every block on the flow time, the memory age d and the expert's own execution delay ℓ.

Training. The memory age is sampled as d ~ 0.2·δ0 + 0.8·U{1, …, 40} control steps. The expert also learns to continue a given prefix of actions, as in real-time chunking, so consecutive chunks join smoothly.

On a real robot

We compared ARP with π0.5-DROID, a strong, openly available VLA from Physical Intelligence. The robot is a Franka FR3 arm in the DROID setup, with one camera facing the table and one on the wrist, and inference runs on one RTX A6000. Our model, ARP-3B, uses PaliGemma-3B as the large model and a vision-action expert built on DINOv3 image features. It was trained only on the public DROID dataset. π0.5-DROID was, in addition, pre-trained by its authors on a larger robot dataset that is not public. ARP ran asynchronously, and the action expert continued from the last 8 actions it had committed to.

Each policy attempted each of three tasks 10 times, with a limit of 900 control steps, about 90 s. We score the final state: the fraction of objects in the bowl, or of cups nested.

Put the vegetables in the bowl
Put the vegetables in the bowl: external camera at the startPut the vegetables in the bowl: wrist camera at the start
Scoring: 5 vegetables, 0.2 per object.
0% 25% 50% 75% 100% ARP-3B 78% π0.5-DROID 32%
Completed the task: ARP 4/10, π0.5 0/10.
Stack the cups
Stack the cups: external camera at the startStack the cups: wrist camera at the start
Scoring: 4 cups, 1/3 per nesting.
0% 25% 50% 75% 100% ARP-3B 73% π0.5-DROID 80%
Completed the task: ARP 3/10, π0.5 6/10.
Put the markers in the bowl
Put the markers in the bowl: external camera at the startPut the markers in the bowl: wrist camera at the start
Scoring: 3 markers, 1/3 per object.
0% 25% 50% 75% 100% ARP-3B 80% π0.5-DROID 50%
Completed the task: ARP 5/10, π0.5 0/10.
The start of each task from the external and wrist cameras, then the progress of every trial (dots) and the mean over 10 trials (line). With 10 trials per task, differences of 10 to 20 points are within noise.

Every trial

All 60 trials, in the order they were run. Thumbnails show the last frame of each trial. The videos come from the robot's cameras at one frame per control step, close to real time. The wrist camera did not record ARP's vegetables trial 10 or π0.5's vegetables trial 9.

ARP-3B

π0.5-DROID

When the scene changes

Benchmarks like LIBERO hardly measure reaction time, because nothing moves unless the robot moves it. We built two simulated tests in which the scene changes while the robot is acting.

  • In LIBERO-Perturb, the object the robot is reaching for jumps 5 cm sideways when the gripper gets within 10 cm of it. It runs on 20 LIBERO tasks.
  • In Dyn-Bump, a ball or cylinder rolls toward the robot and is knocked onto a new course, turned by up to 100°, at a random moment 1.5 to 5 s into the episode. The robot has to catch it and lift it.

Both tests are deterministic, so every policy faces exactly the same episodes.

We compare three versions of the same 1B model:

  • ARP runs asynchronously.
  • ARP weights, synchronous uses the same trained network but calls the VLM before every action chunk, as an ordinary VLA would.
  • The π0-style baseline is our model with the action expert's camera input removed, so it sees the scene only through the VLM's memory, as π0 does. It shares our backbone, data and training recipe.
Object moved mid-reach (LIBERO-Perturb) 0% 20% 40% 60% 51.5 ARP asynchronous 46.5 ARP weights synchronous 9.5 π0-style baseline 200 episodes per bar Object knocked off course (Dyn-Bump) 0% 20% 40% 60% 44.7 ARP asynchronous 31.3 ARP weights synchronous 12.7 π0-style baseline 150 episodes per bar
Success rate with 95% intervals. LIBERO-Perturb: 20 tasks, 10 trials each. Dyn-Bump: 3 tasks, 50 trials each, with a bump in every episode.

The two tests separate two effects. When the object jumps mid-reach, all three policies first reach toward where it used to be, in about 76% of episodes, because the reach is already under way. ARP then recovers in 46% of those episodes and the π0-style baseline in 7%. The synchronous version of ARP does almost as well as the asynchronous one (46.5 vs 51.5%), so in this test the gain comes from giving the action expert its own camera rather than from running asynchronously.

When the object keeps moving, asynchrony matters too. The same weights drop from 44.7% to 31.3% when the VLM is put back into the control loop. With a bump in only half of the episodes, the results are 48.0% and 36.4% over 450 episodes each, and 20.0% for the π0-style baseline over 150.

LIBERO-Perturb rollouts

The first trial of each task, in real time. Each video shows the front camera on the left and the wrist camera on the right. The label gives this trial's outcome and, in brackets, the task's successes out of 10.

Results per task
Task (10 trials each)ARP-1B asyncARP-1B syncπ0-style 1B
LIBERO-Spatial
pick up the black bowl between the plate and the ramekin and place it on the plate380
pick up the black bowl next to the ramekin and place it on the plate643
pick up the black bowl from table center and place it on the plate862
pick up the black bowl on the cookie box and place it on the plate431
pick up the black bowl in the top drawer of the wooden cabinet and place it on the plate010
pick up the black bowl on the ramekin and place it on the plate100
pick up the black bowl next to the cookie box and place it on the plate631
pick up the black bowl on the stove and place it on the plate553
pick up the black bowl next to the plate and place it on the plate873
pick up the black bowl on the wooden cabinet and place it on the plate564
LIBERO-Object
pick up the alphabet soup and place it in the basket1070
pick up the cream cheese and place it in the basket1090
pick up the salad dressing and place it in the basket220
pick up the bbq sauce and place it in the basket640
pick up the ketchup and place it in the basket310
pick up the tomato sauce and place it in the basket150
pick up the butter and place it in the basket8102
pick up the milk and place it in the basket330
pick up the chocolate pudding and place it in the basket1080
pick up the orange juice and place it in the basket410

Dyn-Bump rollouts

The first trial of each task, in real time. ARP fails two of these three.

ARPsuccess
ARP weights, synchronousfailure
The red-ball episode used as an example in the paper (trial 35). The ball is knocked at 2.15 s. ARP turns, follows it and lifts it at 5.0 s. The synchronous version falls behind and times out at 15 s.

We also measured how long the arm takes to turn toward the ball's new course after a bump. Asynchronous execution turned sooner on average in all five comparisons we ran, by 135 to 261 ms. None of these differences is statistically significant at our sample sizes.

Running the large model less often

Since the action expert does the reacting, the VLM does not have to keep pace with the robot. We kept the action expert at 5 Hz and refreshed the memory less and less often, on LIBERO, with 400 episodes per point.

40 50 60 70 80 90 5 Hz every 0.2 s 2.5 Hz every 0.4 s 1 Hz every 1 s 0.5 Hz every 2 s 0.25 Hz every 4 s How often the large model updates the memory (the action expert always runs at 5 Hz) LIBERO success (%) fresh memoryevery chunk: 85.3 81.5 77.8 72.0 63.5 45.3 π0-style 1B 83.3 84.8 82.0 81.8 79.0 ARP-1B
Success with 95% intervals. The dashed line is ARP-1B given a fresh memory before every action chunk. Between a refresh every 0.2 s and one every 4 s, ARP-1B loses 4.3 points. The π0-style baseline sees the scene only through the memory and loses 36.2.

A broad benchmark: RoboLab

RoboLab is a photorealistic simulation benchmark for robots trained on DROID. It has 120 tasks in three difficulty levels, each run in 8 randomized layouts. It tests much more than reaction, including language, distractors and multi-step tasks, and it is where ARP-3B is weakest.

PolicySimple 512 ep.Moderate 312 ep.Complex 136 ep.All tasks 960 ep.
π0.5-DROIDPhysical Intelligence; base model pre-trained on non-public data42.437.522.137.9[34.9, 41.0]
LAP-3BDROID + Open X-Embodiment20.918.68.818.4[16.1, 21.0]
ARP-3B, synchronousDROID only; VLM and expert called in sequence25.816.46.620.0[17.6, 22.6]
ARP-3B, asynchronous (d = 8)DROID only; prefix-conditioned asynchronous execution26.416.47.420.4[18.0, 23.1]

Success rate (%). π0.5-DROID is clearly the strongest. ARP-3B is slightly ahead of LAP-3B, a model of similar size that, unlike ARP, was also trained on Open X-Embodiment data. Running ARP asynchronously barely changes its overall score.

Part of π0.5's lead comes from data, so we also compared on tasks that DROID covers. To pick them:

  • We counted DROID episodes whose instructions mention a task's objects and goal, and kept tasks with at least 100 such episodes.
  • We dropped tasks with constraints DROID has no examples of: counting, ordering, comparisons, spatial relations, reorientation and sorting.
  • We kept the simple tier.

That leaves 18 tasks. This is a word-matching estimate of coverage, not a check that DROID contains the same manipulation.

PolicySuccess, 18 DROID-covered tasksSuccess, all 120 tasks
π0.5-DROID35.4%[28.1, 43.5]37.9%
LAP-3B27.1%[20.5, 34.9]18.4%
ARP-3B, synchronous31.9%[24.9, 39.9]20.0%
ARP-3B, asynchronous (d = 8)37.5%[30.0, 45.6]20.4%

On these tasks, asynchronous ARP and π0.5-DROID are within noise of each other (144 episodes each). On the 29 of these episodes that both solved, ARP was faster: 16.8 s against 20.9 s on average. Across all 81 simple-tier episodes that both solved, they take the same time (17.6 vs 17.9 s).

For the same ARP checkpoint, asynchronous execution with an 8-step action prefix gave smoother motion than synchronous execution on these tasks:

ARP-3BSuccessTime (s)Jerk (ISJ)SPARC
Synchronous31.9%19.5456−5.11
Asynchronous, 8-step prefix37.5%17.1296−3.90
Change on the 37 episodes both solved+5.6, n.s.−15%−39%, p < 0.01+25%, p < 0.001

Success is over all 144 episodes. The other columns are over successful episodes, since a failed episode runs to its time limit. Jerk is the integrated squared jerk of the gripper (lower is smoother). SPARC is the spectral arc length (closer to zero is smoother). Tests: exact McNemar for success, Wilcoxon signed-rank otherwise.

RoboLab rollouts

Layout 0 of each DROID-covered task, in real time. These 16 episodes favour ARP (8 successes against 3) more than the full results do. Two tasks are missing because every π0.5 recording of them is corrupted on disk, but their episodes are counted in the tables.

Results for all 120 tasks
TaskInstructionTierπ0.5LAP-3BARP syncARP async
AnimalsInBin †Put the lizards in the binsimple2000
BBQSauceInBinPut the red BBQ sauce bottles in the grey binsimple5000
BagelsOnPlatePut the bagels on the platesimple0000
BananaInBowlPick up the banana and place it in the bowlsimple8688
BananaOnPlatePick up the banana and put it on the platesimple6678
BananaThenRubiksCubeput the banana then the cube in the bowlsimple5124
BigPumpkinInBinPut the bigger pumpkin in the binsimple3000
BowlInBin †put the bowl in the grey binsimple6046
BowlStackingLeftOnRight †Stack the left bowl on the right bowlsimple0002
BowlStackingRightOnLeft †Stack the right bowl on the left bowlsimple2011
ButterAboveRaisinPick up the butter box and place it on top of the raisin boxsimple6202
CannedFoodInBin †Put the canned food in the grey binsimple2378
ClampInRightBinPut the spring clamp in the right binsimple6000
ClutterPumpkinPut all the pumpkins away in the binsimple0000
CoffeePotInBinPut the coffee pot in the grey binsimple0000
CookingPickPastaTool †Move the pink tool from this utensil container to the other utensil holdersimple0000
FoodPacking1Boxes †Pack boxed foods into the binsimple1210
FoodPacking1Cans †Pack canned foods into the binsimple8788
FoodPacking2Boxes †Pack boxed foods into the binsimple1000
FoodPacking2Cans †Pack canned foods into the binsimple3101
FruitsGreenLimesOnPlatePut all the green fruit on the platesimple5142
FruitsMovingOrangeOrLimeMove an orange or a lime to the wood bowlsimple6103
FruitsMovingMove an orange to the white bowlsimple0000
FruitsOnionPut the onion in the wood bowlsimple5300
FruitsOnionToPlatePut the onion on the platesimple3000
GrabABagelGrab a bagelsimple1000
GrabAFruit †Pick up a fruitsimple0207
JugsOnShelfPut all the jugs on the shelfsimple0000
KeyboardOutOfBinTake the keyboard out of the bin and put it on the tablesimple6011
LargerObjectRaisinBoxInBinPlace the larger object in the grey bin.simple1010
MouseOnKeyboardPut the computer mouse on the keyboardsimple8523
MoveBananaToBagelPlateMove the bananas to the bagel platesimple0001
MustardAboveRaisinPlace the mustard on the raisin box. simple6322
MustardInLeftBinPut the mustard in the left binsimple7371
MustardInRightBinPut the mustard in the right binsimple7031
OneBottleInSquarePailPut any white plastic bottle in the square pailsimple3567
OneBottleOnShelf †Put any white plastic bottle on the shelfsimple0000
PhoneOrRemoteInBinPut the phone or the remote in the grey binsimple8321
PickDrillPick up the cordless drill.simple6000
PickGlassesPick up the eye glassessimple5000
PickOrangeObjectPick up the orange measuring cupsimple5001
PickUpGreenObjectPick up the green vegetable blocksimple6001
PutBowlOnShelfTopPut the serving bowl anywhere on the shelf in front of yousimple0202
RecycleCartonPut the recyclable cartons in the grey binsimple4000
RecycleCartonsOnBoxPut the cartons that can be recycled on the boxsimple0000
RedDishesInBin †Put the red dishware in the grey binsimple3101
RubiksCubeAndBanana †Put the cube and the banana in the bowlsimple6773
RubiksCubeOrBanana †Put the cube or the banana in the bowlsimple8787
RubiksCubePut the cube in the bowlsimple8888
RubiksCubeThenBananaPut the cube then the banana in the bowlsimple1367
SauceBottlesCratePut the red bbq sauce bottle in the cratesimple7564
SmallPumpkinInBinPut the small pumpkin in the binsimple0001
SmallerObjectButterInBinPlace the smaller object in the grey bin.simple6466
SmartphoneInBinPut the smartphone in the grey binsimple0400
TakeMeasuringSpoonOut †Take the white colored measuring spoon out of the red bowl and put it on the table.simple4588
ThrowAwayAppleThrow away the applesimple0222
ThrowAwaySnacksPut away the snacks in the binsimple1051
ToolsPickingDrillSelect the cordless drill and put it on the tablesimple2000
ToolsPickingHammerSelect the blue hammer and put it on the tablesimple0000
ToyInBin †Put the lizard away in the binsimple5422
WhiteMugsInBin †Clean up the white mugssimple0000
WoodSpatulaToBowlPut the wooden spatula in the bowlsimple6000
YellowAndWhiteObjectsInBinPut all white objects and yellow objects in the grey binsimple1020
YogurtInBowlPut the small red yogurt in the red bowlsimple3164
AppleAndYogurtInBowlPut the apple and yogurt in the bowlmoderate5123
BananasInBinOneMorePut one (1) more bananas in the grey bin.moderate7882
BananasInBinThreeTotalMake sure there are 3 (three) bananas in the grey bin.moderate8885
BananasInCratePut 2 bananas in the cratemoderate7888
BananasOutOfBinTake the bananas outmoderate6468
ClutterPlasticPut all plastic bottles away in the binmoderate0000
CookingClearPlatePut the two measuring cups outside of the platemoderate6000
DishesInBinPut the dishware in the grey binmoderate0000
FoodPacking3BoxesPack boxed foods into the binmoderate0000
FoodPacking3CansPack canned foods into the binmoderate2000
FoodPackingByColorPack yellow objects in right container and blue object in the left containermoderate0000
FruitsOrangesOnPlatePut all the oranges on the platemoderate5200
HammersInLeftBinPut the red hammer and black hammer in the left binmoderate3100
MarkerInMugPut the whiteboard marker in the mugmoderate5013
NonHammerToolsInRightBinPut the non-hammer tools in the right binmoderate4000
PickUpBluePitcherPick up the large blue pitchermoderate4001
PinkSpoonInPotPut the pink spaghetti spoon in the potmoderate4010
PutMugsOnShelfPut the two mugs on the shelfmoderate0000
PutTwoMugsOnShelfPut two (2) mugs on the wire shelfmoderate1000
RecycleCartonsVerticalCratePut the cartons that can be recycled in the vertical cratemoderate0000
RedItemsInBinPut all the red things in the grey binmoderate3010
ReorientJugStand the jug uprightmoderate0000
ReorientRedMugPut the red mug upright so that the opening is facing upwards.moderate3000
ReorientWhiteMugsMake sure all the white mugs are upright so that the opening is facing upwards.moderate4100
RubiksCubeBehindBowlPut the rubiks cube behind the bowlmoderate7713
RubiksCubeInFrontOfBowlPut the rubiks cube in front of the bowlmoderate0000
RubiksCubeLeftOfBowlPut the rubiks cube to the left of the bowlmoderate1223
RubiksCubeRightOfBowlPut the rubiks cube to the right of the bowlmoderate0322
SpoonInMugPut the metal spoon that's in the wooden bowl in the mugmoderate0000
Stack3RubiksCubeStack the rubiks cubes in a towermoderate4101
StackWhiteMugsStack the white mugs on top of each other.moderate6411
StackYellowOnRedStack the yellow block on the red blockmoderate6000
TakeMugsOffOfShelfTake the mugs off the shelfmoderate1000
TakeSpatulaOffShelfTake the spatula off the shelf and put it on the tablemoderate0000
ToolOrganizationBothPut hammers in the right bin and do not touch anything elsemoderate0000
ToolOrganizationPut the red hammer and black hammer in the left binmoderate3000
UnstackRubiksCubeUnstack the rubiks cube towermoderate8788
UtensilsInMugPut the fork and spoon in the ceramicmugmoderate0000
WhiteMugInCenterOfTablePut the white mug in the center of the table.moderate4123
BlackItemsInBinPut the black items in the grey bincomplex0000
BlockStackingOrderAgnosticStack the blocks into a towercomplex1000
BlockStackingSpecifiedOrderStack the blocks in the order from bottom to top: red, blue, green, yellowcomplex0000
BlocksInBinSort all colored blocks into the bincomplex1000
CleanUpToysClean up all the smaller toys and leave the birdhouse on the tablecomplex0000
ClearOrganicObjectsClear away the organic objectscomplex0000
CondimentsInBinSort the sauce condiments into the grey bincomplex3020
CubesAndBlocksInBinPut all the cubes and blocks in the bincomplex4000
ElectronicsInBinPut the electronic devices in the grey bincomplex1100
FruitsOnPlate3Put three (3) fruits on the platecomplex6458
FruitsOnPlatePut all the fruits on the platecomplex0000
GreenSpoonsInPotPut the green spoons in the potcomplex2000
PlasticBottlesInSquarePailPut all the small plastic bottles in the square pailcomplex4311
ReorientAllMugsReorient all the mugs upright so that the opening is facing upwards.complex0000
RubiksCubesInBinSort all rubiks cubes into the bincomplex8410
SpoonsInPotPut all of the serving spoons with no holes in the potcomplex0001
ToolsPickingAllHammersTake out all the hammers and put them on the tablecomplex0000
Total364 / 960177 / 960192 / 960196 / 960

Successes out of 8 layouts. † marks the 18 DROID-covered tasks.

Does a bigger VLM help?

In simulation we trained the same recipe with five sizes of InternVL3.5, from 1B to 14B parameters. The vision encoder is the same frozen InternViT-300M in every model, so only the language model changes. On the standard LIBERO benchmark (40 tasks, 2,000 episodes per model), success rises from 84.8% at 1B to 89.3% at 8B. 14B is no better than 8B. When the object jumps mid-reach, larger models did not help: 51.5% at 1B, 40.0% at 8B and 40.0% at 14B.

ModelLanguage modelSpatialObjectGoalLongAverage, asyncAverage, sync
ARP-1BQwen3-0.6B89.497.689.862.484.8[83.2, 86.3]82.9
ARP-2BQwen3-1.7B89.296.088.672.686.6[85.0, 88.0]84.4
ARP-4BQwen3-4B91.496.084.666.084.5[82.8, 86.0]83.5
ARP-8BQwen3-8B92.898.690.475.289.3[87.8, 90.5]86.5
ARP-14BQwen3-14B88.496.480.274.084.8[83.1, 86.3]81.3
Baseline: same backbone and recipe, no camera input in the action expert
π0-style 1BQwen3-0.6B83.295.290.651.880.2[78.4, 81.9]75.7
π0-style 8BQwen3-8B85.495.090.060.482.7[81.0, 84.3]81.3
Reported by the original authors (different pre-training and vision encoder; not directly comparable)
π0PaliGemma-3B96.898.895.885.294.2–
Diffusion Policy–78.392.568.350.572.4–

Success rate (%) on LIBERO. “Async” and “sync” run the same weights without and with the VLM in the control loop. Asynchronous execution is 1 to 3.5 points higher at every size. The released π0 is far ahead. It uses large-scale robot pre-training and an unfrozen vision encoder, so its row is only there for scale.

Limitations

The real-robot study is small: three tasks, ten trials each, one robot and one lab. The two policies were run in separate sessions on the same day, and π0.5-DROID did better on cup stacking.

ARP-3B is not a better generalist than π0.5-DROID. It trails on RoboLab by 17.9 points overall. The two models differ in both architecture and training data, so this comparison cannot tell which of the two matters more.

We have not shown that a larger VLM makes the robot react better. On LIBERO-Perturb the larger models did worse. In that test, most of ARP's advantage comes from the action expert's own camera, and only a little from asynchrony. Before running it, we registered a check that asynchronous execution stalls less often than synchronous execution there, and the check failed: 12.0% against 12.5% of episodes stalled for more than a second. Reaction times favour asynchronous execution but are not significant, and settling the question would take roughly ten times more trials.

We do not know how slowly the VLM can run before performance drops. We tested down to one refresh every 4 s. In simulation, the π0-style baseline is our reimplementation, not the released π0. The real-robot and RoboLab comparisons use the released π0.5-DROID.

Code and models

We will release the code and the checkpoints below with the paper. The simulation checkpoints contain only the weights trained on top of the public VLM: LoRA adapters, projector, memory adapter and action expert.

CheckpointSemantic expertTraining dataTrained weights
ARP-1BInternVL3.5-1BLIBERO (40 tasks)0.84 GB
ARP-2BInternVL3.5-2BLIBERO0.88 GB
ARP-4BInternVL3.5-4BLIBERO0.96 GB
ARP-8BInternVL3.5-8BLIBERO1.03 GB
ARP-14BInternVL3.5-14BLIBERO1.14 GB
π0-style 1B / 8BInternVL3.5-1B / 8BLIBERO0.83 / 1.02 GB
Staleness ablations (dmax = 0, 8, 80)InternVL3.5-1BLIBERO0.84 GB
ARP-1B and π0-style 1B, Dyn-BumpInternVL3.5-1BDyn-Bump (scripted expert)0.84 / 0.83 GB
ARP-3BPaliGemma-3B + DINOv3DROID–

Citation

@misc{arp2026,
  title         = {Asynchronous Robot Policies},
  author        = {Anonymous},
  year          = {2026},
  eprint        = {XXXX.XXXXX},
  archivePrefix = {arXiv},
  primaryClass  = {cs.RO}
}