Skip to content
humanoidrobots.training

Starting viewport

Unitree Robotics · humanoid

Unitree H1

Full-size electric humanoid from Unitree with 5-DOF-per-leg design, known for a 3.3 m/s humanoid walking-speed record.

Frames · Unitree H1

5 items · credit and license on each
  • Unitree H1 studio render, three-quarter front view
    Studio render of the published MJCF, keyframe pose from the model. Geometry only; colours are the model's own materials.Rendered by Hyperspawn from mujoco_menagerie/unitree_h1 (BSD-3-Clause) · Hyperspawn render · source
  • Unitree H1 studio render, side view
    Side view of the same MJCF render, keyframe pose from the model.Rendered by Hyperspawn from mujoco_menagerie/unitree_h1 (BSD-3-Clause) · Hyperspawn render · source
  • 4 s turntable of the MJCF studio render.Rendered by Hyperspawn from mujoco_menagerie/unitree_h1 (BSD-3-Clause) · Hyperspawn render · source
  • Introducing Unitree H1: Its First General-purpose Humanoid Robot| Embodied AI Price below $90kUnitree Robotics · official embed · source
  • Unitree H1 Breaking humanoid robot speed world record [full-size humanoid] Evolution V3.0Unitree Robotics · official embed · source

Policy in the viewport

Unitree H1 velocity walking

Velocity tracking on flat ground (forward, lateral, yaw rate)

Checkpoint
deploy/pre_train/h1/motion.ptlegged_gym (Isaac Gym) + rsl_rl PPO, ActorCriticRecurrent (LSTM 64, MLP 32, ELU)
Model
Unitree H1 10-DoF · unitreerobotics/unitree_rl_gym/resources/robots/h1/scene.xml
Export
ONNX opset 17 with the LSTM state as explicit inputs/outputs; weights copied unchanged. max |a_torch - a_onnx| < 5e-6 over 200 stateful random steps (onnxruntime 1.x CPU).
Timing
physics 2 ms · policy every 10 steps (50 Hz) · network runs after the step
Obs
41 floats: base_ang_vel[3] x0.25 · projected_gravity[3] · command[3] x[2, 2, 0.25] · joint_pos_rel[10] · joint_vel[10] x0.05 · last_action[10] · gait_phase[2] T=0.8sLSTM state [1, 1, 64] carried between steps, zeroed on reset
Action
10 joint targets = action x 0.25 + default · PD kp/kd 150/2, 200/4, 40/2 · torque to motor ctrl
Joints
left_hip_yaw_joint, left_hip_roll_joint, left_hip_pitch_joint, left_knee_joint, left_ankle_joint, right_hip_yaw_joint, right_hip_roll_joint, right_hip_pitch_joint, right_knee_joint, right_ankle_joint
Commands
trained vx [-1, 1] vy [-1, 1] yaw [-1, 1] · starts at [0.5, 0, 0]
Tested
60 s at [0.5, 0, 0] in MuJoCo 3.14.0 WASM + onnxruntime-web 1.30 (wasm, 1 thread), Chromium, real time: no fall, mean speed along heading 0.47 m/s, base height never below 1.00 m (2026-09-25)
Notes
  • The reference script runs PD on every 2 ms physics step: tau = kp*(target - q) - kd*qdot, written straight to the motor ctrl; MuJoCo clamps it to each joint's actuatorfrcrange.
  • The policy runs after every 10th step on the post-step state (50 Hz). gait phase = (steps*dt mod 0.8)/0.8, steps counted from reset.
  • Base angular velocity is qvel[3:6] of the free joint (body frame). Projected gravity uses the reference formula on qpos[3:7] (w,x,y,z).
  • Training used heading mode (yaw-rate command recomputed from heading error); the policy input is still (vx, vy, yaw rate).
  • Replay check: this runtime (MuJoCo WASM + onnxruntime-web in Node) and the reference script (MuJoCo 3.14 Python + TorchScript) give the same base trajectory to the centimetre over 30 s at [0.5, 0, 0] (x 13.80 m, y -0.21 m).

Contract file: packages/sim/policies/unitree_h1_walk/contract.json · served at /policies/unitree_h1_walk/contract.json

Provenance

Model
Unitree H1 10-DoF
Entry
resources/robots/h1/scene.xml
Files
23 · 14 MB, fetched from raw.githubusercontent.com, cached in your browser
License
BSD-3-Clause
Engine
MuJoCo 3.14.0, official WebAssembly build · three.js renderer
Controller
Published policy (deploy/pre_train/h1/motion.pt), torque PD at 500 Hz; Hold and Limp are the generic PD controllers
Caveat
Opens walking on its published policy (set the command to 0 to stand). Hold and Limp are our generic PD controllers; this legs-only model does not stay up under Hold.
Note
unitree_rl_gym's H1: 10 torque-driven leg joints, arms and torso fixed. The model its published walking policy is replayed on.
Model
Unitree H1
Entry
unitree_h1/scene.xml
Files
23 · 14 MB, fetched from raw.githubusercontent.com, cached in your browser
License
BSD-3-Clause
Engine
MuJoCo 3.14.0, official WebAssembly build · three.js renderer
Controller
PD hold on the stand keyframe with an ankle-strategy tilt term; not a learned policy

Policies listed for Unitree H1

The build package lists no other policies. The one above is the only published checkpoint for Unitree H1 that we replay.

Train on GPUs

mjlab ships no stock task for Unitree H1. The training page gives you the pinned model and the steps to write a robot config.