humanoid-training / train_isaac_humanoid.py
td-builder's picture
Upload train_isaac_humanoid.py with huggingface_hub
7a1c9c6 verified
Raw
History Blame Contribute Delete
2.09 kB
"""
Isaac Lab Humanoid β€” Upright Walking Training
===============================================
Uses NVIDIA Isaac Sim physics with Isaac Lab's humanoid environment.
Custom reward weights for upright, stable walking.
Runs 2048 parallel environments on GPU (vs 16 in MuJoCo).
Author: Milan Narula
Project: ARCSA AIR Scholarship Application
"""
import sys
sys.argv += ["--headless"]
from isaaclab.app import AppLauncher
launcher = AppLauncher({"headless": True})
sim_app = launcher.app
import gymnasium as gym
import torch
import isaaclab_tasks # registers all Isaac Lab envs
from isaaclab_tasks.direct.humanoid.humanoid_env import HumanoidEnvCfg
# ── Custom config: heavy uprightness reward ──
cfg = HumanoidEnvCfg()
cfg.up_weight = 2.0 # default 0.1 β€” 20x increase
cfg.alive_reward_scale = 3.0 # reward for staying alive
cfg.heading_weight = 0.5 # reward for walking straight
cfg.termination_height = 0.9 # terminate if torso drops below this
# Run 2048 envs in parallel on GPU
cfg.scene.num_envs = 2048
print("=" * 60)
print("ISAAC LAB HUMANOID β€” Upright Walking")
print(f"Physics: NVIDIA PhysX (Isaac Sim 5.1)")
print(f"Parallel envs: {cfg.scene.num_envs}")
print(f"Uprightness weight: {cfg.up_weight} (20x default)")
print("=" * 60)
env = gym.make("Isaac-Humanoid-Direct-v0", cfg=cfg)
# Wrap for rsl_rl
from isaaclab_rl.rsl_rl import RslRlVecEnvWrapper
env = RslRlVecEnvWrapper(env)
# Load PPO runner config
from isaaclab_tasks.direct.humanoid.agents.rsl_rl_ppo_cfg import HumanoidPPORunnerCfg
from rsl_rl.runners import OnPolicyRunner
runner_cfg = HumanoidPPORunnerCfg()
runner_cfg.max_iterations = 3000
runner = OnPolicyRunner(
env,
runner_cfg.to_dict(),
log_dir="./logs/humanoid_upright",
device="cuda"
)
print("\nStarting training...")
print("With 2048 parallel envs, this should be MUCH faster than MuJoCo\n")
runner.learn(
num_learning_iterations=runner_cfg.max_iterations,
init_at_random_ep_len=True
)
print("\nTraining complete!")
print("Model saved in ./logs/humanoid_upright/")
sim_app.close()