Hadrien Cornier GitHub
Writing / Recent papers

MolmoBot: Large-Scale Simulation Enables Zero-Shot Manipulation

Posted to arXiv on 26 March 2026 · arXiv 2603.16861v2 ↗

With no real robot data, only simulated demos, MolmoBot doubles the real-world success of a policy trained on 10,000+ hours of real robot data.

Say you want a robot arm to put a banana in a black bowl, in a room it's never seen. Can a policy trained only in simulation do that? That's sim-to-real: train in a simulator, run on a physical robot. MolmoBot goes zero-shot, meaning no real robot data and no fine-tuning first. It leans on domain randomization: lighting, textures, camera pose, friction and more change at random across program-generated houses. Scripted experts, planners that read the simulator's true object poses, record 1.7 million demonstrations on two robots, and MolmoBot learns to imitate them. On real tabletop pick-and-place, it succeeds in 79.2% of 120 trials across 4 rooms, against 39.2% for π0.5-DROID, which trained on more than 10,000 hours of real robot demos. On a mobile robot, a door-only version opened a real pull door in 2 of 9 tries, with the robot's emergency stop tripping in 5 of them.

MolmoBot: a robot policy trained only in simulation, tested on real robotsPanel 1, the bet: the usual sim-to-real recipe goes from a simulator through real demonstrations or fine-tuning to the real robot. MolmoBot goes from a simulator at scale straight to the real robot, zero-shot, with no real-robot step. Sim-to-real means training in simulation and running for real; zero-shot here means no real robot data and no fine-tuning. The question: can simulation alone be enough? Panel 2, randomize everything: three random draws of the same tabletop task differ in lights, textures, colors and camera angle. The paper randomizes looks (lights, textures, colors), the camera (position, angle, field of view), physics (friction, object mass, joint damping), the setup (objects, their poses, the arm start pose) and the moves (noise on the expert actions, so the policy cannot learn an exact replay). Each demonstration takes place in a generated MolmoSpaces house, rendered in MuJoCo. The paper favors variety in objects, poses and viewpoints over photorealism. Panel 3, a scripted expert: a hand-written planner reads the simulator’s true object poses and a list of grasps checked in simulation, then moves through phases: pregrasp, grasp, lift, preplace, place, postplace, and stow, back to the home pose. If the grasp slips, it goes back and retries, up to 3 times; after that the demonstration is thrown out. The policy gets only images from two cameras, the joint angles and the instruction, and learns to copy the expert. Panel 4, the scale: demos, 76k in DROID (real, same arm setup) against 1.7M in MolmoBot-Data (simulated, two robots); hours of robot time, 350 in DROID (real, same arm setup) against 5,704 in MolmoBot-Data (simulated, two robots); environments, 564 in DROID (real, same arm setup) against 94.2k in MolmoBot-Data (simulated, two robots). About 1.5 million of the demonstrations are on the Franka arm. The π0 and π0.5 baselines trained on more than 10,000 hours of real demonstrations. The 94.2k environments are drawn from more than 200,000 MolmoSpaces houses. The data took about 6,500 GPU-hours on 100 A100 GPUs. For picking, more demonstrations helped; more houses at a fixed 50,000 demonstrations did not. Panel 5, the policy: a wrist camera and an external camera, each with the current frame and one from about 0.5 seconds before, go through the frozen SigLIP2 vision encoder into Molmo2-4B, a vision-language model, with the instruction, for example “put the banana in the black bowl”. Each layer of the action head, a diffusion transformer, reads the matching Molmo2 layer, and the joint angles go into the action head. The head turns noise into a chunk of 16 steps of joint targets; the robot runs the first 8, then plans again. Panel 6, the real test: Franka arm, pick-and-place in 4 real rooms, 30 trials per room and 120 per policy. π0-DROID 9.2% (11 of 120), π0.5-DROID 39.2% (47 of 120), MolmoBot-Pi0 46.7% (56 of 120), MolmoBot-Img 72.5% (87 of 120), MolmoBot 79.2% (95 of 120). The two DROID baselines trained on more than 10,000 hours of real demonstrations; the MolmoBot policies trained only in simulation. With the same π0 architecture, simulated data instead of real data goes from 9.2% to 46.7%. MolmoBot-Img sees one frame per camera instead of two.1 · the bet: no real robot datathe usual sim-to-real recipesimulatorreal demos orfine-tuningreal robotMolmoBotsimulator,at scalezero-shotno real-robot stepreal robotsim-to-realtrain in simulation, run for realzero-shotno real robot data, no fine-tuningcan simulation alone be enough?2 · randomize everythingone task, three random drawslookslights, textures, colorscameraposition, angle, field of viewphysicsfriction, object mass, joint dampingsetupobjects, their poses, arm start posemovesnoisy expert actions, no exact replayeach demo: a generated MolmoSpaces house, in MuJoCovariety over photorealism(objects, poses, views)3 · a scripted expert shows howit reads the simulator: true poses, a grasp listpregraspgraspliftpreplaceplacepostplacestow (home)slipped?retry,up to 3the expert has· exact object poses· grasps checked in simthe policy gets· images, 2 cameras· joint angles· the instructionthe policy learns to copy the expert4 · then 1.7 million of themDROID, real (same setup)MolmoBot-Data, simdemos76k1.7Mhours of robot time3505,704environments56494.2kπ0 and π0.5 trained on >10k h of real demos(2 robots; 1.5M on the Franka)(drawn from 200k+ houses)made in about 6,500 GPU-hours on 100 A100sfor picking, more demos helped;more houses at a fixed 50k demos did not5 · the policy: MolmoBotwristexternalnow and 0.5 s ago“put the bananain the black bowl”joint anglesSigLIP2, frozenMolmo2-4Bvision-language modelaction headdiffusion transformernoiserun 8, re-plan16 steps of joint targets6 · the real testFranka arm, pick-and-place in 4 real rooms30 trials per room, 120 per policyπ0-DROID9.2%π0.5-DROID39.2%MolmoBot-Pi046.7%MolmoBot-Img72.5%MolmoBot79.2%trained on >10k h of real demostrained only in simulationsame π0 architecture, simulated data:9.2% → 46.7%MolmoBot-Img: one frame per camera, not twothe data · made only in simulationscale it, learn from it, test it for real× 1.7 millionMolmoBot: a robot policy trained only in simulation, tested on real robotsPanel 1, the bet: the usual sim-to-real recipe goes from a simulator through real demonstrations or fine-tuning to the real robot. MolmoBot goes from a simulator at scale straight to the real robot, zero-shot, with no real-robot step. Sim-to-real means training in simulation and running for real; zero-shot here means no real robot data and no fine-tuning. The question: can simulation alone be enough? Panel 2, randomize everything: three random draws of the same tabletop task differ in lights, textures, colors and camera angle. The paper randomizes looks (lights, textures, colors), the camera (position, angle, field of view), physics (friction, object mass, joint damping), the setup (objects, their poses, the arm start pose) and the moves (noise on the expert actions, so the policy cannot learn an exact replay). Each demonstration takes place in a generated MolmoSpaces house, rendered in MuJoCo. The paper favors variety in objects, poses and viewpoints over photorealism. Panel 3, a scripted expert: a hand-written planner reads the simulator’s true object poses and a list of grasps checked in simulation, then moves through phases: pregrasp, grasp, lift, preplace, place, postplace, and stow, back to the home pose. If the grasp slips, it goes back and retries, up to 3 times; after that the demonstration is thrown out. The policy gets only images from two cameras, the joint angles and the instruction, and learns to copy the expert. Panel 4, the scale: demos, 76k in DROID (real, same arm setup) against 1.7M in MolmoBot-Data (simulated, two robots); hours of robot time, 350 in DROID (real, same arm setup) against 5,704 in MolmoBot-Data (simulated, two robots); environments, 564 in DROID (real, same arm setup) against 94.2k in MolmoBot-Data (simulated, two robots). About 1.5 million of the demonstrations are on the Franka arm. The π0 and π0.5 baselines trained on more than 10,000 hours of real demonstrations. The 94.2k environments are drawn from more than 200,000 MolmoSpaces houses. The data took about 6,500 GPU-hours on 100 A100 GPUs. For picking, more demonstrations helped; more houses at a fixed 50,000 demonstrations did not. Panel 5, the policy: a wrist camera and an external camera, each with the current frame and one from about 0.5 seconds before, go through the frozen SigLIP2 vision encoder into Molmo2-4B, a vision-language model, with the instruction, for example “put the banana in the black bowl”. Each layer of the action head, a diffusion transformer, reads the matching Molmo2 layer, and the joint angles go into the action head. The head turns noise into a chunk of 16 steps of joint targets; the robot runs the first 8, then plans again. Panel 6, the real test: Franka arm, pick-and-place in 4 real rooms, 30 trials per room and 120 per policy. π0-DROID 9.2% (11 of 120), π0.5-DROID 39.2% (47 of 120), MolmoBot-Pi0 46.7% (56 of 120), MolmoBot-Img 72.5% (87 of 120), MolmoBot 79.2% (95 of 120). The two DROID baselines trained on more than 10,000 hours of real demonstrations; the MolmoBot policies trained only in simulation. With the same π0 architecture, simulated data instead of real data goes from 9.2% to 46.7%. MolmoBot-Img sees one frame per camera instead of two.1 · the bet: no real robot datathe usual sim-to-real recipesimulatorreal demos orfine-tuningreal robotMolmoBotsimulator,at scalezero-shotno real-robot stepreal robotsim-to-realtrain in simulation, run for realzero-shotno real robot data, no fine-tuningcan simulation alone be enough?2 · randomize everythingone task, three random drawslookslights, textures, colorscameraposition, angle, field of viewphysicsfriction, object mass, joint dampingsetupobjects, their poses, arm start posemovesnoisy expert actions, no exact replayeach demo: a generated MolmoSpaces house, in MuJoCovariety over photorealism(objects, poses, views)3 · a scripted expert shows howit reads the simulator: true poses, a grasp listpregraspgraspliftpreplaceplacepostplacestow (home)slipped?retry,up to 3the expert has· exact object poses· grasps checked in simthe policy gets· images, 2 cameras· joint angles· the instructionthe policy learns to copy the expert4 · then 1.7 million of themDROID, real (same setup)MolmoBot-Data, simdemos76k1.7Mhours of robot time3505,704environments56494.2kπ0 and π0.5 trained on >10k h of real demos(2 robots; 1.5M on the Franka)(drawn from 200k+ houses)made in about 6,500 GPU-hours on 100 A100sfor picking, more demos helped;more houses at a fixed 50k demos did not5 · the policy: MolmoBotwristexternalnow and 0.5 s ago“put the bananain the black bowl”joint anglesSigLIP2, frozenMolmo2-4Bvision-language modelaction headdiffusion transformernoiserun 8, re-plan16 steps of joint targets6 · the real testFranka arm, pick-and-place in 4 real rooms30 trials per room, 120 per policyπ0-DROID9.2%π0.5-DROID39.2%MolmoBot-Pi046.7%MolmoBot-Img72.5%MolmoBot79.2%trained on >10k h of real demostrained only in simulationsame π0 architecture, simulated data:9.2% → 46.7%MolmoBot-Img: one frame per camera, not twothe data · made only in simulationthe policy, then the real testMolmoBot: a robot policy trained only in simulation, tested on real robotsPanel 1, the bet: the usual sim-to-real recipe goes from a simulator through real demonstrations or fine-tuning to the real robot. MolmoBot goes from a simulator at scale straight to the real robot, zero-shot, with no real-robot step. Sim-to-real means training in simulation and running for real; zero-shot here means no real robot data and no fine-tuning. The question: can simulation alone be enough? Panel 2, randomize everything: three random draws of the same tabletop task differ in lights, textures, colors and camera angle. The paper randomizes looks (lights, textures, colors), the camera (position, angle, field of view), physics (friction, object mass, joint damping), the setup (objects, their poses, the arm start pose) and the moves (noise on the expert actions, so the policy cannot learn an exact replay). Each demonstration takes place in a generated MolmoSpaces house, rendered in MuJoCo. The paper favors variety in objects, poses and viewpoints over photorealism. Panel 3, a scripted expert: a hand-written planner reads the simulator’s true object poses and a list of grasps checked in simulation, then moves through phases: pregrasp, grasp, lift, preplace, place, postplace, and stow, back to the home pose. If the grasp slips, it goes back and retries, up to 3 times; after that the demonstration is thrown out. The policy gets only images from two cameras, the joint angles and the instruction, and learns to copy the expert. Panel 4, the scale: demos, 76k in DROID (real, same arm setup) against 1.7M in MolmoBot-Data (simulated, two robots); hours of robot time, 350 in DROID (real, same arm setup) against 5,704 in MolmoBot-Data (simulated, two robots); environments, 564 in DROID (real, same arm setup) against 94.2k in MolmoBot-Data (simulated, two robots). About 1.5 million of the demonstrations are on the Franka arm. The π0 and π0.5 baselines trained on more than 10,000 hours of real demonstrations. The 94.2k environments are drawn from more than 200,000 MolmoSpaces houses. The data took about 6,500 GPU-hours on 100 A100 GPUs. For picking, more demonstrations helped; more houses at a fixed 50,000 demonstrations did not. Panel 5, the policy: a wrist camera and an external camera, each with the current frame and one from about 0.5 seconds before, go through the frozen SigLIP2 vision encoder into Molmo2-4B, a vision-language model, with the instruction, for example “put the banana in the black bowl”. Each layer of the action head, a diffusion transformer, reads the matching Molmo2 layer, and the joint angles go into the action head. The head turns noise into a chunk of 16 steps of joint targets; the robot runs the first 8, then plans again. Panel 6, the real test: Franka arm, pick-and-place in 4 real rooms, 30 trials per room and 120 per policy. π0-DROID 9.2% (11 of 120), π0.5-DROID 39.2% (47 of 120), MolmoBot-Pi0 46.7% (56 of 120), MolmoBot-Img 72.5% (87 of 120), MolmoBot 79.2% (95 of 120). The two DROID baselines trained on more than 10,000 hours of real demonstrations; the MolmoBot policies trained only in simulation. With the same π0 architecture, simulated data instead of real data goes from 9.2% to 46.7%. MolmoBot-Img sees one frame per camera instead of two.1 · the bet: no real robot datathe usual sim-to-real recipesimulatorreal demos orfine-tuningreal robotMolmoBotsimulator,at scalezero-shotno real-robot stepreal robotsim-to-realtrain in simulation, run for realzero-shotno real robot data, no fine-tuningcan simulation alone be enough?2 · randomize everythingone task, three random drawslookslights, textures, colorscameraposition, angle, field of viewphysicsfriction, object mass, joint dampingsetupobjects, their poses, arm start posemovesnoisy expert actions, no exact replayeach demo: a generated MolmoSpaces house, in MuJoCovariety over photorealism(objects, poses, views)3 · a scripted expert shows howit reads the simulator: true poses, a grasp listpregraspgraspliftpreplaceplacepostplacestow (home)slipped?retry,up to 3the expert has· exact object poses· grasps checked in simthe policy gets· images, 2 cameras· joint angles· the instructionthe policy learns to copy the expert4 · then 1.7 million of themDROID, real (same setup)MolmoBot-Data, simdemos76k1.7Mhours of robot time3505,704environments56494.2kπ0 and π0.5 trained on >10k h of real demos(2 robots; 1.5M on the Franka)(drawn from 200k+ houses)made in about 6,500 GPU-hours on 100 A100sfor picking, more demos helped;more houses at a fixed 50k demos did not5 · the policy: MolmoBotwristexternalnow and 0.5 s ago“put the bananain the black bowl”joint anglesSigLIP2, frozenMolmo2-4Bvision-language modelaction headdiffusion transformernoiserun 8, re-plan16 steps of joint targets6 · the real testFranka arm, pick-and-place in 4 real rooms30 trials per room, 120 per policyπ0-DROID9.2%π0.5-DROID39.2%MolmoBot-Pi046.7%MolmoBot-Img72.5%MolmoBot79.2%trained on >10k h of real demostrained only in simulationsame π0 architecture, simulated data:9.2% → 46.7%MolmoBot-Img: one frame per camera, not twothe data · only simulatedscale, learn, test for real× 1.7M

MolmoBot learns by behavior cloning, copying the expert's actions. Its action head uses flow matching, which learns to turn random noise into an action chunk a little at a time. The paper takes this from π0; written out as in the released code, training minimizes L(θ)=E(o,ℓ,q,A)∼D,  τ,  ϵ[∥vθ(Aτ,τ,o,ℓ,q)−(A−ϵ)∥2],Aτ=τA+(1−τ) ϵ\mathcal{L}(\theta) = \mathbb{E}_{(o,\ell,q,A)\sim\mathcal{D},\;\tau,\;\epsilon}\Big[\big\|v_\theta(A^\tau, \tau, o, \ell, q) - (A - \epsilon)\big\|^2\Big], \quad A^\tau = \tau A + (1-\tau)\,\epsilonL(θ)=E[∥vθ(Aτ,τ,o,ℓ,q)−(A−ϵ)∥2]over (o,ℓ,q,A)∼D, τ, ϵAτ=τA+(1−τ) ϵ\begin{aligned}&\mathcal{L}(\theta) = \mathbb{E}\Big[\big\|v_\theta(A^\tau, \tau, o, \ell, q) - (A - \epsilon)\big\|^2\Big]\\&\text{over } (o,\ell,q,A)\sim\mathcal{D},\ \tau,\ \epsilon\\&A^\tau = \tau A + (1-\tau)\,\epsilon\end{aligned} Here D\mathcal{D} is the Franka demonstrations (about 1.5 million), mixed by task; oo is two frames from each of a wrist camera and an external camera; ℓ\ell is the instruction, for example “put the banana in the black bowl”; and qq is the joint angles. AA is the expert's next 16 actions, each a target position for every joint and the gripper, called an action chunk. A mixing time τ\tau between 0 and 1 blends it with Gaussian noise ϵ\epsilon of the same shape into the noisy chunk AτA^\tau: at τ=0\tau = 0 it's pure noise, and at τ=1\tau = 1 it's the expert's chunk. The action head vθv_\theta, a DiT (diffusion transformer) that reads the Molmo2 vision-language model layer by layer, predicts the direction from noise toward the clean chunk. At run time it follows vθv_\theta in small steps from pure noise to a chunk, runs 8 of the 16 actions, then plans a new chunk. The head is cheap next to the vision-language model, so the authors draw 8 values of τ\tau for each example and train on all of them at once. Nothing in the loss mentions the real world. Every action the policy learns comes from a scripted expert in simulation; only its starting weights for vision and language, from SigLIP2 and Molmo2, come from pretraining on image and text data.

Deshpande, Guru, Hendrix, Jauhri and 22 coauthors · Ai2, UW, UCLA, TU Darmstadt, Princeton · arXiv v2 · 26 Mar 2026
π0.5-DROID: 39.2% is 47 of 120 trials (Fig. 7, Table 10); Table 6 prints 31.3%.

← All writing