Our Team

Avinash Narula Avinash Narula*
Venki Parsuram Venki Parsuram
John Marangola John Marangola
Martin Peticco Martin Peticco

*Equal contribution · Improbable AI Lab, MIT

Paper overview

Joga is a full-stack system for humanoid dribbling, shooting, passing, and receiving. A torso-mounted actuated neck gives the robot active vision, and data-driven alignment of perception and dynamics preserves the speed and precision learned in simulation when the policies run on hardware.

2.31 m/s

peak dribbling speed on hardware

10 min

of hardware data per alignment model

5/5

real-world dribble-to-pass and dribble-to-shoot transitions

Abstract

Exhibiting human-like agility in object interaction is a long-standing goal in humanoid robotics. Soccer offers a demanding case study, requiring dynamic coordination of perception, locomotion, and foot-ball contacts. Reinforcement learning in simulation is a promising approach for learning agile object interaction because it can directly optimize task outcomes, but sim-to-real gaps in perception and dynamics make transfer to reality challenging. We introduce Joga (Joint Optimization of Gaze and Action), a full-stack system for humanoid dribbling, shooting, passing, and receiving that perceives the ball through an RGB camera mounted on a custom 2-DoF actuated neck. Our approach combines hardware design with data-driven model alignment to close the sim-to-real gap. The torso-mounted actuated neck enables rapid and stable active vision, while a learned perception alignment model learns the distributional bias and noise of onboard ball observations to achieve the precision needed for sharp turns and dribbling at high speeds. For dribbling, we further learn a whole-body residual action model from 10 minutes of hardware data and use the corrected simulator to finetune the policy, improving its speed. On hardware, Joga reaches a peak dribbling speed of 2.31 m/s while maintaining more ball controllability than domain-randomization and linear-perception-model baselines. The learned skills can be chained, transitioning from controlled dribbling to shooting or passing, and from receiving an incoming pass to dribbling. Together, these results show how limited real-world data and targeted modeling can preserve agile humanoid object interaction learned entirely in simulation.

Technical Summary

Real-world skills

Four agile soccer skills, all 31 actuators, onboard sensing only

On a Unitree G1, each skill policy jointly controls the whole body and the neck, coordinating where the robot looks with how it moves. Dribbling repeatedly redirects a moving ball while locomoting; shooting and passing impart directed impulses; receiving brings an incoming ball under control so it can be kept for subsequent play. At deployment the robot relies only on its onboard camera and proprioception.

High-speed dribbling: 1.71 ± 0.16 m/s sustained, 2.31 m/s peak
Sharp 135° turns while dribbling
Delicate first touch when receiving
Dribble-to-shoot transition
Dribble-to-pass transition

The problem

Small errors in sight and motion break precise foot-ball contact

Reinforcement learning lets whole-body strategies emerge from task objectives such as “dribble forward at 2 m/s” or “pass 30° right at 5 m/s,” and parallel simulation makes the required trial and error practical. But the simulator is not the robot. The ball must stay in view as the robot accelerates and turns, and even when it is visible, onboard detections carry bias and noise that depend on both the ball's position and the robot's motion. On the actuation side, parallel-linkage mechanisms introduce configuration-dependent coupling and reflected inertia, and shared power limits can make available torque depend on whole-body demand.

Domain randomization can tolerate these discrepancies, but overly broad randomization favors slow, conservative strategies that work across many simulated systems rather than the one real robot. Joga instead improves the fidelity of the nominal system using limited real-world data, and keeps targeted randomization only for remaining variability in terrain, ball, and scene.

Perception gaps cause unexpected foot-ball contacts
Actuator gaps cause stumbling

How can we preserve the speed, precision, and fluidity learned in simulation when a humanoid plays soccer in the real world?

The system

Joga: close both sides of the sensing-action loop

  1. 1

    Active vision hardware

    A custom torso-mounted 2-DoF neck carries an RGB camera for rapid, stable gaze changes during fast locomotion.

  2. 2

    Perception alignment model

    Learn the state-dependent bias, noise, and dropout of onboard ball detection from paired detector and motion-capture data.

  3. 3

    Whole-body actuator network

    Learn joint-position command corrections from 10 minutes of hardware dribbling, then finetune the dribbling policy in the corrected simulator.

  4. 4

    Distributional skill chaining

    Finetune passing and shooting from states visited during dribbling so skills hand off mid-stride.

(a) Train the PAM on paired detector bounding boxes, proprioception, and motion capture. (b) Train the WB-UAN on proprioceptive replay data to align simulated and real actuation. (c) Train soccer skill policies in the aligned simulator; finetune dribbling with the WB-UAN for high speeds, and finetune passing and shooting from dribbling states for skill chaining.

A neck built for the sim-to-real gap

The neck mounts directly to the torso and is driven by two DYNAMIXEL XC330-M288-T servos. It deliberately avoids external linkages, gears, and bearings: more complex transmissions introduce backlash, compliance, slippage, and calibration error, which slow the neck down and widen the sim-to-real gap. The simple design gives a large range of motion and speed for tracking the ball through robot and ball motion, and after a simple system identification it needs no neck domain randomization during policy training.

Perception alignment

Learn what the camera actually sees

The policy observes the ball position back-projected from the detector's 2D bounding box through a pinhole model. Despite intrinsic and hand-eye calibration, this estimate carries systematic, state-dependent errors that simulation lacks: depth is biased because the camera is not a perfect pinhole, noise grows with range and extrinsic mismatch, and the detector drops out at a range-dependent rate.

The Perception Alignment Model (PAM) replaces perception domain randomization entirely. Working in bounding-box space, so it mirrors the real vision pipeline, it predicts a heteroscedastic Gaussian over the box residual plus a visibility probability, conditioned on the true ball position, base angular velocity, neck and waist joint velocities, projected gravity, and the ball position in the base frame. PAM is trained on 10 minutes of paired onboard detections and motion-capture labels, then frozen and sampled at every control step during policy training.

The learned error structure is far from isotropic: depth bias is about +5 cm at dribbling range and changes sign beyond roughly 2 m, noise grows with both range and ego-motion, and dropout rises from a few percent at close range to over 30% at 2.5 m.

On held-out hardware data, PAM captures the bias and noise of onboard ball detection against both range and ego-motion; linear and DR baselines under- or over-estimate it.
Real-world square steering success
PolicySuccess
DR3/4
Linear1/4
PAM4/4
An operator, blind to the policy, joysticks the robot to dribble a 5 m square.

To stress-test the benefit, we train policies in a base simulator and deploy them in a target simulator with a large perception gap: a miscalibrated pinhole model, a 5% focal-length error, a principal-point shift, lens distortion, and a small extrinsic offset. The PAM policy nearly matches an oracle trained directly in the target environment, while DR and linear-model policies degrade as the course gets harder.

Sim-to-sim course tracking (%, higher is better, 5 seeds)
PolicyEasy (45°)Medium (90°)Hard (180°)
DR77.5 ± 0.553.0 ± 0.429.9 ± 0.5
Linear76.9 ± 0.354.5 ± 0.533.5 ± 0.3
PAM86.7 ± 0.469.2 ± 0.257.4 ± 0.4
Oracle89.4 ± 0.370.9 ± 0.358.0 ± 0.3

Dynamics alignment

A whole-body residual for agile dribbling

Accurate perception is not enough if the simulator mispredicts the motion produced by the policy's commands. Actuation discrepancies on a humanoid can depend on the configuration, motion, and commands of many joints at once, so the Whole-Body Unsupervised Actuator Network (WB-UAN) extends the joint-local residual of Contact-UAN to a single network conditioned on the whole body. It predicts a correction to the joint-position target:

δqt = μ(ot),    st+1 = fsim(st, qtbase + δqt).

The simulator's rigid-body dynamics, contact solver, and integration are kept intact; only the actuator input is corrected. WB-UAN observes a causal history of absolute joint positions, velocities, and uncorrected targets across the entire body. It is fit with PPO on short replays of 10 minutes of hardware dribbling, each initialized with Contact-UAN's contact-consistent reset, so it needs neither torque labels, motion capture, nor gradients through the simulator. The dribbling policy is then finetuned in the frozen, corrected simulator; only the policy runs on the robot.

Replaying recorded hardware commands in simulation: WB-UAN rollouts (teal) track the hardware reference (white) more closely than the simulator without a residual (orange).

Hardware replay rollout RMSE
ModelTrainTest
No residual0.08790.0885
Contact-UAN0.04950.0472
WB-UAN0.03790.0495
Sharp 135° turns at 1.2 m/s
PolicySuccessDir. error (°)
DR3/5−18.1 ± 4.5
Linear4/5−16.3 ± 12.0
PAM4/5−15.6 ± 13.7
PAM + WB-UAN5/5−14.5 ± 3.4
High-speed dribbling over 7 m
PolicySuccessAvg. (m/s)Peak (m/s)
PAM5/111.35 ± 0.201.56
PAM + WB-UAN5/51.71 ± 0.162.31

With corrected actuator dynamics, the dribbling policy is the most stable and precise on sharp turns and pushes both sustained and peak ball speed well above the PAM-only policy, while remaining easier for a blind operator to control.

Skill chaining

Strike from mid-stride, not from a standstill

A passing or shooting policy trained from a stationary reset may succeed in isolation yet fail when invoked during dribbling, with the robot mid-stride and the ball already moving. We roll out the dribbling policy in simulation, collect a bank of robot and ball states (including velocities, so gait phase and ball motion are preserved), and finetune the passing and shooting policies from states sampled uniformly from this bank. The dribbling policy stays fixed, and at deployment control simply switches to the striking policy from whatever state the robot and ball are in.

In simulation, finetuning over the dribbling state distribution reduces missed strikes, falls, and strike speed and heading errors. On hardware, chaining alone reaches 4/5 on dribble-to-pass and 3/5 on the harder dribble-to-shoot; combined with PAM and WB-UAN, both reach 5/5.

Switching from dribbling to shooting in simulation: a striking policy trained from random initial states (left) versus one finetuned with distributional skill chaining (right).

Real-world skill transitions (successes out of 5 trials)
PolicyDribble → passDribble → shoot
Chaining only4/53/5
Chaining + PAM + WB-UAN5/55/5

More on hardware

Receiving, ball skills, and playing with people

Receive-to-dribble
Receive-to-pass (5× speed)
Shifty ball skills
Human-robot interaction

Questions & answers

Common questions

What does the name mean?

Joga stands for Joint Optimization of Gaze and Action: each policy controls the neck and the body together. It also nods to “joga bonito,” Portuguese for “play beautifully,” a soccer philosophy of creativity, joy, and flair.

Why a custom torso-mounted neck?

The robot must keep the ball in view from long-range approaches down to close-range foot contact, including while accelerating and turning. A torso-mounted 2-DoF neck with direct-drive servos changes gaze quickly and reduces jitter, and avoiding linkages and gears removes backlash and compliance that would otherwise need to be randomized in simulation.

Why model perception errors in bounding-box space?

The real pipeline goes image → detector box → pinhole back-projection. Modeling residuals on the box (center for bearing, log-size for range) and back-projecting reproduces that interface exactly, so a residual in box size maps directly to a relative depth error, just as it does on the robot.

How does PAM differ from distance-dependent noise models?

A linear baseline conditions only on range with affine per-axis moments and constant dropout. It captures the mean depth bias but not the motion- and pose-dependent structure, so it overestimates depth noise at close range and stays flat against ego-motion. PAM conditions jointly on ball geometry and robot motion and learns a nonlinear distribution over box errors and visibility.

How is WB-UAN different from Contact-UAN?

Contact-UAN learns joint-local corrections from each actuator's own tracking-error history. WB-UAN keeps Contact-UAN's contact-consistent replay and unsupervised fitting, but a single network sees absolute joint positions and commands across the whole body, so each joint's correction can depend on other joints. This better fits recorded hardware trajectories and yields faster, more controllable dribbling.

What runs on the robot at deployment?

Only the skill policies, the onboard ball detector, and proprioception. PAM and WB-UAN are simulator-side models used during training, and motion capture is used only to collect PAM training labels.