Paper Feed

Issue 41 · Pick 03 Robotics ✓ read

VioLA: Learning Generalist Humanoid Control Policies from Human Data

Mert Albaba, Jens Beißwenger, Anna Manasyan, Daniel Marta, Michael J. Black, Wieland Brendel, Andreas Krause, Georg Martius, Martin Riedmiller

TL;DR: VioLA is a generalist humanoid policy whose action space is not joint commands but motion latents — compact vectors from pretrained whole-body and hand controllers whose encoders happen to map human motion and robot motion into the same space. That one design choice kills two birds: a frozen controller handles the brutal balance/coordination problem, and raw human recordings become directly usable action labels. Trained on 140.6M frames (93.2% human), it follows locomotion instructions on a real Unitree G1 zero-shot at 100% (30/30) and manipulation at 88.6% (31/35), and a variant trained only on human demonstrations still gets 40% real-robot locomotion success. The caveat is that the evaluation is narrow — thirteen tasks whose families appear in training — and the baselines are off-the-shelf models that were never meant to work without fine-tuning.

Two bottlenecks, one shared cause

If you want a humanoid that follows instructions like "walk to the table and close the laptop," you hit two walls.

First, the action space. A humanoid's joints are tightly coupled through balance: reaching shifts the center of mass, stepping changes what's reachable. A policy predicting raw joint targets has to learn both what the instruction demands and how to keep 29 joints coordinated without falling — simultaneously, from demonstrations. Robot arms don't have this problem; a fixed-base arm can't fall over.

Second, data. Humanoid teleoperation needs a robot, an operator, and a rig, so demonstration corpora are tiny compared to what manipulation VLAs train on. The practical consequence: current humanoid generalists like GR00T and \Psi_0 are pretrained broadly but then fine-tuned with task-specific teleoperation before each deployment. "Generalist" in name, per-task data collection in practice.

Human video is the obvious workaround — people walk, reach, and handle objects all day, and ego-centric motion-capture datasets exist at scale. But a human recording contains no robot joint commands, which is exactly what the policy is supposed to predict. Prior fixes are each costly: have a robot physically shadow the human (needs a robot per demo), or retarget the human skeleton to the robot's kinematics and supervise on the result (a lossy, per-recording optimization).

The insight: the controller's latent space is already the bridge

The paper's observation is that the solution to the coordination problem already contains the solution to the data problem.

Recent latent motion controllers — SONIC is the one used here — are trained as encoder–decoder pairs: an encoder summarizes a short window of motion as a 64-dimensional latent, and a decoder (the whole-body controller) converts that latent plus the robot's current proprioceptive state into joint commands that track the motion while maintaining balance. Crucially, SONIC has both a human motion encoder and a robot motion encoder mapping into the same latent space. Encode a video of a person walking, feed the latent to the controller, and the robot walks.

So don't make the generalist policy predict joints. Make it predict latents. Then:

  • The frozen controller absorbs the entire coordination/balance problem. The policy only decides which motion, not how to execute it.
  • Every annotated human recording is already labeled in the policy's action space — just run the human encoder over it. No retargeting optimization, no shadowing robot.

SONIC covers only the body, so the authors pretrain a parallel hand module with the same structure: human and robot hand encoders sharing a 64-dim latent space, plus decoders for the actual hands (Inspire and Dex3). Concatenating body and hand latents gives VioLA's full action: \mathbf{z}_t = [\mathbf{z}_t^{\text{body}}; \mathbf{z}_t^{\text{hand}}] \in \mathbb{R}^{128}.

Training targets Human recordings 131M frames (93.2%) Robot demonstrations 9.6M frames (6.8%) Human encoders ❄ Robot encoders ❄ Shared latent space 64-d body + 64-d hand supervision (flow matching) Deployment egocentric image instruction proprioception Generalist policy 🔥 predicts latent chunks Body controller ❄ Hand decoder ❄ z joint + finger commands @ 50 Hz ❄ frozen · 🔥 only trained component
The policy's action space is the shared latent space of pretrained encoder–decoder pairs. Human and robot encoders produce identical-format targets, so a human recording supervises the same prediction head as a robot demonstration — and the frozen controller handles balance at execution.

A useful analogy: joint-level control is like dictating a dance by naming every muscle contraction; latent control is like calling out the steps and letting a trained dancer's reflexes handle execution. VioLA learns choreography, not biomechanics. And because the "step vocabulary" is shared between humans and the robot, watching a person dance is a valid lesson.

The mechanism, concretely

The policy p_\theta (built on a VLA backbone — GR00T N1.7 in the main configuration) takes an egocentric image I_t, an instruction \ell, and robot proprioception \mathbf{s}_t, and predicts a chunk of H successive 128-dim latents (H{=}40 for GR00T) via flow matching. The latents are technically FSQ codes (quantized to a grid of \{k/16\}), but the action expert regresses them as continuous coordinates. At 50 Hz, the frozen body controller decodes each body latent against the robot's live proprioceptive history, and the hand decoder produces finger targets. Only the policy trains; every encoder and decoder stays frozen.

Two implementation details are worth flagging because they're where the obvious version of this idea would fail:

Closed-loop target construction. Human recordings lack robot proprioception, and body latents are expressed relative to the executing robot's heading — which drifts from the demonstrator's. So targets aren't computed by naively encoding the human trajectory. Instead, the frozen controller tracks the human motion in simulation, and at each step the encoder computes the latent relative to the simulated robot's current heading while the simulator supplies aligned proprioceptive states. If the robot turns toward a table more slowly than the person did, the next latent encodes the turn that remains. This turns human data into targets a real robot can actually follow, precomputed before training.

Real-time chunking. Prediction takes ~160 ms (8 control steps), during which the robot keeps executing the old chunk. Independently generated chunks can disagree at the handoff point and jerk the robot. VioLA applies real-time chunking in latent space: the next prediction is conditioned on the latents already scheduled to execute. The measured effect is large — the biggest step-change in the body latent across a chunk switch drops from 0.332 to 0.064 while standing still, and from 0.455 to 0.070 while raising an arm.

The data pool: EgoSuite human recordings (131M frames, 728 hours) plus four robot corpora (Humanoid Everyday, PSI, UnifoLM-WBT, LeVERB) totaling ~9.6M frames. Training: 150k steps on human data only, then 50k steps sampling all five corpora uniformly.

The evidence

On a real Unitree G1 with five-fingered Inspire hands, in the authors' lab (a new environment with different object instances), no task-specific fine-tuning:

Zero-shot real-robot success (Unitree G1)success (%)02040608010016.70100Locomotion (6 tasks, 30 trials)08.688.6Manipulation (7 tasks, 35 trials)GR00T N1.7 (released)Ψ₀ (released)VioLASections 4.2–4.3 / Figure 3. Baselines are the released checkpoints, which by design expect task-specific fine-tuning before deployment.

Locomotion spans standing, arm raising, bending, walking, sitting, and standing up from a chair. Manipulation includes rotating a chair, closing a laptop and a kettle, placing a dumpling toy, pushing a duck, hanging a coat (receive it, fold it over the other arm), and storing a shampoo bottle — the last two are where the four failures live, all involving knocking over or dropping the object. An eighth task, bottle carrying (grasp from a person, walk, place upright), fails 5/5 for every variant and is reported separately; including it drops manipulation to 77.5%.

The most interesting experiments are the data-source ablations:

What human data buys (locomotion vs manipulation)success (%)0204060801004080100Locomotion094.388.6ManipulationHuman-only trainingRobot-only trainingHuman-then-mixed (VioLA)Section 4.5 / Figure 6. Human-only manipulation not evaluated (shown as 0 for absence of a reported result, not a measured failure). Robot-only and mixed variants each trained 200k steps.

Three takeaways. First, a policy trained exclusively on human demonstrations — zero robot data in generalist training — achieves 40% locomotion success on real hardware, walking to a couch and squatting on command. That's the cleanest demonstration that encoded human motion really is action supervision, not just representation pretraining. Second, mixing human data fixes behaviors robot data lacks: the robot-only variant fails all five bend-down trials (the robot corpora apparently don't cover it), while mixed training gets 30/30 locomotion. Third — and the paper is admirably honest here — robot-only training beats mixed training on manipulation, 94.3% vs 88.6%, mostly via the shampoo grasp. Human data teaches gross body motion well; precise grasping still prefers real robot experience.

The backbone comparison (Section 4.6) shows the recipe isn't married to GR00T: a DiT4DiT world-action-model variant also hits 100% locomotion, though it collapses to 25.7% on manipulation; \pi_{0.5} lands in between. Since all three share the same frozen controllers, the gaps isolate the quality of the latent predictions — the backbone matters a lot for sequencing reach-grasp-release, less for gross motion.

One more result deserves mention because it quantifies the action-space compression: a full 10-second chair-rotation execution uses only ~60 distinct body motion tokens and ~31 hand tokens (after grouping near-identical latents, calibrated so that grouping changes decoded poses by less than the controller's own tracking error). The policy is genuinely selecting from a compact motion vocabulary while 50 Hz coordination happens below it.

What to be skeptical about

The baseline comparison is less damning than it looks. GR00T N1.7 and \Psi_0 are designed to be fine-tuned per task; evaluating their released checkpoints zero-shot mostly confirms that the standard paradigm requires fine-tuning — which is the paper's premise, not a scalp. The 100%-vs-16.7% headline is really an architecture-regime comparison, not a fair fight between tuned systems.

"Zero-shot" means held-out episodes, environment, and object instances — not held-out task families. The six locomotion instructions come from LeVERB and the seven manipulation tasks from Humanoid Everyday, and both corpora contribute training data. So this is generalization across scenes and objects within known task types, not novel-instruction generalization. The triage question — how general is the locomotion claim versus a narrow instruction set — lands on "narrow instruction set, generalized across environments."

Scale. Thirteen tasks, five trials each, one robot, one lab. The bottle-carrying failure (grasp timing, grasp-to-walk transition, upright release — each variant fails a different stage) suggests contact-rich, multi-phase manipulation is still beyond the current hand module, which outputs finger positions with no contact-force feedback.

Inherited ceilings. The policy can only ever express what SONIC's latent space and the hand module can execute. Dynamic or out-of-distribution motions are structurally off the table. And scaling human supervision requires body/hand motion annotations (SMPL + MANO fits), not raw video — EgoSuite comes annotated; YouTube does not.

Why it matters anyway

The result that survives all the caveats: a real humanoid executed instruction-following behaviors learned from human recordings alone, because the action space was chosen so human motion is natively a robot command. That reframes the humanoid data problem. Instead of "how do we scale teleoperation?" the question becomes "how good can the shared encoder–decoder pair get, and how far can motion-annotated human video take us?" — a question where the data supply is orders of magnitude more favorable. Concurrent work (MotionWAM predicting SONIC latents, noted in related work) suggests this latent-action-space framing is becoming a design pattern, and VioLA is the cleanest end-to-end demonstration of it so far, including the unglamorous machinery (closed-loop sim labeling, latent-space RTC) that makes it actually run on hardware.

If you read one part of the paper, make it Section 3 plus Appendix A.1 — the closed-loop target construction is the non-obvious engineering that makes human data usable, and it's the piece you'd most likely get wrong reimplementing this. Section 4.5's human-vs-robot ablation is the second stop: it's where the paper tells you honestly what human data does and doesn't buy.