Pollux Logo

Isaac Lab - Interactive Scene 사용하기

Isaac Lab은 NVIDIA Isaac Sim 기반의 강화학습 시뮬레이션 프레임워크로, 로봇, 센서, 환경 등을 구성하고 제어할 수 있는 기능을 제공합니다.

이번 글에서는 Isaac Lab에서 제공하는 InteractiveScene 클래스를 활용해 시뮬레이션 환경(Scene)을 효율적으로 생성하고 제어하는 방법을 다룹니다.

기존에는 바닥, 조명, 로봇 등을 수동으로 하나씩 생성해야 했다면, InteractiveScene을 활용하면 코드 몇 줄로 원하는 구성 요소들을 자동으로 배치할 수 있습니다.

또한 CLI 인자를 통해 시뮬레이션 환경 개수도 동적으로 지정할 수 있어, 강화학습을 위한 병렬 환경 구성에 매우 유용합니다.

🔗 공식 튜토리얼: https://isaac-sim.github.io/IsaacLab/main/source/tutorials/02_scene/create_scene.html

Interactive Scene의 개념

scene.InteractiveScene 클래스는 바닥, 조명, 로봇, 센서(LiDAR, 카메라 등) 등 다양한 시뮬레이션 요소를 손쉽게 구성할 수 있도록 도와줍니다.

직접 모든 요소를 생성하는 대신, 설정(Configuration)을 기반으로 자동 생성되며 유지 관리도 훨씬 수월합니다.

CLI 인자를 통한 환경 개수 설정

예를 들어, 다음과 같이 --num_envs 인자를 추가하면 CLI에서 실행 시 환경 개수를 지정할 수 있습니다:

parser.add_argument("--num_envs", type=int, default=2, help="Number of environments")
  • type=int: 정수만 입력 가능
  • default=2: 별도 인자 없이 실행하면 2개의 환경 생성
  • 여러 환경을 병렬로 학습시킬 때 매우 유용

Isaac Lab 코드 구조 이해하기

Image

Isaac Lab 프로젝트 디렉토리 구조는 아래와 같이 구성됩니다:

  • source/standalone: 튜토리얼과 강화학습 관련 스크립트
  • extensions: Isaac Lab의 핵심 기능 및 자산 포함
    • omni.isaac.lab: 주요 엔진 기능
    • omni.isaac.lab.assets: 로봇 및 환경 설정 파일 포함
    • lab.tasks: 로봇 동작 정의 (조작, 이동 등)

주요 클래스와 구성 요소

Image

Isaac Lab에서 환경을 구성할 때 주요하게 사용되는 클래스들:

  • ArticulationCfg: 움직이는 로봇 등의 설정
  • AssetBaseCfg: 고정된 환경 요소(예: 바닥, 벽) 설정
  • InteractiveSceneCfg: 로봇, 조명, 센서 등 전체 설정 클래스
  • InteractiveScene: 실제로 씬을 생성하는 클래스
  • SimulationContext: 시뮬레이션 실행/제어 (play, pause, step 등)

또한 설정 클래스에는 @configclass 데코레이터를 사용하여 자동화된 설정 구조를 정의할 수 있습니다.

CartpoleSceneCfg 예제 분석

Image

다음은 InteractiveSceneCfg를 상속받아 구성된 CartpoleSceneCfg 예제입니다:

ImageImage
  • GroundPlaneCfg: 바닥을 기본 위치에 생성
  • DomeLightCfg: 실내 환경을 위한 기본 조명
  • CARTPOLE_CFG: 카트-폴 로봇의 설정을 불러오고 위치를 상대 경로로 지정

절대 경로 vs 상대 경로

ImageImage
  • /World/...와 같은 절대 경로는 씬에서 한 번만 생성되며, 바닥, 조명과 같이 하나만 존재해야 하는 요소에 사용
Image
  • {ENV_REGEX_NS}와 같은 상대 경로환경 수만큼 복제 가능
    • 예: -num_envs=32 설정 시, 32개의 Sphere 생성 가능
Image

즉, 강화학습을 위한 다중 환경 시뮬레이션에서는 로봇, 테이블 등 환경별로 고유해야 하는 요소는 상대 경로로 지정해야 합니다.

CLI 인자를 통한 병렬 환경 구성

ImageImage

아래와 같이 CLI 인자를 사용하면 실행 시 동적으로 환경 수를 조절할 수 있습니다:

Image
  • 입력 예:
Image

./isaaclab.sh -p my_scene.py --num_envs 32

  • 결과: Sphere 32개 생성, 각 환경에 하나씩 배치

이 구조는 특히 강화학습에서 병렬 환경을 구성하여 학습 속도를 높이는 데 필수적입니다.

마무리

이번 글에서는 Isaac Lab의 InteractiveScene 클래스를 활용한 시뮬레이션 환경 구성 방법을 정리했습니다.

주요 내용은 다음과 같습니다:

  • InteractiveScene과 설정 클래스를 통해 바닥, 조명, 로봇을 자동 구성
  • @configclass를 활용한 직관적인 환경 정의
  • 절대/상대 경로 사용 방식의 차이와 병렬 환경 구성의 핵심 개념
  • CLI 인자를 통한 환경 수 조정

이처럼 Isaac Lab은 복잡한 로봇 환경도 코드 몇 줄로 효율적으로 구성할 수 있도록 설계되어 있으며, 강화학습 워크플로우에 최적화된 시뮬레이션 구조를 제공합니다.

이 글 공유하기:

Copyright 2025. POLLUX All rights reserved.