Skip to content

G1 Fast Running

Purpose

Push the working running policy to a higher forward velocity curriculum while keeping the running reward settings mostly unchanged.

Item Value
Task ID Unitree-G1-29dof-Running-Fast
Config source/unitree_rl_lab/unitree_rl_lab/tasks/locomotion/robots/g1/29dof/fast_running_env_cfg.py
Parent task Unitree-G1-29dof-Running
Output experiment root logs/rsl_rl/unitree_g1_29dof_running_fast/
Warm-start checkpoint logs/rsl_rl/unitree_g1_29dof_running/2026-05-14_03-36-49_running_finish_may14/model_2100.pt

fast_running_env_cfg.py subclasses RunningRobotEnvCfg, then changes only the command ranges. It intentionally keeps the gait, clearance, energy, action-rate, and termination settings from the normal running task.

Tweaks From Running

Area Running task Fast running task
Initial forward command lin_vel_x=(0.2, 0.8) lin_vel_x=(0.8, 1.6)
Initial lateral command lin_vel_y=(-0.05, 0.05) lin_vel_y=(-0.05, 0.05)
Initial yaw command ang_vel_z=(-0.1, 0.1) ang_vel_z=(-0.1, 0.1)
Forward curriculum limit lin_vel_x=(0.0, 2.0) lin_vel_x=(0.0, 3.0)
Lateral curriculum limit lin_vel_y=(-0.2, 0.2) lin_vel_y=(-0.15, 0.15)
Yaw curriculum limit ang_vel_z=(-0.3, 0.3) ang_vel_z=(-0.25, 0.25)

The first question was whether the learned running gait could stretch to higher forward speeds before adding more reward changes.

Runs

The fast-running task was warm-started by copying the normal running checkpoint into the fast experiment root:

logs/rsl_rl/unitree_g1_29dof_running_fast/from_running_model_2100/model_2100.pt

Fast training was started with:

TERM=xterm /home/zeul/IsaacLab/isaaclab.sh -p scripts/rsl_rl/train.py \
  --headless \
  --task Unitree-G1-29dof-Running-Fast \
  --resume \
  --load_run from_running_model_2100 \
  --checkpoint model_2100.pt \
  --run_name fast_from_running_2100 \
  --max_iterations 3000

The fast run writes to:

logs/rsl_rl/unitree_g1_29dof_running_fast/2026-05-14_03-57-12_fast_from_running_2100/

The completed fast model reached:

logs/rsl_rl/unitree_g1_29dof_running_fast/2026-05-14_03-57-12_fast_from_running_2100/model_5099.pt

Playback exported:

logs/rsl_rl/unitree_g1_29dof_running_fast/2026-05-14_03-57-12_fast_from_running_2100/exported/policy.pt
logs/rsl_rl/unitree_g1_29dof_running_fast/2026-05-14_03-57-12_fast_from_running_2100/exported/policy.onnx

Observed Behavior

The completed fast run reached the full 3.0 m/s curriculum. Final TensorBoard values around model_5099.pt were:

Metric Approximate final value
Train/mean_reward 29.6
Train/mean_episode_length 986 / 1000
Metrics/base_velocity/error_vel_xy 0.49
Metrics/base_velocity/error_vel_yaw 2.33
Curriculum/lin_vel_cmd_levels 3.0 m/s
Episode_Termination/bad_orientation about 2%
Episode_Termination/time_out about 93%

GUI playback was visually interesting and stable enough to justify a 10 m/s stress-test variant.

The first playback used the inherited small play terrain, which can let robots run off the edge at high speed. This is a playback artifact risk: training used a larger terrain than the default play config. The later sprint task explicitly enlarges the play terrain.