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
scene.InteractiveScene
클래스는 바닥, 조명, 로봇, 센서(LiDAR, 카메라 등) 등 다양한 시뮬레이션 요소를 손쉽게 구성할 수 있도록 도와줍니다.
직접 모든 요소를 생성하는 대신, 설정(Configuration)을 기반으로 자동 생성되며 유지 관리도 훨씬 수월합니다.
예를 들어, 다음과 같이 --num_envs 인자를 추가하면 CLI에서 실행 시 환경 개수를 지정할 수 있습니다:
Isaac Lab 프로젝트 디렉토리 구조는 아래와 같이 구성됩니다:
source/standalone
: 튜토리얼과 강화학습 관련 스크립트extensions
: Isaac Lab의 핵심 기능 및 자산 포함 omni.isaac.lab
: 주요 엔진 기능omni.isaac.lab.assets
: 로봇 및 환경 설정 파일 포함lab.tasks
: 로봇 동작 정의 (조작, 이동 등)Isaac Lab에서 환경을 구성할 때 주요하게 사용되는 클래스들:
ArticulationCfg
: 움직이는 로봇 등의 설정AssetBaseCfg
: 고정된 환경 요소(예: 바닥, 벽) 설정InteractiveSceneCfg
: 로봇, 조명, 센서 등 전체 설정 클래스InteractiveScene
: 실제로 씬을 생성하는 클래스SimulationContext
: 시뮬레이션 실행/제어 (play, pause, step 등)또한 설정 클래스에는 @configclass 데코레이터를 사용하여 자동화된 설정 구조를 정의할 수 있습니다.
다음은 InteractiveSceneCfg
를 상속받아 구성된 CartpoleSceneCfg 예제입니다:
/World/...
와 같은 절대 경로는 씬에서 한 번만 생성되며, 바닥, 조명과 같이 하나만 존재해야 하는 요소에 사용{ENV_REGEX_NS}
와 같은 상대 경로는 환경 수만큼 복제 가능 -num_envs=32
설정 시, 32개의 Sphere 생성 가능즉, 강화학습을 위한 다중 환경 시뮬레이션에서는 로봇, 테이블 등 환경별로 고유해야 하는 요소는 상대 경로로 지정해야 합니다.
아래와 같이 CLI 인자를 사용하면 실행 시 동적으로 환경 수를 조절할 수 있습니다:
./isaaclab.sh -p my_scene.py --num_envs 32
이 구조는 특히 강화학습에서 병렬 환경을 구성하여 학습 속도를 높이는 데 필수적입니다.
이번 글에서는 Isaac Lab의 InteractiveScene
클래스를 활용한 시뮬레이션 환경 구성 방법을 정리했습니다.
주요 내용은 다음과 같습니다:
@configclass
를 활용한 직관적인 환경 정의이처럼 Isaac Lab은 복잡한 로봇 환경도 코드 몇 줄로 효율적으로 구성할 수 있도록 설계되어 있으며, 강화학습 워크플로우에 최적화된 시뮬레이션 구조를 제공합니다.
이 글 공유하기: