PHUMA: Physically Reliable Humanoid Locomotion Dataset
Organizations: KAIST
Abstract
Motion imitation is a promising approach for humanoid locomotion, enabling agents to acquire humanlike behaviors. Existing methods typically rely on high-quality motion capture datasets such as AMASS, but these are scarce and expensive, limiting scalability and diversity. Recent studies attempt to scale data collection by converting large-scale internet videos, exemplified by Humanoid-X. However, they often suffer from physical artifacts such as floating, penetration, and foot skating, which hinder stable imitation. To address this, we introduce PHUMA, a Physically Reliable HUMAnoid locomotion dataset produced by a two-stage pipeline combining physics-aware curation and physics-constrained retargeting, aggregating both motion capture and internet video into a physically reliable, 73-hour corpus. On motion tracking benchmarks, PHUMA-trained policies achieve higher success rates than those trained on AMASS and Humanoid-X, and successfully transfer zero-shot to a real Unitree G1. The code is available at https://davian-robotics.github.io/PHUMA.
Figures & tables
| Motion Fidelity (%) | Joint Feasibility (%) | Non-Floating (%) | Non-Penetration (%) | Non-Skating (%) | |
|---|---|---|---|---|---|
| IK | 27.6 | 91.7 | 55.6 | 47.8 | 59.7 |
| GMR | 56.3 | 81.8 | 14.7 | 100.0 | 67.7 |
| SINK | 94.8 | 95.9 | 96.4 | 14.9 | 55.4 |
| + Joint Feasibility Loss | 94.9 | 100.0 | 96.4 | 14.8 | 55.6 |
| + Grounding Loss | 94.9 | 100.0 | 99.9 | 97.2 | 53.6 |
| + Skating Loss = PhySINK | 94.8 | 100.0 | 99.9 | 96.8 | 89.7 |
| Curation Filter | PHUMA Test | Unseen Video | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Variant | Hours | Jerk | FC | Height | BoS | Total | Stat. | Ang. | Vert. | Horiz. | Total | Stat. | Ang. | Vert. | Horiz. |
| Humanoid-X | 231 | ✗ | ✗ | ✗ | ✗ | 50.6 | 78.4 | 43.0 | 26.0 | 31.8 | 39.1 | 78.0 | 39.6 | 23.0 | 6.5 |
| + Jerk only | 141 | ✓ | ✗ | ✗ | ✗ | 83.0 | 91.5 | 77.6 | 72.3 | 88.5 | 77.6 | 100.0 | 78.8 | 62.8 | 61.5 |
| + FC only | 123 | ✗ | ✓ | ✗ | ✗ | 82.9 | 91.3 | 77.8 | 70.4 | 89.1 | 78.2 | 99.1 | 79.3 | 61.7 | 65.9 |
| + Height only | 136 | ✗ | ✗ | ✓ | ✗ | 80.6 | 90.7 | 74.6 | 69.3 | 85.1 | 74.0 | 98.3 | 76.4 | 61.7 | 50.5 |
| + BoS only | 110 | ✗ | ✗ | ✗ | ✓ | 81.3 | 90.2 | 76.2 | 72.0 | 84.4 | 74.8 | 96.6 | 79.8 | 54.3 | 57.1 |
| PHUMA Test | Unseen Video | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Retarget | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| IK | 52.8 | 75.3 | 43.9 | 24.3 | 44.2 | 54.6 | 89.3 | 54.6 | 32.7 | 43.3 |
| GMR | 61.7 | 80.2 | 51.7 | 32.5 | 74.0 | 59.3 | 87.1 | 64.5 | 31.9 | 40.7 |
| SINK | 76.2 | 88.5 | 72.1 | 56.8 | 66.8 | 70.2 | 90.7 | 75.0 | 62.7 | 44.1 |
| PhySINK | 79.5 | 89.9 | 76.1 | 61.1 | 69.5 | 72.8 | 93.3 | 78.2 | 65.6 | 47.3 |
| PHUMA Test | Unseen Video | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Dataset | Hours | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| LaFAN1 | 2.4 | 46.1 | 66.1 | 36.2 | 24.0 | 42.5 | 28.4 | 46.9 | 28.4 | 19.6 | 10.5 |
| AMASS | 20.9 | 76.2 | 88.5 | 72.1 | 56.8 | 66.8 | 78.2 | 90.7 | 75.0 | 62.7 | 44.1 |
| Humanoid-X | 231.4 | 50.6 | 78.4 | 43.0 | 26.0 | 31.8 | 39.1 | 78.0 | 39.6 | 23.0 | 6.5 |
| PHUMA | 73.0 | 92.7 | 95.6 | 91.7 | 86.0 | 85.6 | 82.9 | 96.7 | 88.0 | 71.8 | 67.1 |
| (mm) | (deg/frame) | (deg/frame 2 ) | |||||||||||||
| Dataset | Total | Stat. | Ang. | Vert. | Hor. | Total | Stat. | Ang. | Vert. | Hor. | Total | Stat. | Ang. | Vert. | Hor. |
| AMASS | 41.0 | 27.3 | 47.5 | 49.9 | 39.4 | 3.20 | 1.81 | 4.10 | 3.14 | 3.77 | 1.50 | 0.77 | 2.09 | 1.33 | 1.80 |
| PHUMA | 34.3 | 23.2 | 40.4 | 42.6 | 31.1 | 2.69 | 1.41 | 3.07 | 2.68 | 3.60 | 1.29 | 0.58 | 1.43 | 1.18 | 1.96 |
Appendix figures & tables44 assets
Supplementary material from the paper’s appendix.
Appendix
| Region | Vertex indices |
|---|---|
| Left heel | 8888, 8889, 8891, 8909, 8910, 8911, 8913, 8914, 8915, 8916, 8917, |
| 8918, 8919, 8920, 8921, 8922, 8923, 8924, 8925, 8929, 8930, 8934 | |
| Left toe | 5773, 5781, 5782, 5791, 5793, 5805, 5808, 5816, 5817, 5830, 5831, |
| 5859, 5860, 5906, 5907, 5908, 5909, 5912, 5914, 5915, 5916, 5917 | |
| Right heel | 8676, 8677, 8679, 8697, 8698, 8699, 8701, 8702, 8703, 8704, 8705, |
| 8706, 8707, 8708, 8709, 8710, 8711, 8712, 8713, 8714, 8715, 8716 |
| Metric | Threshold |
|---|---|
| Root jerk | m/s 3 |
| Foot contact score | |
| Minimum pelvis height | m |
| Maximum pelvis height | m |
| Pelvis distance to base of support | cm |
| Spine1 distance to base of support | cm |
| Dataset | # Clip | # Frame | Duration | Source | Scene |
|---|---|---|---|---|---|
| LocoMuJoCo [ 21 ] | 0.78K | 0.93M | 0.86h | Motion Capture | Indoor |
| GRAB [ 85 ] | 1.73K | 0.20M | 1.88h | Motion Capture | Indoor |
| EgoBody [ 20 ] | 2.12K | 0.24M | 2.19h | Motion Capture | Indoor |
| LAFAN1 [ 12 ] | 2.18K | 0.26M | 2.40h | Motion Capture | Indoor |
| AMASS [ 13 ] | 21.73K | 2.25M | 20.86h | Motion Capture | Indoor |
| HAA500 [ 29 ] | 1.76K | 0.11M | 1.01h | Human Video | Outdoor |
| PHUMA Test | Unseen Video | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Dataset | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| GMR | 84.0 | 92.1 | 77.8 | 77.1 | 89.1 | 75.2 | 99.1 | 77.8 | 61.7 | 52.7 |
| PhySINK | 89.9 | 94.2 | 87.6 | 84.2 | 91.8 | 81.7 | 97.4 | 86.7 | 61.7 | 71.4 |
| Retarget | FPS |
|---|---|
| IK | 38.4 |
| GMR | 25.3 |
| SINK | 0.95 |
| PhySINK | 0.92 |
| Retarget | Open-loop SR (%) |
|---|---|
| GMR Sampling (SPIDER) | 4.6 |
| PhySINK Sampling | 10.7 |
| Dimension | ||
| State | G1 | H1-2 |
| (a) Proprioceptive State | ||
| Root height | 1 | 1 |
| Body position | ||
| Body rotation | ||
| Body velocity | ||
| State | Dimension (G1) |
|---|---|
| (a) Proprioceptive State | |
| Previous action | 29 |
| Base angular velocity | 3 |
| DoF position | 29 |
| DoF velocity | 29 |
| (b) Goal State | |
| Future | IsaacSim | MuJoCo | ||||||||
| SR | SR | |||||||||
| (a) PHUMA test | ||||||||||
| ✗ | 47.15 | 115.78 | 32.70 | 1.15 | 4.29 | 46.91 | 156.64 | 32.92 | 1.22 | 4.36 |
| ✓ | 78.77 | 112.00 | 28.28 | 1.18 | 4.14 | 76.02 | 142.79 | 28.98 | 1.24 | 4.18 |
| (b) Unseen Video | ||||||||||
| ✗ | 47.82 | 123.71 | 31.93 | 1.07 | 4.93 | 47.42 | 122.89 | 30.60 | 1.09 | 4.85 |
| Term | Expression | Weight |
| (a) Task | ||
| Global body position | 0.5 | |
| Root height | 0.2 | |
| Global body rotation | 0.3 | |
| Global body velocity | 0.1 | |
| Global body angular velocity | 0.1 | |
| Term | Expression | Weight |
| (a) Motion Tracking | ||
| Reference body position | 0.5 | |
| Reference body rotation | 0.5 | |
| Global body linear velocity | 1.0 | |
| Global body angular velocity | 1.0 | |
| Relative body position | 1.0 | |
| Hyperparameter | Value |
|---|---|
| Optimizer | Adam |
| Num envs | 8192 |
| Mini Batches | 32 |
| Learning epochs | 1 |
| Entropy coefficient | 0.0 |
| Value loss coefficient | 0.5 |
| Hyperparameter | Value |
|---|---|
| Optimizer | AdamW |
| Num envs | 8192 |
| Steps per env | 24 |
| Mini batches | 4 |
| Learning epochs | 8 |
| Entropy coefficient | 0.005 |
| Parameter | Range |
|---|---|
| P-gain scale | |
| D-gain scale | |
| DoF position bias | |
| Base CoM offset | |
| Base CoM offset | |
| Static friction |
| Success Threshold=0.15m | Success Threshold=0.5m | ||||||||||
| Dataset | Hours | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| (a) G1 | |||||||||||
| LaFAN1 | 2.4 | 46.1 | 66.1 | 36.2 | 24.0 | 42.5 | 74.8 | 87.8 | 69.2 | 47.1 | 72.6 |
| AMASS | 20.9 | 76.2 | 88.5 | 72.1 | 56.8 | 66.8 | 90.2 | 95.0 | 87.9 | 81.1 | 83.7 |
| Humanoid-X | 231.4 | 50.6 | 78.4 | 43.0 | 26.0 | 31.8 | 78.4 | 91.3 | 72.9 | 59.5 | 65.9 |
| PHUMA | 73.0 | 92.7 | 95.6 | 91.7 | 86.0 | 85.6 | 97.1 | 98.7 | 96.5 | 94.4 | 92.5 |
| Success Threshold=0.15m | Success Threshold=0.5m | ||||||||||
| Dataset | Hours | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| (a) G1 | |||||||||||
| LaFAN1 | 2.4 | 28.4 | 46.9 | 28.4 | 19.6 | 10.5 | 78.2 | 85.5 | 70.8 | 76.3 | 80.8 |
| AMASS | 20.9 | 70.2 | 90.7 | 75.0 | 62.7 | 44.1 | 92.3 | 99.2 | 92.1 | 82.1 | 88.0 |
| Humanoid-X | 231.4 | 39.1 | 78.0 | 39.6 | 23.0 | 6.5 | 84.1 | 98.3 | 79.9 | 76.0 | 76.2 |
| PHUMA | 73.0 | 82.9 | 96.7 | 88.0 | 71.8 | 67.1 | 93.7 | 100.0 | 96.8 | 85.9 | 84.7 |
| PHUMA Test | Unseen Video | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Dataset | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| AMASS | 77.8 | 90.8 | 71.2 | 58.3 | 84.7 | 83.5 | 100.0 | 83.3 | 74.5 | 72.5 |
| PHUMA | 91.0 | 96.4 | 88.3 | 87.6 | 90.5 | 87.1 | 99.1 | 89.2 | 77.7 | 76.9 |
| PHUMA Test | Unseen Video | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Dataset | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| AMASS | 66.6 | 86.7 | 58.8 | 41.8 | 68.4 | 67.7 | 97.4 | 68.0 | 59.6 | 37.4 |
| PHUMA | 82.9 | 93.5 | 78.5 | 74.2 | 81.7 | 73.8 | 97.4 | 76.9 | 63.8 | 47.3 |
| PHUMA Test | Unseen Video | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Dataset | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| AMASS | 62.1 | 81.4 | 54.2 | 38.8 | 64.3 | 64.3 | 86.2 | 68.5 | 54.3 | 37.4 |
| PHUMA | 75.0 | 87.6 | 69.3 | 61.6 | 76.3 | 70.0 | 87.9 | 78.8 | 59.6 | 38.5 |
| Retarget | PHUMA Test (GMR) | Unseen Video (GMR) |
|---|---|---|
| IK | 80.3 ( 0.2) | 81.6 ( 0.6) |
| GMR | 80.0 ( 0.1) | 81.1 ( 0.3) |
| SINK | 81.6 ( 0.2) | 79.8 ( 0.6) |
| PhySINK | 83.4 ( 0.2) | 83.7 ( 0.4) |
| Dataset | PHUMA Test (GMR) | Unseen Video (GMR) |
|---|---|---|
| LaFAN1 | 76.5 ( 0.1) | 81.6 ( 0.9) |
| Humanoid-X | 77.7 ( 0.1) | 79.6 ( 0.5) |
| AMASS (SINK) | 81.6 ( 0.2) | 79.8 ( 0.6) |
| AMASS (PhySINK) | 83.4 ( 0.2) | 83.7 ( 0.4) |
| PHUMA | 95.5 ( 0.2) | 89.4 ( 0.4) |
| Dataset | PHUMA Test FR (%) | Unseen Video FR (%) |
|---|---|---|
| Humanoid-X | 18.6 | 13.1 |
| AMASS (SINK) | 5.7 | 4.2 |
| Motion Fidelity (%) | Joint Feasibility (%) | Non-Floating (%) | Non-Penetration (%) | Non-Skating (%) | |
|---|---|---|---|---|---|
| MoCap | 96.7 | 100.0 | 99.9 | 94.3 | 92.1 |
| Video | 93.8 | 100.0 | 99.9 | 98.0 | 88.3 |
| PHUMA Test | Unseen Video | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Dataset | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| MoCap | 75.2 | 88.2 | 68.4 | 49.0 | 86.9 | 73.0 | 96.6 | 73.9 | 56.4 | 58.2 |
| Video | 85.7 | 92.9 | 81.8 | 75.5 | 89.5 | 76.2 | 100.0 | 76.4 | 59.6 | 62.6 |
| Data Source | PHUMA Test (GMR) | Unseen Video (GMR) |
|---|---|---|
| MoCap Only | 82.2 ( 0.2) | 86.0 ( 0.2) |
| Video (33%) | 82.1 ( 0.1) | 80.1 ( 0.8) |
| Video (66%) | 92.8 ( 0.1) | 86.7 ( 0.5) |
| Video (100%) | 94.6 ( 0.1) | 90.2 ( 0.9) |
| Motion Source | Hours | Motion Fidelity (%) | Joint Feasibility (%) | Non-Floating (%) | Non-Penetration (%) | Non-Skating (%) |
|---|---|---|---|---|---|---|
| Humanoid-X | 237.2 | 70.6 | 100.0 | 98.7 | 92.2 | 90.1 |
| Jerk Filter | 141.1 | 76.9 | 100.0 | 99.7 | 96.5 | 92.0 |
| Foot Contact Filter | 123.1 | 77.1 | 100.0 | 99.8 | 96.8 | 90.6 |
| Height Filter | 135.7 | 87.0 | 100.0 | 99.4 | 94.7 | 89.8 |
| BoS Filter | 110.3 | 90.7 | 100.0 | 99.4 | 94.9 | 90.0 |
| All Filter | 62.2 | 94.8 | 100.0 | 99.9 | 96.7 | 89.7 |
| Curation Filter | Hours | PHUMA Test (GMR) | Unseen Video (GMR) |
|---|---|---|---|
| All Filters | 62 | 94.6 ( 0.1) | 90.2 ( 0.9) |
| No Jerk Filter | 75 | 91.8 ( 0.1) | 89.5 ( 0.3) |
| No FC Filter | 77 | 87.5 ( 0.1) | 80.0 ( 0.5) |
| No Height Filter | 73 | 89.2 ( 0.3) | 85.6 ( 0.1) |
| No BoS Filter | 88 | 89.5 ( 0.1) | 87.4 ( 0.7) |
| Reconstruction | Acceptance | Retarget | Retargeting Quality | ||||
|---|---|---|---|---|---|---|---|
| Rate (%) | MF (%) | JF (%) | NF (%) | NP (%) | NS (%) | ||
| TRAM | 41.9 | SINK | 95.9 | 63.6 | 100.0 | 27.2 | 40.1 |
| PhySINK | 95.9 | 100.0 | 100.0 | 99.7 | 93.8 | ||
| GVHMR | 77.4 | SINK | 95.6 | 78.7 | 99.9 | 27.3 | 64.8 |
| PhySINK | 95.6 | 100.0 | 100.0 | 100.0 | 86.6 | ||
| PHUMA Test | Unseen Video | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Dataset | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| IK | 70.5 | 85.9 | 63.3 | 47.6 | 77.3 | 68.5 | 96.6 | 72.4 | 43.6 | 49.5 |
| GMR | 84.0 | 92.1 | 77.8 | 77.1 | 89.1 | 75.2 | 99.1 | 77.8 | 61.7 | 52.7 |
| SINK | 89.1 | 94.0 | 86.0 | 84.9 | 90.7 | 79.0 | 100.0 | 81.8 | 62.8 | 62.6 |
| + Joint Feasibility Loss | 87.0 | 92.1 | 83.6 | 79.8 | 90.9 | 78.6 | 94.8 | 84.7 | 56.4 | 67.0 |
| + Grounding Loss | 90.0 | 93.5 | 87.9 | 85.6 | 92.0 | 80.4 | 98.3 | 86.2 | 60.6 | 64.8 |
| Retarget | Retargeting Quality | Motion Tracking Performance | |||||
|---|---|---|---|---|---|---|---|
| MF (%) | JF (%) | NF (%) | NP (%) | NS (%) | PHUMA Test (GMR) | Unseen Video (GMR) | |
| PhySINK | 94.8 | 100.0 | 99.9 | 96.8 | 89.7 | 94.6 ( 0.1) | 90.2 ( 0.9) |
| No Joint Feasibility Loss | 91.7 | 95.8 | 99.9 | 96.4 | 89.4 | 91.0 ( 0.1) | 85.8 ( 0.6) |
| No Grounding Loss | 91.8 | 100.0 | 96.4 | 14.6 | 91.7 | 90.5 ( 0.1) | 84.5 ( 0.8) |
| No Skating Loss | 94.9 | 100.0 | 99.9 | 97.2 | 53.6 | 94.2 ( 0.1) | 88.2 ( 0.8) |
| PHUMA Test | Unseen Video | |||||||||
| Dataset | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| (a) G1 | ||||||||||
| AMASS | 60.5 | 85.6 | 60.1 | 51.4 | 66.5 | 54.8 | 83.6 | 66.5 | 33.0 | 27.5 |
| PHUMA | 84.5 | 94.6 | 86.1 | 83.7 | 90.2 | 74.6 | 98.3 | 83.3 | 54.3 | 57.1 |
| (a) H1-2 | ||||||||||
| AMASS | 60.4 | 84.0 | 62.8 | 43.6 | 78.7 | 72.3 | 96.6 | 77.3 | 52.1 | 72.5 |
| Motion Fidelity (%) | Joint Feasibility (%) | Non-Floating (%) | Non-Penetration (%) | Non-Skating (%) | |
|---|---|---|---|---|---|
| IK | 36.3 | 80.9 | 57.7 | 45.2 | 56.1 |
| GMR | 58.0 | 71.8 | 6.0 | 100.0 | 62.3 |
| SINK | 93.9 | 15.3 | 42.2 | 81.4 | 47.9 |
| + Joint Feasibility Loss | 94.0 | 99.5 | 44.4 | 79.9 | 50.7 |
| + Grounding Loss | 93.9 | 99.9 | 99.8 | 98.1 | 49.3 |
| + Skating Loss = PhySINK | 93.9 | 99.9 | 97.7 | 99.7 | 87.7 |
| PHUMA Test | Unseen Video | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Retarget | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| IK | 45.3 | 70.9 | 35.7 | 15.2 | 35.0 | 54.2 | 78.0 | 60.7 | 30.1 | 28.6 |
| GMR | 56.6 | 75.7 | 48.1 | 24.8 | 65.9 | 64.3 | 80.2 | 65.5 | 52.1 | 53.8 |
| SINK | 54.4 | 74.9 | 45.9 | 17.2 | 49.6 | 64.3 | 87.3 | 59.7 | 46.0 | 63.9 |
| PhySINK | 64.3 | 83.6 | 57.0 | 27.7 | 55.9 | 72.4 | 99.2 | 66.3 | 57.4 | 63.1 |
| PHUMA Test | Unseen Video | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Dataset | Hours | Total | Stationary | Angular | Vertical | Horizontal | Total | Stationary | Angular | Vertical | Horizontal |
| LaFAN1 | 2.4 | 62.0 | 79.3 | 54.7 | 26.6 | 58.9 | 70.8 | 92.4 | 66.7 | 56.4 | 68.2 |
| AMASS | 20.9 | 54.4 | 74.9 | 45.9 | 17.2 | 49.6 | 64.3 | 87.3 | 59.7 | 46.0 | 63.9 |
| Humanoid-X | 231.4 | 49.7 | 74.6 | 40.4 | 17.0 | 37.3 | 60.5 | 88.3 | 60.0 | 48.7 | 39.7 |
| PHUMA | 73.0 | 82.7 | 91.5 | 79.5 | 68.1 | 68.4 | 78.6 | 97.5 | 76.8 | 74.5 | 63.8 |