FetchMan Learning Visual Humanoid Loco-Manipulation Policies from Simulated Experiences

Omar Rayyan1 Zhi Li1 Max Argus2 Yuxin Jiang1 Chang Yu1 Chenfanfu Jiang1 Yuchen Cui1

1UCLA

2Allen AI & UW

Trained in simulation

ZERO-SHOT TRANSFER

Deployed in the real world

No real-world training data or fine-tuning.

Abstract

TLDR. Can a humanoid learn to walk up to objects and pick them from simulated experience alone? We generate loco-manipulation data across 150,000 scenes, train FetchMan by cloning it, break cloning’s performance ceiling with Flow-GRPO, and deploy the policy zero-shot on a real Unitree G1.

Read more

Text-conditioned policy — “Fetch the

×2
×2

Click any clip to play it above.

1. Loco-Manipulation Data Generation in MolmoSpaces

1Sample a random house

+~150khouses

2Sample a random object

+~50kobjects

3Sample a collision-free start pose and A* path

4Domain randomize across axes

Every episode resamples textures, per-light position, colour, intensity and on/off state, both cameras' intrinsics and extrinsics, the supporting surface height, the target's pose on it, and per-command action noise.

Appearance randomization (lighting and textures)

Surface height randomization

Camera randomization (intrinsics and extrinsics)

Each clip is one frozen scene with a single axis re-rolling, so the effect of that axis is visible on its own.

5Interactive episodes

2. Flow-GRPO Refinement

Behavior cloning saturates well below the scripted demonstrator, and more demonstrations stop helping. Flow-GRPO picks up from the cloned policy and keeps climbing on the same task, in both the single-object and multi-object settings.

same start success · R = 1 failure · R = 0

Each rollout integrates the flow in five Gaussian steps, each draw with a closed-form likelihood. The noise alone separates the outcomes; successes are reinforced, failures pushed away.

Two-stage training pipeline: a task sampler instantiates simulated environments where a scripted policy generates demonstrations for behavior cloning, then groups of identical resets feed on-policy rollouts to a group-relative GRPO update
Stage 1 clones scripted demonstrations; Stage 2 refines the policy in place with online GRPO over groups of identical resets.
Success rate versus BC training steps at 5k, 50k and 150k demonstrations, saturating near 67 percent, then versus GRPO iterations rising to 83 percent
Single object. Cloning plateaus at 67% and more demonstrations do not move it; Flow-GRPO reaches 83%. From the weaker 5k checkpoint (orange), the same refinement stalls near 42%.
Success rate versus BC training steps peaking near 40 percent, then versus GRPO iterations rising to 62 percent
Multiple objects. Cloning peaks at 40%; Flow-GRPO reaches 62%.

What the policy sees

Wrist and head camera views across many simulated scenes, either side of the G1 in simulation
The same two streams across simulated scenes.
“bottle” text-conditioned
head camera (fisheye)
wrist camera

Click any episode to swap both views.

Scripted rollouts in simulation

third-person head camera (fisheye) wrist camera
pick up the bowl val_1343

The scripted demonstrator, with the two streams the policy actually sees. Five examples of many.

Architecture

Head and wrist RGB plus an object name go through a frozen DINOv3.txt encoder, proprioception through an MLP; the resulting tokens feed a flow-matching DiT that emits upper-body targets to a joint-level PD controller and base commands to the lower-body controller
STAGE 1 — BC
A frozen DINOv3 ViT-B/16 emits patch tokens per camera; proprioception becomes a single state token. A DiT-style action head predicts H = 16 commands and executes the first 8. The 11 absolute target dimensions are re-parameterized as per-chunk deltas.
STAGE 2 — RL
Flow-GRPO replaces the deterministic Euler step with a Gaussian transition matching the rectified-flow schedule, giving closed-form per-step log-likelihoods. Each update collects 64 groups of 8 episodes from a shared reset state, differing only in injected SDE noise. Advantage is the standardized group-relative return — no value function — and uniform groups are dropped. PPO-style dual-clipped objective plus a KL penalty to the frozen BC policy. Reward: 1 for grasp and lift, 0 otherwise.

RL gains land where cloning fails

Loco-manipulation rises from 67% to 83% in simulation and from 56.7% to 73.3% on hardware. Manipulation alone barely moves, 72.7% to 77.2%. The grasp was already cloned well. The walking was not.

BC
BC + RL

Same episode, cloned policy (left) versus Flow-GRPO refined (right). The cloned policy rarely repositions its base once the object is close; the refined policy does, and moves between walking and manipulating more readily.

Simulation SR [%]Real-World SR [%]
MethodManip.Loco-Manip.Manip.Loco-Manip.
Num. trials1001002230
Ours (BC)75.0 ± 4.367.0 ± 4.772.7 ± 9.556.7 ± 9.0
Ours (BC + RL)79.0 ± 4.183.0 ± 3.877.2 ± 8.973.3 ± 8.1

What enables zero-shot transfer

Two choices carry the sim-to-real transfer: the frozen DINOv3 encoder and delta-action targets. Swapping either one collapses real-world performance to zero on the full task.

Simulation SR [%]Real-World SR [%]
VariantManip.Loco-Manip.Manip.Loco-Manip.
Ours (DINOv3, delta)75.0 ± 4.367.0 ± 4.772.7 ± 9.556.7 ± 9.0
  with SigLIP58.0 ± 4.942.0 ± 4.98.3 ± 8.00.0
  with absolute actions62.0 ± 4.945.0 ± 5.016.7 ± 10.80.0

Ablations over the BC configuration. Real-world trials: 22 manipulation and 30 loco-manipulation for the reference, 12 and 10 for the ablation variants.

Acknowledgments

We thank Nirvana for providing the Unitree G1 robot used in our experiments, and Mahi Shafiullah for helpful discussions throughout.