Human → Sim → Robot · Agentic Real2Sim

HumanEgoReal2Sim

Two human videos captured with Aria glasses, serving bread with one hand and watering flowers with both, become physics-verified simulations of our Tianji dual-arm robot with SharpaWave dexterous hands — and then over a thousand randomized robot episodes, with agent-designed diversity, soft bread and photoreal renders, seen through the robot's own cameras. Built by an LLM agent running the DexAgent pipeline end to end.

Run
Camera

Loading the Tianji + SharpaWave rig…

—
—
Human demonstrationAria · time-normalized
0.0 s

From one human video to a robot simulation

The four DexAgent stages, each run by an LLM agent with a tool library and judged by independent verifiers. Every artifact below is the actual output of this run.

00

Human demonstration

input

HumanEgo serve_bread episode 040 — Aria glasses, 15.1 s, right hand. Converted to DexAgent's EgoDex format: per-frame head-camera pose (MPS SLAM) and the 3D hand skeleton (MPS hand tracking) — the head moves only 2 cm / 3°.

01

Semantic understanding

passed
Stage 1 contact sheet

The agent reads the video through contact sheets and writes scene_semantics.json: two rigid objects and three subgoals with measurable goals.

02

Property-based reconstruction

passed
video | simulation | blend

SAM 3 masks, the EgoDex camera, then objects built by library skills and placed where the video shows them on the Tianji bench. The croissant needed a shape no skill had: the agent wrote and tested a new one.

03

Robot trajectory generation

passed

Grasp synthesis, 7-DOF arm IK, and execution in contact physics with motor-torque arms and position-servoed fingers. The human's whole-hand wrap did not survive the static screen; the agent converged on a top-down thumb–index pinch over the croissant's centre of mass and removed a 30–85 N release spike by tracing six finger-geometry causes.

04

Robot data generation

running at scale

DexAgent Stage 4 re-draws the object layout (here ±7 cm, ±35°), anchors each hand segment to the object it acts on, re-solves the arm, and keeps a layout only if a full contact-physics replay passes every subgoal check. The accepted episodes are rendered from the robot's ZED and wrist cameras with domain randomization — see Generated data.

The agent at work

Rounds, tool calls and verifier verdicts per stage, for the original (right-arm) and the mirrored (left-arm, real-rig) runs. No API key: a Claude subagent answered DexAgent's own harness through its file transport.

Self-evolving tool library

Tools the agent created and tested through library_create during these runs; they are now part of the library.

A second task: water the flowers, with both arms

One more human video, the same pipeline: the left hand pulls the faucet's spray head out of its dock and holds it over the potted flowers, the right hand swings the lever on. Replay it in 3D above (Run → Water the flowers).

IN

The human demonstration

Aria · 19.4 s

02

Reconstruction

passed
Stage 2 reconstruction over the video frame

The setup's table top became the sink floor (the sink sits below the counter in the video); the faucet is held by a keyed shank, the spray head by a 6 N magnet in its dock (comes off at 4.7 N), the lever is a hinge with friction so it stays where it is pushed; an open pot of tulips stands in the sink.

03

The robot does it in contact physics

all gates passed

Left: a side pinch pulls the head 5.5 cm off the magnet and holds it 0.2 mm from its target over the pot's mouth; right: it rises out of the basin, pinches the lever tip from the front and swings it to 23.6° (on from 17.5°) while the left keeps holding. Both hold to the end.

Photoreal

The verified episodes rendered with Blender Cycles: polished chrome faucet, brushed-steel sink, stone counter, the pull-down hose redrawn every frame, a glazed pot of tulips with translucent petals — and the agent's episode composited back into the human's kitchen from the head camera.

How the agent got there

Every stage session, including DexAgent's cross-stage repair loops (a later stage re-opens an earlier one with evidence) and two gaps in the library's own audits that this task exposed and that were fixed with regression tests.

Tools the agent wrote for this task

Created and tested through library_create; now part of the library.

Generated data

Stage 4 randomizes the pot inside the sink (the faucet and its docked head stay mounted); every layout is re-simulated in contact physics, then rendered from the ZED, both wrists and a randomized third-person camera.

Generated data

Every episode is a physics replay that passed DexAgent's checks; each is rendered twice with a different appearance draw. ZED 2i (robot head) + wrist camera, 640×480 @ 15 fps, with depth, 58-joint states and actions, hand and object poses, phase labels.

Start layouts

rig frame, top view

Croissant start rotation

randomized yaw offset, deg

Final distance to plate centre

cm

Action → next state

max arm error, deg
# one episode of datasets/serve_bread_040_tianji/
ep_shard_01_0007_r0/
  ego.mp4          # ZED 2i, 640x480 @ 15 fps
  wrist_right.mp4  # wrist camera of the acting hand
  depth_ego.npz    # uint16 depth (mm)
  data.npz         # qpos/qvel/action [T, 58] by joint name (14 arm + 44 hand), ee/* and object/* poses, labels
  meta.json        # source sample + layout, randomization draw, camera intrinsics/extrinsics, instruction

Photoreal robot-camera data

The same physics-verified episodes re-rendered with Blender Cycles from the robot's ZED and wrist cameras: PBR robot (white satin paint, black anodised wrist, graphite torso, rubber fingertip pads), a glazed ceramic plate in the colour measured from the human video, a baked-crust croissant with subsurface scattering and a contact dent where the fingers press, real indoor HDRI rooms or a studio cyclorama. The robot stays exactly where the physics put it.

Same frames, three renderers

MuJoCo (left) · Cycles studio · Cycles scene  — ZED and wrist
MuJoCo vs Cycles studio vs Cycles scene

Photoreal episodes

ZED 2i + wrist, 640×480, with depth and the full state/action streams (same format as the fast dataset); every appearance knob drawn per episode.

Agent-designed diversity

An agent decides which axes of variation matter for the task and how wide each may be, then every draw is rebuilt and re-verified in contact physics.

The spec the agent wrote

runs/serve_bread_040/diversity/spec.json

What survived physics

variants verified / drawn · samples

Diverse episodes

Each with its own instruction, bread, plate, table height, grasp, motion and speed — and the look the designer drew for it (table finish, lamp colour temperature and direction, room colour, ZED offset).

The same diverse samples, photoreal

Every diverse sample re-rendered with Blender Cycles in a real HDRI room, the bread's own shape rebuilt at high resolution with a crust per type (scored roll, glossy bun, cut baguette), the plate in the variant's glaze, and the designed table finish, lamps and ZED offset.

All 71 photoreal diverse episodes

ZED view at the lift · click to enlarge
Photoreal diverse samples

Soft bread

Softness is a physical property of the simulated bread, the DexAgent way: compliant contact on the loaf (construct_tapered_loaf softness), calibrated per bread type in the real Tianji/Sharpa pinch, checked by soft_squeeze_test and a new soft_pinch_test. The photoreal dent at each fingertip is the recorded penetration depth itself.

Sink of the fingertip pads into the loaf under the robot's own grip; capped below DexAgent's 3 mm contact limit (deeper squashing would need a deformable body). Pressed onto a floor at 2 N the loaf gives less — compliance is shared by the two surfaces in contact.

All 71 diverse samples

ZED view, lifted and placed frames · click to enlarge
Contact sheet of the diverse samples

Faster and cheaper, same data

Engineering only: every component, check, audit and the contact-physics replay are kept. The speed work leaves Stage 4's outputs bitwise identical; two bugs in its checks were fixed, so more of the drawn layouts survive.

Photoreal composites

DexAgent's own Stage 4 render path: Blender Cycles renders of the robot and objects composited onto the human video's clean background plate, plus the wrist and ZED views.

Porting DexAgent to our rig

DexAgent ships for a 6-DOF YAM bench; everything needed for a 7-DOF Tianji torso with SharpaWave hands and a ZED head camera.

INPUT

Aria → EgoDex

MPS SLAM poses rotated z-up → y-up, the 21 MPS hand landmarks mapped to the 25 ARKit joints. A mirrored copy turns the right-hand demo into a left-hand one for the real rig.

SETUP

Tianji + Sharpa + ZED

Generated from far_dexbot.urdf: arms in DexAgent's naming, the hand clocked 180° on the flange as on the real robot, the ZED from the hand-eye calibration, home pose by IK.

LIBRARY

7-DOF arms

Motor caps 108/108/66/66/18/18/18 N·m, gains and inertias from the setup; a computed-torque feed-forward removes the 18–80 N contact spikes the heavy arm caused; MPC/RL residuals sized per arm.

DATA

Robot-camera renders

Stage 4 samples rendered from the ZED and wrist with MuJoCo (ms per frame) and domain randomization; Cycles composites for the photoreal subset; a clean plate without VOID.