Our Team

Contact-UAN is a framework to close the gap between simulation and reality for humanoid control without torque sensors, contact force sensors, or motion capture.


Why should you care? A single UAN trained from small hardware data is sufficient for zero-shot sim-to-real transfer across a wide range of tasks! 🤯

Contact-UAN is a framework to close the gap between simulation and reality for humanoid control without torque sensors, contact force sensors, or motion capture.


Why should you care? A single UAN trained from small hardware data is sufficient for zero-shot sim-to-real transfer across a wide range of tasks! 🤯

Technical Summary Video

Sim-to-Real Gap with Contacts

The dominant source of sim-to-real gap for extreme motions is actuator dynamics. Even modest discrepancies between simulated and real dynamics accumulate across joints and timesteps, leading to behaviors that are inefficient, imprecise, or potentially infeasible on hardware.

Failure of Baseline Running Due to Excessive Torques
Failure of Baseline Jumping Due to Actuator Gap

How can we close the sim-to-real gap with contacts for humanoid control without torque sensors, contact force sensors, or motion capture?

A Single UAN as a
Residual World Model

Contact-UAN diagram

The Unsupervised Actuator Network (UAN) adds a residual correction δq to the base joint-position target, so the simulator receives qcmd = qbase + δq, leaving all physics intact and correcting only the actuator response. It is trained via PPO in a replay environment initialized from hardware windows labeled by the proprioceptive state estimators, with rewards penalizing joint-position error, joint-velocity error, and residual smoothness. Once trained, the UAN is frozen and inserted into downstream policy training; only the task policy runs on hardware at deployment. On held-out running replay, the UAN-augmented simulator matches applied hardware torques far more closely, reducing aggregate all-joint net torque-usage mismatch by 69.2% relative to the nominal simulator, a direct measure of how much of the actuator gap it closes.

Proprioceptive State Estimation

Replaying hardware trajectories open-loop in simulation requires the simulator to start from a state that is dynamically consistent with the real robot. Errors in contact force or base velocity at initialization cause the UAN to compensate for reset artifacts rather than true actuator discrepancies. This is especially important for contact: in a soft-contact simulator, support forces are determined by simulated foot-ground penetration. Therefore, accurate UAN training does not require reproducing the real robot's root height exactly; it requires choosing a simulator root height and orientation that reproduce the contact forces implied by the hardware state. We estimate contact-conditioned foot pose from proprioception to initialize replay with consistent support forces before learning residual actuator corrections.

Estimator diagram Contact pose sensitivity

We train supervised state estimators in simulation, where ground-truth labels are available, then use them to label hardware windows with base velocity and contact pose for simulation. Contact-pose estimation is decomposed into two stages: first classifying contact status, then regressing the penetrating foot pose only for feet confidently in stance, fusing multiple confident contacts via contact-probability weighting. Restricting regression to stance reduces contact-height RMSE by an order of magnitude over direct regression across all gait phases. This precision matters because the contact wrench is extremely sensitive to pose in a soft-contact simulator. Crucially, we omit absolute base height from the estimator inputs, since otherwise it could simply copy that height instead of learning the load-dependent cue, a shortcut that would not transfer to hardware.

Direct Estimator (Baseline)
Stance-Only Estimator (Ours)
Contact-UAN (Ours)

Generalize to Various Tasks and
Transfer to the Real World

A single UAN, trained once on walking data, enables various zero-shot real-world tasks on a 29-DoF Unitree G1: high-speed running (3 m/s, 20% torque reduction vs. BeyondMimic-style SysID), whole-body force control (43% lower force-tracking error vs. BeyondMimic-style SysID), extreme compliance, accurate impedance control, and robust dynamic jumping. All policies are trained purely in the UAN-augmented simulator with no robot-specific domain randomization. We only randomize the terrain, ground friction, and pushes to encourage robust recovery behaviors.

43% More Precise Force Control
Extreme Compliance
Robust Dynamic Jumping and Soft Landing
Accurate Impedance Control
20% More Efficient Running

Try out Contact-UAN!

Abstract: Humanoid policies trained in simulation can transfer qualitatively to hardware while failing to transfer the force interactions learned during training, compromising torque efficiency, load regulation, and robustness to impacts. This failure can arise from actuator sim-to-real gaps because forces depend on actuator torques. We introduce Contact-UAN, a residual world model that preserves a simulator's physics priors while correcting the actuator command channel to align simulated rollouts with recorded hardware rollouts. For humanoid motion with contact, this requires contact-consistent replay: if hardware playback in simulation begins with misaligned contact wrenches, the residual model learns to correct reset artifacts rather than actuator discrepancies. Using only onboard proprioception, Contact-UAN infers the simulator-side stance-foot pose needed to initialize replay with consistent contact forces. We show that a UAN trained on 6.5 minutes of real-world walking data generalizes to tasks that benefit from accurate force and impulse regulation and produces policies that transfer seamlessly to the real world, yielding 20% lower running torque, 43% lower force-tracking error, extreme compliance, accurate impedance control, and dynamic, robust jumps.

Questions & Answers

Why is it called a "world model" 🌍 ?

A world model (simulator) predicts the next state given the current state and action. The UAN-augmented simulation does exactly that: the physics engine (MuJoCo) handles rigid-body dynamics and contact, and the UAN corrects the actuator response so that simulated joint transitions match hardware. Together they form a complete transition model. It is residual because the UAN only adds a correction on top of the existing simulator rather than replacing it.

How does it compare to fully learned world models?

Such WMs learn the entire transition function from data, with no physics prior. This demands large datasets: our RWM-U baselines require 33 hours of transitions (400x more than our UAN dataset) and still underperform. Contact-UAN instead uses the physics simulator as a strong structural prior and only learns the residual actuator gap, dramatically reducing data requirements. The tradeoff is scope: the UAN only corrects the actuator channel, while a fully learned model can in principle capture any source of sim-to-real error given enough data.

Why not just tune the baselines harder?

Probably, with enough per-task SysID, domain-randomization tuning, and reward shaping, a baseline could likely be pushed to transfer on any single task. But that post-hoc effort must be repeated for every new behavior, and randomization-based fixes stay conservative, under-utilizing the hardware. Contact-UAN instead learns the actual actuator residual once, from 6.5 minutes of walking data, and transfers zero-shot, enabling more capable running, jumping, and force control with no further tuning; in fact, our downstream training removes all robot-specific randomization. The point isn't that baselines can't eventually transfer, but that a more dynamically accurate world model should just make policy learning easier for any task, especially when you operate near the hardware's limits.

Why do you need state estimation? Can't you just replay hardware data directly in simulation?

In a soft-contact simulator, contact forces depend on foot penetration depth, which changes dramatically with millimeter-scale errors. Without contact-consistent initialization, the UAN learns to compensate for the reset mismatch rather than the true actuator gap. Our proprioceptive estimators are trained to label each hardware window with the virtual root state that reproduces correct contact forces in simulation, so the UAN sees the real physics discrepancy. This separates Contact-UAN from the original UAN and prior work, which cannot be directly applied to actuators with contacts.

Does the UAN need to be retrained for each downstream task?

No. The UAN is trained once on walking data and frozen. Downstream policies (running, force control, jumping) are trained independently in the UAN-augmented simulator. The UAN never runs on hardware at deployment.

⚠️ What isn't Contact-UAN doing?

Coupled and temperature-dependent actuator effects. Contact-UAN models each actuator independently and does not capture inter-joint coupling or motor-temperature effects; both are small in practice and often neglected. Coupled effects could be introduced with a single whole-body network or cross-attention. Temperature effects are harder to identify from short datasets, since motor temperature evolves slowly relative to the control loop, and capturing them may require heat modeling or additional sensors.