Isaac Sim 한글 가이드

NVIDIA Isaac Sim 5.1/6.0 핵심 장점과 헤드리스로 직접 검증한 데모

07. Isaac Lab (RL 학습 프레임워크)

Reinforcement Learning · 검증 환경: Isaac Sim 6.0.0-dev2 / RTX PRO 6000 Blackwell

Isaac Lab은 NVIDIA가 Isaac Gym의 후속으로 발표한 GPU 가속 RL 학습 프레임워크다. 한 GPU에서 수천 환경을 병렬 굴려 PPO/SAC를 학습한다.

이 기능의 강점

구현 방법

본 컨테이너에 git clone + pip install -e source/{isaaclab,isaaclab_assets,isaaclab_tasks,isaaclab_rl,isaaclab_contrib,isaaclab_mimic}로 설치. SimulationApp을 띄운 후 import isaaclab_tasks로 환경 등록 트리거.

최소 데모

Isaac Lab 설치 + 등록된 Isaac-* 환경 카운트.
Isaac Lab 설치 + 등록된 Isaac-* 환경 카운트.

검증 결과

설치 후 172개Isaac-* Gym 환경이 등록됨 (Cartpole-Direct-v0, Velocity-Flat-H1, Manipulation-Cube-Franka-IK-Abs-v0 등). 본 프로젝트 컨테이너에서 직접 검증.

핵심 코드 발췌

# /tmp/IsaacLab에 git clone, 컨테이너에 pip install
cd /tmp/IsaacLab
/isaac-sim/python.sh -m pip install -e isaaclab
/isaac-sim/python.sh -m pip install -e isaaclab_assets
/isaac-sim/python.sh -m pip install -e isaaclab_tasks
/isaac-sim/python.sh -m pip install -e isaaclab_rl
/isaac-sim/python.sh -m pip install -e isaaclab_contrib

# 실행 시 import
from isaacsim import SimulationApp
sim = SimulationApp({"headless": True})
import isaaclab, isaaclab_tasks
import gymnasium as gym
env_names = [e for e in gym.registry.keys() if e.startswith("Isaac-")]
print(len(env_names))  # 172
코드 다운로드 (zip)

실무 예제 — CartpoleEnv 4환경 병렬 인스턴스화 + RTX 렌더

Isaac Lab Direct RL Env 인터페이스로 CartpoleEnv 4개 환경을 GPU에서 병렬 인스턴스화. 각 환경은 카트 + 폴 + 그리드 바닥으로 구성되며, 같은 SimulationApp에서 외부 카메라로 4환경을 한 컷에 캡처.

Cartpole 4환경이 격자로 클로닝된 Isaac Lab 씬 — 노란 폴 + 파란 카트 기둥 + 미끄럼 트랙. 모두 같은 GPU에서 병렬 시뮬레이션.
Cartpole 4환경이 격자로 클로닝된 Isaac Lab 씬 — 노란 폴 + 파란 카트 기둥 + 미끄럼 트랙. 모두 같은 GPU에서 병렬 시뮬레이션.

본 컨테이너에서 검증 — 172개 Isaac-* 환경 자동 등록 + CartpoleEnv(cfg=CartpoleEnvCfg(scene.num_envs=4)) 정상 인스턴스화 + RTX 렌더로 카메라 1대에 4환경 모두 캡처. ISAACLAB_NUCLEUS_DIRget_assets_root_path()로 자동 설정.

실무 데모 코드

import carb.settings
from isaacsim.storage.native import get_assets_root_path

# Isaac Lab이 cartpole.usd를 받아올 클라우드 루트 지정
carb.settings.get_settings().set(
    "/persistent/isaac/asset_root/cloud", get_assets_root_path())

from isaaclab_tasks.direct.cartpole.cartpole_env import CartpoleEnv, CartpoleEnvCfg
import torch

cfg = CartpoleEnvCfg()
cfg.scene.num_envs = 4
cfg.sim.device = "cuda:0"
env = CartpoleEnv(cfg=cfg, render_mode=None)
obs, info = env.reset()
for _ in range(20):
    a = torch.randn(4, env.cfg.action_space, device="cuda:0")
    env.step(a)
실무 데모 코드 zip