본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 04. 12:39

Isaac Sim / Isaac Lab을 시작하기 전에 — 개념·용어·Tips 정리

요약

NVIDIA의 로보틱스 시뮬레이션 스택인 Isaac Sim과 Isaac Lab의 개념과 관계를 정리한 가이드입니다. Omniverse 플랫폼 위에서 각 제품이 수행하는 역할과 용어의 차이를 명확히 정의합니다.

핵심 포인트

  • Omniverse는 기반 플랫폼, Isaac Sim은 시뮬레이터, Isaac Lab은 연구 프레임워크임
  • Isaac Sim은 물리 연산과 센서 시뮬레이션에, Isaac Lab은 강화학습 트레이닝에 특화됨
  • 환경 설정 시 Ubuntu 22.04 사용을 권장함
  • 시뮬레이션 오류 발생 시 Omniverse 로그 확인이 필수적임

Isaac Sim / Isaac Lab を始める前に

시리즈: Isaac Sim / Isaac Lab 튜토리얼 — 제 0회 (전제 지식 레퍼런스)

가장 먼저 한 번 읽고, 이후의 각 기사에서 참조하는 위치입니다.

이 기사의 목적

Isaac Sim과 Isaac Lab은 별개의 제품이면서도 함께 사용하는 경우가 많으며, 둘 다 Omniverse 플랫폼 위에서 동작하고 각각 고유한 Python을 포함하고 있습니다. 이것이 스택에서 가장 혼란스러워하기 쉬운 포인트입니다. 많은 튜토리얼은 "어떤 명령어를 어떤 Python으로 실행하는가", "USD 씬(Scene)이란 무엇인가", "첫 실행 시 멈춘 것처럼 보이는 이유는 무엇인가"를 이미 이해하고 있다는 전제하에 작성되어 있습니다.

이 기사는 그러한 전제 지식을 한 번에 정리해 두기 위한 것입니다. 후속편(설치, 씬 생성, 텔레오퍼레이션(Teleoperation), 데이터 기록, 트레이닝)부터는 매번 이곳으로 돌아와 참조하는 형식이 됩니다.

이미 Isaac Sim / Isaac Lab을 다뤄본 적이 있더라도, 용어집만은 꼭 살펴보시기 바랍니다. env와 environment와 world, task와 gym task 등, 문맥에 따라 모호하게 사용되기 쉬운 단어들을 이 기사에서는 시리즈 전체에서 일관된 의미로 고정합니다.

Isaac Sim, Isaac Lab, 그리고 Omniverse의 관계

가장 혼동하기 쉬운 세 가지입니다. 간단한 정의부터 시작합니다:

NVIDIA Omniverse— 기반이 되는 플랫폼(Kit 프레임워크, 렌더링, USD 에셋 파이프라인). 그 자체로는 로보틱스 전용 제품이 아닙니다. 많은 사용자가 직접 접할 일은 없으며, Isaac Sim의 토대로 기능합니다.

Isaac Sim— Omniverse 위에 구축된 로보틱스 시뮬레이터(Robotics Simulator). PhysX를 통한 물리 연산, GPU 가속 렌더링, 센서 시뮬레이션(카메라, Lidar, IMU), Python API를 제공합니다. "세계(씬, 로봇, 물체, 물리)"가 존재하는 레이어입니다.

Isaac Lab— Isaac Sim 위에 구축된 연구용 프레임워크(Research Framework). 재사용 가능한 태스크 정의(보상, 관측, 행동 공간, 종료 조건), 벡터화된 환경(수천 개의 병렬 시뮬레이션), 강화학습(RL) 라이브러리(rsl_rl, skrl, stable-baselines3) 및 모방 학습(Imitation Learning) 라이브러리(robomimic)와의 연동을 제공합니다. "트레이닝"이 돌아가는 레이어입니다.

스택의 구조:

사용 구분 기준:

  • 로봇을 배치하거나, 뷰포트(Viewport)에서 움직이거나, 센서를 테스트하는 것은 Isaac Sim.
  • 보상 함수를 작성하거나, 정책(Policy)을 트레이닝하거나, 4096개의 환경을 GPU 상에서 병렬 실행하는 것은 Isaac Lab.

환경 치트 시트

항목권장
OSUbuntu 22.04 (Windows에서도 동작하지만, 문서화된 경로는 Linux입니다)
...
확인 명령어:
# OS
lsb_release -a
# GPU + driver
...

파일 저장 위치

표준 설치 후의 기본 경로입니다.

내용경로
Isaac Sim 본체~/isaacsim/
...
"아무 말 없이 실패했나?"라고 느껴진다면, 먼저 Omniverse의 로그를 확인하십시오. 시뮬레이터는 터미널에 출력하는 것보다 더 많은 정보를 로그에 기록하고 있습니다.

용어집

USD (Universal Scene Description) — Isaac Sim이 씬 기술에 사용하는 파일 형식. Pixar가 개발한 계층 구조 포맷으로, 레이어링(Layering)과 참조(Reference)를 지원합니다. 씬은 .usd, .usda, .usdc 중 하나입니다.

Stage (스테이지) — 시뮬레이터에 현재 로드되어 있는 USD 씬. 문서 기반 앱에서의 "현재 열려 있는 문서"라고 생각하면 이해하기 쉽습니다.

Prim (프림) — USD 씬의 계층 구조에서의 1개 노드. 로봇, 라이트, 카메라, 정육면체 모두 프림입니다. /World/Robot/Forklift/Mast

와 같은 경로를 가집니다.

Articulation (아티큘레이션) — 관절로 연결된 강체(Rigid Body) 그룹을 나타내는 프림(Prim)입니다. 로봇이 바로 이것입니다. Isaac Lab은 아티큘레이션의 생성, 리셋, 상태 취득을 위한 헬퍼(Helper)를 제공합니다.

Joint / DOF (자유도) — 구동축입니다. 지게차의 리프트 마스트는 1 DOF의 직동 관절이며, 6 DOF 암(Arm)은 6개의 구동 관절을 가집니다.

Environment (env / 환경) — 시뮬레이터 상에서 동작하는 태스크(Task)의 1개 인스턴스입니다. Isaac Lab은 하나의 GPU 상에서 수천 개의 env를 병렬로 실행할 수 있으며, 각각은 독립된 물리 상태를 가집니다. num_envs=4096이라는 지정은 동일한 태스크의 복사본을 4096개 동시에 실행한다는 의미입니다.

Task (태스크) — 관측 공간(Observation Space), 행동 공간(Action Space), 보상 함수(Reward Function), 종료 조건, 성공 조건으로 정의되는 목표입니다. Isaac Lab에서 태스크는 source/isaaclab_tasks/ 하위의 Python 클래스로 표현됩니다.

Observation (관측) — 각 스텝(Step)에서 정책(Policy)이 받는 정보입니다. 관절 위치·속도, 카메라 이미지, 센서 값, 목표 자세 등이 포함됩니다. 텐서(Tensor) 형상은 태스크 정의의 일부입니다.

Action (행동) — 각 스텝에서 정책이 출력하는 값입니다. 지게차의 경우 [drive_velocity, steering_angle, lift_velocity, tilt_velocity]와 같은 구성이 됩니다.

Policy (정책) — 관측(Observation) → 행동(Action)을 매핑하는 신경망(Neural Network)입니다. LeRobot의 용어와 동일한 의미입니다.

Episode (에피소드) — 리셋부터 종료(성공·실패·타임리미트)까지의 1회 롤아웃(Rollout)입니다. LeRobot의 에피소드와 동일한 개념을 시뮬레이션 상에서 다룹니다.

Step (스텝) — 물리 연산의 1틱(Tick)입니다. 에피소드는 스텝의 연속입니다. 시뮬레이션은 일반적으로 60Hz 또는 120Hz의 물리 레이트(Physics Rate)로 구동합니다.

Rollout (롤아웃) — env 내에서 정책을 구동하여 얻은 (관측, 행동, 보상)의 시퀀스입니다. RL(강화학습) 트레이닝은 「롤아웃 수집 → 정책 업데이트」의 루프로 이루어집니다.

Reset (리셋) — env를 초기 상태로 되돌리는 것입니다. Isaac Lab은 배치(Batch) 내의 일부 env만 개별적으로 리셋할 수 있으며, 나머지는 계속해서 실행됩니다. 이 auto-reset 메커니즘이 벡터화된 트레이닝(Vectorized Training)의 핵심입니다.

Reinforcement Learning (RL / 강화학습) — 보상 함수에 대한 시행착오를 통해 정책을 학습시키는 방법입니다. 보상을 명확히 정의할 수 있지만 데모(Demonstration)가 없는 경우에 적합합니다. Isaac Lab이 가장 잘 수행하는 영역입니다.

Imitation Learning (IL / 모방학습) — 전문가의 데모를 모방함으로써 정책을 학습시키는 방법입니다. 보상 정의가 어렵지만 데모를 수집하기 쉬운 경우에 적합합니다. Behavioral Cloning, DAgger, ACT, Diffusion Policy는 모두 IL의 일종입니다.

Headless mode (헤드리스 모드) — 뷰포트(Viewport) 창을 열지 않고 시뮬레이터를 구동하는 모드입니다. 속도가 빠르고 GPU 소비가 적어 트레이닝 시 기본값으로 사용됩니다. 뷰포트는 개발과 디버깅을 위한 용도입니다.

Domain randomization (도메인 랜덤화) — 에피소드마다 env의 파라미터(질량, 마찰, 조명, 카메라 자세)를 변화시키는 기법입니다. 정책에 일반화(Generalization) 능력을 부여하여 실기기(Real World)로의 전이를 돕습니다.

Sim-to-real (시뮬레이션에서 실기기로의 전이) — 시뮬레이션과 현실 사이의 간극(Gap), 그리고 이를 메우는 기술의 총칭입니다. 시뮬레이션에서 100% 성공하는 정책이 아무런 대책 없이 실기기에서는 30%만 성공하는 경우가 빈번합니다.

PhysX — NVIDIA의 물리 엔진입니다. Isaac Sim은 강체 및 아티큘레이션 시뮬레이션에 PhysX 5를 사용하며, GPU 가속(GPU Accelerated)이 적용되어 있습니다.

Isaac Lab의 루프

벡터화된 환경에서의 1스텝 흐름입니다.

용어집의 단어는 모두 이 루프의 어딘가에 대응합니다. 「스텝 (Step)」, 「롤아웃 (Rollout)」, 「에피소드 (Episode)」, 「리셋 (Reset)」, 「관측 (Observation)」이 루프 상의 어디에 위치하는지 지목할 수 있게 된다면, 공식 문서(Official Documentation)를 읽기가 훨씬 수월해질 것입니다.

자주 겪는 문제점 (Troubleshooting Points)

  • 동봉된 Python ≠ 시스템 Python: Isaac Sim은 ~/isaacsim/python.sh에 자체적인 Python 3.10을 동봉하고 있습니다. 여기에 Isaac Lab용 pip install을 직접 실행해서는 안 됩니다. isaaclab.sh -p라는 래퍼(Wrapper)가 있으며, 이는 올바른 인터프리터(Interpreter)와 site-packages를 자동으로 가리킵니다. 시스템 Python과 Isaac Sim의 Python을 혼용하는 것이 첫날 발생하는 가장 흔한 문제입니다. -
  • 드라이버 불일치: Isaac Sim에는 최소 요구 NVIDIA 드라이버 버전이 있습니다. CUDA나 PhysX 에러를 추적하기 전에 먼저 드라이버를 업데이트하십시오. 「원인 모를 크래시(Crash)」 보고의 상당수는 이것이 원인입니다. -
  • 첫 실행 시 지연: 처음 실행할 때는 셰이더 컴파일(Shader Compilation)에 10분 이상 소요될 수 있습니다. 멈춘 것처럼 보여도 멈춘 것이 아닙니다. nvidia-smi로 GPU가 작동 중인지 확인하십시오. -
  • VRAM 한계는 서서히 찾아온다: 병렬 환경(Parallel Env)은 각각 GPU 메모리를 소비합니다. 무거운 씬(Scene)에서 4096개의 환경을 돌리면 24GB GPU에서도 OOM (Out of Memory)이 발생합니다. 디버깅 중에는 우선 num_envs를 낮춰보십시오. -
  • Nucleus 에셋 취득 실패: 기본 씬은 NVIDIA의 Nucleus 서버에서 에셋을 가져옵니다. 네트워크(기업 프록시, DNS)에 의해 차단되어 있으면 프림(Prim)이 누락된 상태로 씬이 로드됩니다. 로컬에 미러링(Mirror) 또는 캐싱(Caching)하십시오. -
  • Headless ≠ 무음(Silent) 아님: 헤드리스(Headless) 모드에서도 GPU는 사용되며, 로그는 기록되고, 체크포인트(Checkpoint)는 저장됩니다. 뷰포트(Viewport)만 생략될 뿐입니다. 「윈도우가 없으니 아무 일도 일어나지 않는다」고 생각하지 마십시오. -
  • USD 레이어(Layer)의 함정: 참조된 USD 레이어를 편집하면, 참조 원본 파일 자체가 변경되어 해당 에셋을 참조하는 모든 씬에 영향을 미칩니다. 참조 에셋을 직접 편집하지 말고, 서브 레이어(Sub-layer)나 오버라이드(Override)를 사용하십시오.

Isaac Sim / Isaac Lab을 효율적으로 배우기 위한 팁 (Tips)

  • 먼저 동봉된 데모를 실행하기: Isaac Sim의 「Examples」 메뉴나 Isaac Lab의 scripts/demos/가 구체적인 입구입니다. 자신의 코드를 한 줄도 쓰기 전에 먼저 이것들을 실행해 보십시오. -
  • 태스크(Task) 설정 하나를 정독하기: source/isaaclab_tasks/ 하위의 작은 태스크를 하나 골라 위에서 아래까지 읽어보십시오. 설정 파일은 정보량이 많지만 읽기 쉬우며, 문서보다 빠르게 프레임워크를 이해할 수 있습니다. -
  • 우선 헤드리스(Headless)로 실행하기: 뷰포트 없이 트레이닝(Training)과 검증(Validation)을 돌립니다. GUI는 특정 문제를 디버깅할 때만 엽니다. -
  • 최소 구성으로 먼저 통과시키기: num_envs=16, max_iterations=10, 작은 네트워크 설정으로 파이프라인 전체를 엔드투엔드(End-to-End)로 한 번 통과시킨 후 규모를 키웁니다. -
  • 로그를 저장하기: tee를 사용하여 모든 트레이닝 실행 로그를 파일로 남기십시오. 며칠 뒤의 자신을 구원해 줄 것입니다. -
  • NVIDIA Isaac Sim / Isaac Lab 포럼 활용하기: 당신이 막혀 있는 문제는 거의 확실히 누군가가 먼저 막혔던 문제입니다.

무엇을 만들고 있는가

이 시리즈의 동기는 AI로 지원하는 지게차 원격 조종 시스템입니다. 창고에서 원격 오퍼레이터(Operator)가 지게차를 조작하는 유스케이스로, 인간에게 느리거나 위험한 부분(포크를 팔레트 구멍에 맞추기, 기울기 보정, 충돌 회피)을 학습된 정책(Policy)에 맡기고, 더 고차원적인 판단은 오퍼레이터가 담당하는 방향성을 지향합니다.

지게차는 실제 기기에서 데이터를 수집하기 어렵기 때문에(실패 사례를 안전하게 재현할 수 없음), 시뮬레이션 우선 방식으로 진행합니다. Isaac Sim에서 지게차를 구축 → Isaac Lab에서 태스크 (Task) 정의 → 시뮬레이션 상에서 정책 (Policy) 트레이닝 → 실제 기기로 전이 (Transfer) 하는 흐름입니다.

시리즈 예정:

#테마
0프라이머 (Primer) — 개념·용어·환경 (이 기사)
1Isaac Sim 및 Isaac Lab 설치
2Isaac Sim 기초 — UI·USD·로봇 배치
3Isaac Lab 기초 — 기존 태스크 구동
...

집필 중에 슬러그 (Slug)는 변경될 가능성이 있습니다. 확정된 것은 프라이머의 슬러그뿐입니다.

참고 링크

  • Isaac Lab 문서
  • Isaac Lab GitHub
  • USD 문서
  • NVIDIA Isaac 개발자 포럼
  • 시리즈 제 1~7회 (공개되는 대로 여기에 링크를 추가합니다)

Discussion

AI 자동 생성 콘텐츠

본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0