The gap
Same lift. Two very different records.
Most humanoid training data is video and teleoperation: where the body went, nothing about the forces that got it there. The robot has to guess the rest. That's where it fails.
Camera / teleop
Joint positions
Muscle activationnot captured
Fingertip pressurenot captured
Slipnot captured
Ground reactionnot captured
Balanceinferred
Hyletic episode
Joint positions
Muscle activation
Fingertip pressure
Slip
Ground reaction
Balance
Channels
Seven streams. One clock.
Everything is sampled together and time-aligned at source, so a fingertip event and a foot event in the same episode share the same timestamp.
shared clockt 00.000 scontact event at t 2.41 s
| Channel | What it measures | Episode hy-04182 | At cursor | Rate |
| 01 | Full-body motionJoint positions and velocities | | –° | 500 Hz |
| 02 | Muscle activationEffort in the fibres behind each move | | –% | 1 kHz |
| 03 | Fingertip pressureNormal force at each contact | | –N | 500 Hz |
| 04 | Shear and slipTangential force and slip onset | | –N | 500 Hz |
| 05 | Ground reactionForce under each foot | | –N | 500 Hz |
| 06 | BalanceCentre of mass over the base of support | | –m | 500 Hz |
| 07 | Object stateMass, shape, pose | | – | per episode |
t 00.000 s
contact · 2.41 s
Drag across the traces to scrub.
Episode
What a delivered episode looks like.
One interaction, from first intent to release. Synchronised, calibrated, labelled, with usage rights attached, and retargeted to the joints of the humanoid you name.
- Synchronised at source, not aligned afterwards.
- Labelled with task, object, outcome and failure events.
- Joint-mapped to your robot's kinematic model.
- Rights-clear: every participant consents to training use.
- Formats: LeRobot and RLDS, or your own schema.
// episode manifest (illustrative)
{
"episode": "hy-04182",
"task": "reach_and_lift",
"object": { "kind": "cup", "mass_kg": 0.31 },
"duration_s": 6.84,
"clock": "monotonic, shared",
"channels": [
{ "id": "motion", "rate_hz": 500, "joints": 34 },
{ "id": "emg", "rate_hz": 1000, "sites": 16 },
{ "id": "fingertip","rate_hz": 500, "pads": 10 },
{ "id": "grf", "rate_hz": 500, "plates": 2 },
{ "id": "com", "rate_hz": 500, "derived": true }
],
"events": [ { "t": 2.41, "type": "contact" }, { "t": 4.93, "type": "slip_margin_min" } ],
"retarget": { "robot": "<your humanoid>", "dof": 28 },
"rights": "training, consented"
}
Who we record for
Who we record for.
Humanoid makers
Your robot walks. Picking things up without crushing or dropping them is the last mile. Full-body episodes with contact forces, retargeted to your joints.
Robot foundation-model labs
Video and teleop data scale, but they're blind to force. We add the channels the model has never seen: muscle activation, fingertip pressure, slip, ground reaction, all on one clock.
Dexterous-hand and tactile teams
The hardest signal is the moment before a slip. Per-fingertip pressure and shear with the labelled event, from real human hands.
Simulation and world-model teams
Contact is where simulators lie. Ground-truth forces to calibrate against, episode by episode.
Our prediction
By 2040, humanoids will move like us. Indistinguishable, apart from the mandatory regulatory tag.
The bodies are arriving. We capture more of the human than robots can use today, so the data is waiting when they do.
20262029203220362040
Projectionyear 2026step 0.38 mcadence 78 /mincontact 0.82 shuman reference, typical adult: 0.72 m · 112 /min · 0.62 s
Projected gait figures for illustration. Not measured data.
2026 Hard shells and motors. Robots walk, stiffly.
2029 Lighter frames, better hands.
2032 Compliant bodies that feel contact.
2036 Synthetic muscle. Force placed at the right moment.
2040 Movement indistinguishable from ours. Tag H-2040.