본문 바로가기
🤖 Robotics, 로봇/개요

[Setup] Isaac Sim 5.1 & ROS 2 Humble, 충돌 없이 Docker로 완벽 구축 (feat. Pegasus & PX4)

by 테크옵저버 2026. 2. 10.

1. 왜 항상 환경 설정이 제일 힘들까?

로봇 시뮬레이션을 위해 NVIDIA Isaac SimROS 2를 연동하려고 할 때,
수많은 개발자가 "의존성 지옥(Dependency Hell)"을 경험합니다.
특히 최신 버전인
Isaac Sim 5.1.0과 가장 대중적인 ROS 2 Humble을 한 컴퓨터에 설치하려다 보면 필연적으로 문제가 발생합니다.
이유는 바로 Python 버전 충돌 때문입니다.
Isaac Sim 5.1.0: Python 3.11 기반 (내장)
ROS 2 Humble: Python 3.10 기반 (Ubuntu 22.04 시스템 기본)
이 두 녀석을 하나의 환경에 억지로 설치하면 패키지가 꼬이고, 알 수 없는 런타임 에러가 쏟아집니다.
이 글에서는 이 문제를 해결하기 위해 Docker 컨테이너를 분리하여 환경을 구축하고,
복잡한 설정을 Dockerfile로 자동화(Baking)한 프로젝트를 공유합니다.

 

 
 

2. 아키텍처 : 따로 또 같이 (Separate Containers)

해결책은 간단하면서도 강력합니다. 각각의 컨테이너를 만들어 격리하고, 네트워크만 공유하는 것입니다.
Container A (Isaac Sim): 시뮬레이터 본체 + Pegasus Simulator + PX4 Autopilot
Container B (ROS 2 Bridge): ROS 2 Humble + ROS 2 Bridge + 필수 메시지 패키지
두 컨테이너는 --net=host 옵션을 통해 호스트의 네트워크를 공유하므로, 별도의 복잡한 포트 포워딩 없이 Fast DDS를 통해 데이터를 주고받을 수 있습니다.
 
 

3. 주요 기능 및 해결한 문제들

제가 만든 Docker 설정 파일들은 단순한 설치 스크립트가 아닙니다. 개발 과정에서 겪는 귀찮은 작업들을 모두 자동화했습니다.

A. Isaac Sim + Pegasus 컨테이너
Headless 지원: GUI가 없는 서버 환경에서도 렌더링이 가능하도록 nvidia_icd.json 및 Vulkan 설정을 최적화했습니다.
Pegasus & PX4 자동 설치: 드론 시뮬레이션을 위한 Pegasus 시뮬레이터와 PX4 Autopilot 빌드 과정을 Dockerfile에 포함시켜, 빌드 한 번으로 모든 준비가 끝납니다.

B. ROS 2 "Baked" 이미지 (All-in-One)

ROS 2 컨테이너는 실행할 때마다 git clone하고 빌드할 필요가 없습니다. 소위 "구워진(Baked)" 이미지입니다.

1. 자동 의존성 설치: rosdepvision_msgs, ackermann_msgs 등 필수 패키지를 자동으로 설치합니다.
2. Fast DDS 설정 내장: Docker 환경 통신 문제의 주원인인 DDS 설정을 위해 fastdds.xml(UDP 강제 모드)을 생성하고 환경 변수까지 자동으로 등록합니다.
3. 빌드 완료 상태: 컨테이너를 켜자마자 source install/local_setup.bash가 적용되어 바로 개발을 시작할 수 있습니다.

 

4. 설치 및 실행 가이드

자세한 코드는 GitHub 리포지토리에 있습니다. 여기서는 핵심 명령어만 소개합니다.
Step 1. 리포지토리 클론
git clone https://github.com/hms-gymnopedie/IsaacSim_Setting.git
cd IsaacSim_Setting
Step 2. Isaac Sim 컨테이너 빌드 & 실행
Isaac Sim 5.1.0을 다운로드하고 설치하는 과정이 포함되어 있어 시간이 조금 걸립니다.
# 빌드
cd IsaacSim_Pegasus
docker build -t isaacsim-pegasus .

# 실행 (GPU 사용 및 호스트 네트워크 공유)
docker run -it --rm --gpus all --net=host --name isaacsim_container isaacsim-pegasus
Step 3. ROS 2 컨테이너 빌드 & 실행
이 이미지는 NVIDIA의 IsaacSim-ros_workspaces를 자동으로 포함합니다.
# 빌드
cd ../ROS2_Humble
docker build -t ros2-humble .

# 실행 (별도의 마운트 설정 불필요!)
docker run -it --rm --net=host --name ros2_container ros2-humble
 
 

5. 마무리하며

이제 터미널 두 개를 열어 각각 컨테이너를 실행하기만 하면, 버전 충돌 없는 쾌적한 Isaac Sim + ROS 2 개발 환경이 완성됩니다.
GPG 키 에러, 경로 마운트 실수, DDS 통신 문제 등으로 며칠 밤을 새우지 마세요. 이 Dockerfile 세트가 여러분의 소중한 시간을 아껴줄 것입니다.

#IsaacSim #ROS2 #Docker #Robotics #PegasusSimulator #NVIDIA #Simulation

도움이 되셨다면 GitHub 리포지토리에 Star(⭐) 부탁드립니다!

Repository: https://github.com/hms-gymnopedie/IsaacSim_Setting