Isaac Lab is NVIDIA's open-source robot learning framework: run 10,000 parallel training environments on a single GPU, train locomotion policies in 30 minutes instead of 12 hours, and transfer them to real robots. Here's everything you need to get started in 2026.
Isaac Lab is the successor to Isaac Gym, NVIDIA's GPU-accelerated robot learning platform. It was rebuilt on top of Isaac Sim (NVIDIA Omniverse) with a modular manager-based architecture that makes it much easier to define custom tasks, robots, and training scenarios.
Where MuJoCo runs ~500 environments in parallel on a powerful workstation, Isaac Lab runs 10,000+ on a single A100 GPU. For locomotion training, this 20× speedup compresses a 10-hour training run to 30 minutes. For manipulation tasks that require more environments to explore the space, this is even more valuable.
# Required:
# - Ubuntu 20.04 or 22.04
# - NVIDIA GPU: RTX 3070 minimum (RTX 3090 / A100 recommended)
# - CUDA 11.8 or 12.x
# - Python 3.10
# Verify GPU and CUDA
nvidia-smi
nvcc --version# Method 1: NVIDIA Omniverse Launcher (GUI, recommended)
# Download from: developer.nvidia.com/isaac-sim
# Install Isaac Sim 4.x via the Launcher
# Method 2: pip (Isaac Sim 4.0+)
pip install isaacsim==4.2.0 \
isaacsim-extscache-physics==4.2.0 \
isaacsim-extscache-kit==4.2.0 \
isaacsim-extscache-kit-sdk==4.2.0 \
--extra-index-url https://pypi.nvidia.com# Clone the Isaac Lab repository
git clone https://github.com/isaac-sim/IsaacLab.git
cd IsaacLab
# Install Isaac Lab in development mode
./isaaclab.sh --install
# Verify the installation
./isaaclab.sh -p source/standalone/tutorials/00_sim/create_empty.py# Train ANYmal-C locomotion with PPO (classic first experiment)
./isaaclab.sh -p source/standalone/workflows/rsl_rl/train.py \
--task Isaac-Velocity-Rough-Anymal-C-v0 \
--num_envs 4096 \
--headless
# Watch training progress
# Checkpoint saved to: logs/rsl_rl/anymal_c_rough/
# Play back the trained policy (with rendering)
./isaaclab.sh -p source/standalone/workflows/rsl_rl/play.py \
--task Isaac-Velocity-Rough-Anymal-C-v0 \
--num_envs 32 \
--checkpoint logs/rsl_rl/anymal_c_rough/<run>/model_*.ptfrom isaaclab.envs import ManagerBasedRLEnv
# Load a pre-built environment
env = gym.make("Isaac-Velocity-Rough-Anymal-C-v0",
num_envs=4096,
device="cuda:0")
# Step the environment
obs, info = env.reset()
for _ in range(1000):
action = env.action_space.sample() # Random policy
obs, reward, terminated, truncated, info = env.step(action)# Example: Custom reward manager config
from isaaclab.managers import RewardTermCfg as RewTerm
from isaaclab.managers import SceneEntityCfg
@configclass
class MyRewardsCfg:
# Reward forward velocity
track_lin_vel_xy_exp = RewTerm(
func=mdp.track_lin_vel_xy_exp,
weight=1.0,
params={"command_name": "base_velocity", "std": 0.5}
)
# Penalty for joint torque
dof_torques_l2 = RewTerm(
func=mdp.joint_torques_l2,
weight=-1.0e-5
)from isaaclab_assets import ANYMAL_C_CFG, UNITREE_GO2_CFG
# Configure ANYmal C
anymal_cfg = ANYMAL_C_CFG.replace(
prim_path="{ENV_REGEX_NS}/Robot",
spawn=sim_utils.UsdFileCfg(
usd_path=f"{ISAACLAB_NUCLEUS_DIR}/Robots/ANYbotics/ANYmal-C/anymal_c.usd",
rigid_props=sim_utils.RigidBodyPropertiesCfg(
disable_gravity=False,
max_depenetration_velocity=1.0,
),
),
)from isaaclab.terrains import TerrainImporterCfg
terrain_cfg = TerrainImporterCfg(
prim_path="/World/ground",
terrain_type="generator",
terrain_generator=ROUGH_TERRAINS_CFG,
max_init_terrain_level=5,
collision_group=-1,
physics_material=sim_utils.RigidBodyMaterialCfg(
friction_combine_mode="multiply",
restitution_combine_mode="multiply",
static_friction=1.0,
dynamic_friction=1.0,
),
)# Domain randomization config
@configclass
class MyEventsCfg:
# Randomize base mass each episode
add_base_mass = EventTerm(
func=mdp.randomize_rigid_body_mass,
mode="startup",
params={
"asset_cfg": SceneEntityCfg("robot", body_names="base"),
"mass_distribution_params": (-1.0, 3.0),
"operation": "add",
},
)
# Push robot with random force
push_robot = EventTerm(
func=mdp.push_by_setting_velocity,
mode="interval",
interval_range_s=(10.0, 15.0),
params={"velocity_range": {"x": (-0.5, 0.5), "y": (-0.5, 0.5)}},
)| Robot | Company | Type | Support Level | Tasks |
|---|---|---|---|---|
| ANYmal C | ANYbotics | Quadruped | Full | Locomotion, inspection |
| ANYmal D | ANYbotics | Quadruped | Full | Rough terrain, payload |
| Unitree Go2 | Unitree | Quadruped | Full | Locomotion, agility |
| Unitree A1 | Unitree | Quadruped | Full | Research, locomotion |
| Unitree H1 | Unitree | Humanoid | Partial | Bipedal locomotion |
| Spot | Boston Dynamics | Quadruped | Community | Navigation, inspection |
| Franka Panda | Franka Emika | Arm | Full | Manipulation |
| UR10 | Universal Robots | Arm | Full | Pick-and-place |
| Allegro Hand | Wonik Robotics | Hand | Full | Dexterous manipulation |
| Shadow Hand | Shadow Robotics | Hand | Full | In-hand manipulation |
| Feature | Isaac Lab | MuJoCo | Isaac Gym |
|---|---|---|---|
| GPU Parallelism | 10,000+ parallel envs on A100 | 100-500 envs typical | Deprecated (Isaac Lab successor) |
| Physics Accuracy | PhysX 5 + Omniverse — very accurate | MJC physics — highly accurate, industry standard | PhysX 4 (older) |
| Setup Difficulty | Complex — needs NVIDIA GPU + Isaac Sim | Simple — pip install mujoco | Deprecated |
| Rendering | RTX ray tracing — photorealistic | Basic OpenGL — functional | Basic |
| Robot Library | Growing fast — 15+ official robots | MuJoCo Menagerie — 20+ robots | Legacy |
| RL Framework Support | RSL-RL, RL-Games, Stable-Baselines3, skrl | Any framework — gym-compatible | RSL-RL, RL-Games only |
| Sim-to-Real Track Record | ANYmal locomotion (ANYbotics), ETH Zurich research | DeepMind robotics, OpenAI Dactyl (hand manipulation) | Legged Labs papers (2021-2023) |
| Cost | Free (open-source) — needs expensive GPU | Free for research, $595/yr commercial | Deprecated/free |