[ICRA 2026] GMR: 通用运动重定位。在 CPU 上实时将人类动作重定位到各种人形机器人。TWIST 重定位器。
[!NOTE] If you want this repo to support a new robot or a new human motion data format, send the robot files (
.xml,.urdf, and meshes) / human motion data to Yanjie Ze or create an issue, we will support it as soon as possible. And please make sure the robot files you sent can be open-sourced in this repo.
This repo is licensed under the MIT License.
scripts/batch_gmr_pkl_to_csv.py.use_velocity_limit=True by default in GeneralMotionRetargeting class (and we use 3*pi as the velocity limit by default); we also add printing of robot DoF/Body/Motor names and their IDs by default, and you can access them via robot_dof_names, robot_body_names, and robot_motor_names attributes.|
Demo 1 Retargeting LAFAN1 dancing motion to 5 robots. |
Demo 2 Galexea R1 Pro robot (view 1). |
Demo 3 Galexea R1 Pro robot (view 2). |
Demo 4 Switching robots by changing one argument. |
Demo 5 HighTorque robot doing a twist dance. |
|
Demo 6 Kuavo robot picking up a box. |
Demo 7 Unitree H1 robot doing a ChaCha dance. |
Demo 8 Booster T1 robot jumping (view 1). |
Demo 9 Booster T1 robot jumping (view 2). |
Demo 10 Unitree H1-2 robot jumping. |
|
Demo 11 PND Adam Lite robot. |
Demo 12 Tienkung robot walking. |
Demo 13 Extracting human pose (GVHMR + GMR). ▶ Watch on Bilibili |
Demo 14 PAL Robotics’ Talos robot fighting. |
Demo 15 (Optional placeholder if you add a new one later!) Coming soon... |
| Assigned ID | Robot/Data Format | Robot DoF | SMPLX (AMASS, OMOMO) | BVH LAFAN1 | FBX (OptiTrack) | BVH Nokov | PICO (XRoboToolkit) | More formats coming soon |
|---|---|---|---|---|---|---|---|---|
| 0 | Unitree G1 unitree_g1 |
Leg (2*6) + Waist (3) + Arm (2*7) = 29 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 1 | Unitree G1 with Hands unitree_g1_with_hands |
Leg (2*6) + Waist (3) + Arm (2*7) + Hand (2*7) = 43 | ✅ | ✅ | ✅ | TBD | TBD | |
| 2 | Unitree H1 unitree_h1 |
Leg (2*5) + Waist (1) + Arm (2*4) = 19 | ✅ | TBD | TBD | TBD | TBD | |
| 3 | Unitree H1 2 unitree_h1_2 |
Leg (2*6) + Waist (1) + Arm (2*7) = 27 | ✅ | TBD | TBD | TBD | TBD | |
| 4 | Booster T1 booster_t1 |
TBD | ✅ | TBD | TBD | TBD | ||
| 5 | Booster T1 29dof booster_t1_29dof |
TBD | ✅ | ✅ | TBD | TBD | ||
| 6 | Booster K1 booster_k1 |
Neck (2) + Arm (2*4) + Leg (2*6) = 22 | ✅ | TBD | TBD | TBD | ||
| 7 | Stanford ToddlerBot stanford_toddy |
TBD | ✅ | ✅ | TBD | TBD | ||
| 8 | Fourier N1 fourier_n1 |
TBD | ✅ | ✅ | TBD | TBD | ||
| 9 | ENGINEAI PM01 engineai_pm01 |
TBD | ✅ | ✅ | TBD | TBD | ||
| 10 | HighTorque Hi hightorque_hi |
Head (2) + Arm (2*5) + Waist (1) + Leg (2*6) = 25 | ✅ | TBD | TBD | TBD | ||
| 11 | Galaxea R1 Pro galaxea_r1pro (this is a wheeled robot!) |
Base (6) + Torso (4) + Arm (2*7) = 24 | ✅ | TBD | TBD | TBD | ||
| 12 | Kuavo kuavo_s45 |
Head (2) + Arm (2*7) + Leg (2*6) = 28 | ✅ | TBD | TBD | TBD | ||
| 13 | Berkeley Humanoid Lite berkeley_humanoid_lite (need further tuning) |
Leg (2*6) + Arm (2*5) = 22 | ✅ | TBD | TBD | TBD | ||
| 14 | PND Adam Lite pnd_adam_lite |
Leg (2*6) + Waist (3) + Arm (2*5) = 25 | ✅ | TBD | TBD | TBD | ||
| 15 | Tienkung tienkung |
Leg (2*6) + Arm (2*4) = 20 | ✅ | TBD | TBD | TBD | ||
| 16 | PAL Robotics' Talos pal_talos |
Head (2) + Arm (2*7) + Waist (2) + Leg (2*6) = 30 | ✅ | TBD | TBD | TBD | ||
| 17 | Fourier GR3 fourier_gr3 |
Head (2) + Arm (2*7) + Waist (3) + Leg (2*6) = 31 | ✅ | TBD | TBD | TBD | ||
| More robots coming soon ! | ||||||||
| 18 | AgiBot A2 agibot_a2 |
TBD | TBD | TBD | TBD | TBD | ||
| 19 | OpenLoong openloong |
TBD | TBD | TBD | TBD | TBD |
[!NOTE] The code is tested on Ubuntu 22.04/20.04.
First create your conda environment:
conda create -n gmr python=3.10 -y
conda activate gmrThen, install GMR:
pip install -e .After installing SMPLX, change ext in smplx/body_models.py from npz to pkl if you are using SMPL-X pkl files.
And to resolve some possible rendering issues:
conda install -c conda-forge libstdcxx-ng -y[SMPLX body model] download SMPL-X body models to assets/body_models from SMPL-X and then structure as follows:
- assets/body_models/smplx/
-- SMPLX_NEUTRAL.pkl
-- SMPLX_FEMALE.pkl
-- SMPLX_MALE.pkl[AMASS motion data] download raw SMPL-X data to any folder you want from AMASS. NOTE: Do not download SMPL+H data.
[OMOMO motion data] download raw OMOMO data to any folder you want from this google drive file. And process the data into the SMPL-X format using scripts/convert_omomo_to_smplx.py.
暂无开放 Issues,或尚未同步最近议题。