From Video to Vision: Learning Generalizable Humanoid Carrying from Human Motion
Organizations: X-Humanoid
Abstract
Most existing approaches rely on video or motion-capture data for reinforcement learning (RL) training; however, all of these methods require an upper-level module to generate reference trajectories in real time. In object carrying tasks, the humanoid can only lift objects from designated locations along the reference trajectory, resulting in poor spatial generalization. Moreover, existing policies can only be evaluated inside a motion-capture studio. To address these limitations, we propose MOVER, a multi-stage, Teacher-Assistant-Student, RL training framework for humanoid object carrying. We first collect data from videos and employ GENMO and GMR to retarget the video data, combining this with data augmentation techniques to generalize the data across objects of varying shapes and sizes. In the first stage, building upon the DeepMimic \cite{peng2018deepmimic} motion-training framework, we train the humanoid to transport objects from specified locations along designated trajectories. In the second stage, we relax the tracking of the reference motion and adjust the reward so that the humanoid learns to transport objects from different positions. In the third stage, we apply a Dagger-PPO distillation method to distill away the proprioceptive position observations and reference joint position of the humanoid. This allows the deployed policy to operate without relying on global position information from a motion-capture system; instead, the humanoid can directly perceive the object's pose from its onboard RGB-D camera to complete the carrying task. We design a series of simulation experiments to compare the success rates across stages (Stages 1 vs. 2) and before versus after distillation. We further transfer the policy to a real humanoid, successfully transporting objects at varying positions in a motion-capture-free setting.
Figures & tables
| Method | w/o DA | Stage 1 | Stage 2 (before distillation) | Stage 3 (after distillation) | Stage 3 (with QuatNet) | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Carry Sr | Grasp Sr | Err | Carry Sr | Grasp Sr | Err | Carry Sr | Grasp Sr | Err | Carry Sr | Grasp Sr | Err | Carry Sr | Grasp Sr | Err | |
| pos1=[0,0,0] | 90.4 | 91.8 | 0.067 | 93.4 | 94.3 | 0.06 | 93.4 | 93.7 | 0.064 | 98.6 | 100 | 0.144 | 94.9 | 99.8 | 0.147 |
| pos2=[0, -0.4, 0] | 87.9 | 93.6 | 0.122 | 90.6 | 92.4 | 0.06 | 91 | 92 | 0.066 | 44.1 | 99.8 | 0.321 | 29.1 | 100 | 0.360 |
| pos3=[-0.25,0.25,0] | 82.4 | 91.6 | 0.201 | 84.4 | 90.2 | 0.12 | 87.7 | 90.2 | 0.085 | 59.6 | 99.2 | 0.286 | 57.4 | 98.4 | 0.281 |
| pos4=[0.25,0.45,0] | 73.4 | 89.3 | 0.351 | 68.6 | 88.1 | 0.345 | 89.5 | 91.2 | 0.071 | 53.5 | 99.8 | 0.296 | 32.4 | 99.0 | 0.351 |
| Method | pos1 | pos2 | pos3 | pos4 | ||||||||||||
| size1 | size2 | size1 | size2 | size1 | size2 | size1 | size2 | |||||||||
| Sr | Err | Sr | Err | Sr | Err | Sr | Err | Sr | Err | Sr | Err | Sr | Err | Sr | Err | |
| HDMI | 85 | 0.079 | 88.9 | 0.076 | 83 | 0.105 | 92.6 | 0.074 | 75.4 | 0.097 | 84.2 | 0.088 | 58.2 | 0.107 | 76.4 | 0.092 |
| HumanX | 0.0 | - | 0.0 | - | 0.0 | - | 0.0 | - | 0.0 | - | 0.0 | - | 0.0 | - | 0.0 | - |
| Ominiretarget | 79.7 | 0.147 | 80.5 | 0.310 | 11.3 | 0.505 | 3.9 | 1.951 | 24.4 | 0.751 | 14.5 | 3.080 | 2.9 | 1.323 | 9.2 | 3.628 |
| Stage 2 | 87.3 | 0.075 | 92.0 | 0.051 | 90.4 | 0.069 | 90 | 0.058 | 88.1 | 0.090 | 89.6 | 0.076 | 86.9 | 0.084 | 88.7 | 0.053 |
| Method | Stage 2 (with Mocap) | Stage 3 (with Vision) | ||
|---|---|---|---|---|
| Sr | Err | Sr | Err | |
| pos1 | 7/10 | 0.18 | 7/10 | 0.20 |
| pos2 | 6/10 | 0.27 | 5/10 | 0.36 |
| pos3 | 6/10 | 0.34 | 5/10 | 0.41 |
| Hyperparameter | Value |
|---|---|
| num steps per env | 24 |
| max iterations | 100000 |
| init noise | 1.0 |
| actor hidden dims | [512, 256, 128] |
| critic hidden dims | [512, 256, 128] |
| activation | elu |
| Hyperparameter | Value |
|---|---|
| num steps per env | 24 |
| max iterations | 50000 |
| init noise std | 0.05 |
| actor hidden dims | [512, 256, 128] |
| critic hidden dims | [512, 256, 128] |
| teacher hidden dims | [512, 256, 128] |
| Teacher / Assistant | Student | ||
|---|---|---|---|
| Item | Dim | Item | Dim |
| command joint pos | motion anchor ori b | ||
| command joint vel | base ang vel | ||
| motion anchor pos b | joint pos | ||
| motion anchor ori b | joint vel | ||
| base ang vel | actions | ||
| Reward | Weight | Reward | Weight |
| Robot Tracking | Object Tracking | ||
| motion global anchor pos | object position | ||
| motion global anchor ori | object orientation | ||
| foot body pos | body object relative pos | ||
| foot body ori | body object relative ori | ||
| leg body pos | contact graph | ||
| Domain Randomization | Range |
|---|---|
| Object friction coefficient | (0.4, 0.8) |
| Object mass (kg) | (0.8, 3.5) |
| Object initial position (m) | (-0.15, 0.15) |
| Initial RPY angle (rad) | (-0.2, 0.2) |
| Object initial linear velocity (m/s) | (-0.06, 0.06) |
| Object initial angular velocity (rad/s) | (-0.05, 0.05) |