📘 [IsaacSim 6.0] Development Components 정리
Base Applications 노트에 이어, IsaacSim에서 실제 개발을 수행하는 데 쓰이는 Development Components(개발 구성요소)를 정리합니다. 개발 도구, Python 스크립팅, GUI, 그리고 비주얼 프로그래밍 엔진인 OmniGraph가 핵심입니다.
본 글은 NVIDIA 공식 문서를 학습하며 핵심을 한국어로 요약·정리한 노트입니다. 정확한 원문은 각 절 끝의 🔗 링크를 참고하세요.
🛠️ Development Tools
IsaacSim 개발에 활용되는 도구 모음입니다.
| 도구 | 역할 |
|---|---|
| Visual Studio Code (VS Code) | 소스 코드 조회·디버깅 통합 |
| Python Server | 원격 Python 코드 실행(Remote Code Execution) |
| Jupyter Notebook | 노트북 기반 인터랙티브 Python 개발·실험 |
| Omniverse Script Editor | 애플리케이션 내장 스크립트 작성·실행 인터페이스 |
| Isaac Sim MCP Server | Model Context Protocol 서버 — 개발 워크플로우 향상 |
| Carb Settings 수정 | Carbonite 런타임 설정 파라미터 커스터마이즈 |
💡 빠른 코드 검증은 Script Editor·Jupyter로, 본격적인 개발·디버깅은 VS Code로, 외부 자동화는 Python Server/MCP로 — 목적에 맞게 도구를 조합합니다.
🐍 Python Scripting and Tutorials
IsaacSim의 Python 스크립팅은 시뮬레이션을 프로그래밍적으로 제어하고, 씬을 구성하고, 로보틱스 워크플로우를 자동화합니다. 문서는 개념 → 코드 예제(snippets) → 튜토리얼 순으로 구성됩니다.
핵심 클래스: World와 SimulationApp
IsaacSim 스크립팅의 토대는 두 클래스입니다.
SimulationApp: 애플리케이션 라이프사이클과 렌더링 컨텍스트를 관리. 시뮬레이션을 초기화하는 시작점.World: 씬 엔티티, 물리 시뮬레이션, 환경 전체 상태를 관리. 로봇·소품(prop) 추가, 물리 파라미터 설정, 스텝 단위 시뮬레이션 루프 실행.
Standalone 스크립트 표준 구조
# 1) SimulationApp 초기화 (가장 먼저!)
from isaacsim import SimulationApp
simulation_app = SimulationApp({"headless": True})
# 2) World 생성 및 씬 구성
from isaacsim.core.api import World
world = World()
# ... 로봇/에셋 추가, 물리 파라미터 설정 ...
world.reset()
# 3) 시뮬레이션 루프 (물리 스텝)
for i in range(1000):
world.step(render=True)
# 4) 정리·종료
simulation_app.close()⚠️
SimulationApp은 다른 IsaacSim 모듈을 import 하기 전에 가장 먼저 생성해야 합니다. 헤드리스 실행은 배치 처리·CI·대규모 학습에 적합합니다.
학습 리소스
- Snippets: Scene Setup / Util / Robot Simulation(articulation 제어, 센서 통합) 등 기능별 재사용 코드
- Tutorial Series: “Hello World”, “Hello Robot”부터 멀티 로봇, 소품 조작까지 단계적으로 확장하는 Core API 튜토리얼
🔗 원문: Python Scripting
🖱️ GUI Reference
GUI 레퍼런스는 Concepts 노트의 User Interface에서 다룬 패널 구성에 더해, 메뉴·환경설정(preferences)·선택 모드(selection mode)·키보드 단축키 등 GUI 사용 전반을 다룹니다.
- Menus: Create / Window / Tools / Utilities / Layout 등 기능별 메뉴
- Preferences: 렌더링, 물리, 단위, 자동 저장 등 환경설정
- Selection Modes: prim 단위/모델 단위 등 선택 동작 전환
- Keyboard Shortcuts: 변형·재생·포커스 단축키
🔗 원문: GUI Reference
🔗 OmniGraph
OmniGraph는 Omniverse의 비주얼 프로그래밍 프레임워크로, “Omniverse 내부의 여러 시스템 기능을 연결”하고 커스텀 노드를 위한 연산 엔진(compute engine) 역할을 합니다.
동작 방식
- 노드(node) 가 연산 단위를 나타내며, 노드를 시각적으로 연결해 워크플로우를 구성
- 효율적인 연산 백엔드(C++/Python)를 활용하면서 커스텀 기능을 시뮬레이션에 통합
IsaacSim에서 OmniGraph가 구동하는 시스템
- Replicator (합성 데이터 생성)
- ROS 2 Bridge
- 센서 접근·처리
- 로봇 컨트롤러
- 외부 I/O 디바이스 관리
- UI 자동화
접근 방법
Window > Graph Editors > Action Graph 메뉴에서 에디터를 열어 비주얼 연산 그래프를 작성합니다.
커스텀 노드
- Python·C++ 양쪽으로 커스텀 노드 작성 가능
- 외부 시스템 연동을 위한 IPC(Inter-Process Communication) 노드 구축 가능
💡 로보틱스 워크플로우에서 OmniGraph는 센서 데이터 파이프라인, 모터 제어 명령, 모션 플래닝 연동, 인지 시스템을 오케스트레이션하는 핵심 인프라입니다.
🔗 원문: OmniGraph
정리
- Development Tools: VS Code·Jupyter·Script Editor·Python Server·MCP·Carb 설정으로 개발 환경 구성.
- Python Scripting:
SimulationApp(앱 라이프사이클) +World(씬·물리)가 두 축. Standalone 스크립트는 초기화 → 씬 구성 → 스텝 루프 → 종료 패턴. - GUI Reference: 메뉴·환경설정·선택 모드·단축키 등 GUI 전반.
- OmniGraph: 노드 기반 비주얼 프로그래밍 엔진으로 Replicator·ROS·센서·컨트롤러를 연결.
다음 노트에서는 Robot and Sensor Simulation(임포터, 로봇 설정·시뮬레이션, 센서, 물리)을 정리합니다.