G1 Dance RL: policies and Schuhplattler reference motion

Reinforcement-learning dance policies for the Unitree G1 (29 DoF), trained in Isaac Lab and tested in Isaac Lab and MuJoCo (sim-to-sim). The experiment asks whether a policy that learns more dances becomes more robust. Code, training setup and full results: github.com/OyunbatBatzorig/g1-dance-rl

Simulation only. These policies have not been run on a real robot. Do not deploy them on hardware without your own testing and safety measures.

Policies (policies/)

Each folder holds an rsl-rl checkpoint (model_*.pt, actor-critic MLP 512-256-128, ELU) and the exact params/env.yaml and params/agent.yaml used for training. Task ids are registered by the GitHub repository (prefix Unitree-G1-29dof-Mimic-Schuhplattler-).

Folder Task Dances Iterations Action MuJoCo success (64 randomized runs)
p1_dance102 Residual-DR-D102-Wide Dance-102 5,000 residual 92%
p2_dance102_gangnam Residual-DR-D102-Wide-Multi2 + Gangnam Style 6,000 residual 97% / 97%
p3_three_dances_residual Residual-DR-D102-Wide-Multi3 + Schuhplattler v1 10,000 residual 97% / 100% / 36%
p3_three_dances_full_v2 MimicAction-DR-D102-Multi3Bal Dance-102, Gangnam, Schuhplattler v2 10,000 full 95% / 95% / 70%
schuhplattler_full MimicAction-DR-Sch Schuhplattler v1 3,000 full 91–95%
schuhplattler_v2_full MimicAction-DR-SchBal2 Schuhplattler v2 3,000 full 88–95%
  • Residual action: q_des = q_ref[k+1] + clip(a · scale, ±1.0 rad), PD velocity target = reference joint velocity.
  • Full action: q_des = q_default + scale · a (unitree_rl_lab default).
  • Observation (154): reference joint position and velocity (29 + 29), reference torso orientation in the robot torso frame (6), pelvis angular velocity (3), joint position minus default (29), joint velocity (29), last action (29). Isaac Lab joint order. 50 Hz policy, 200 Hz physics.
  • Training randomization (DR v2): Kp/Kd ×0.75–1.25, link masses ×0.7–1.3, friction 0.3–2.0, latency 0–20 ms, sensor noise, random pushes. One seed (42) per policy.

Play a policy in MuJoCo with scripts/sim2sim/sim2sim_dance.py from the GitHub repository (--action wide for residual, --action mimic for full).

Motions (motions/)

Schuhplattler (Bavarian folk dance) retargeted to the G1 from a tutorial video: video → GVHMR → GMR → ground-contact fix, added ending (blend to the default pose), and for v2 a balance fix (pelvis shifted over the stance foot with leg IK, the 10.4 s hop replaced by a short double support).

File Content
schuhplattler_v1_30hz.csv / _50hz.npz first reference (14.37 s)
schuhplattler_v2_30hz.csv / _50hz.npz balance-fixed reference (14.33 s)

CSV: one row per frame, root position (3), root quaternion xyzw (4), 29 joint angles in Unitree SDK order (unitree_rl_lab mimic format). NPZ: made with unitree_rl_lab scripts/mimic/csv_to_npz.py (50 Hz, Isaac Lab joint order, with body poses and velocities).

Dance-102 and Gangnam Style motions are not included: get them from unitree_rl_lab (Apache-2.0).

License and credits

CC BY-NC 4.0 (non-commercial). The Schuhplattler motion is derived from GVHMR output, whose license allows research and non-commercial use only; GVHMR uses SMPL-X body models (not included).

  • unitree_rl_lab: tasks, training setup, Dance-102 and Gangnam Style motion capture
  • GMR ("Retargeting Matters"), GVHMR, Isaac Lab, MuJoCo
  • I-CTRL for the residual action and the domain randomization ranges
  • Schuhplattler source video: "Schuhplatteln lernen (Anleitung): Häusei / Häuslratz" by iPlattl
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading

Paper for Oyunbat26/g1-dance-rl