Curieux.JY
  • JungYeon Lee
  • Post
  • Projects
  • Note

On this page

  • ROS2 Jazzy 설치
    • IsaacSim에서 권장하는 추가 패키지 설치
  • 터미널에서 ROS2 연결하여 IsaacSim 실행
  • Workspace 만들기
    • 1. 빌드에 필요한 패키지 설치
    • 2. ROS 2 환경 설정
    • 3. 패키지 의존성 해결
    • 4. topic_based_ros2_control 소스 빌드
    • 5. Workspace 빌드
    • 6. Workspace 활성화
    • 7. Isaac Sim 연결 테스트
      • 패키지 설치 확인
      • ROS 2 Bridge 연결 테스트
      • topic_based_ros2_control 토픽 테스트
  • ROS Bridge using Cyclone DDS
    • Cyclone DDS vs Fast DDS 비교
      • 개요
      • 성능 비교
      • Isaac Sim에서의 권장 사항
      • 주의사항
  • Local Asset 설정
    • 1. Asset 다운로드
    • 2. Asset 압축 해제
    • 3. Isaac Sim 설정 파일 수정
    • 4. Isaac Sim 실행
    • 5. Asset 연결 확인

📝IsaacSim 5.1.0 설치

ros2
jazzy
isaacsim
linux
24.04 Ubuntu에서 IsaacSim 5.1.0 설치 및 ROS2 연결 셋팅
Published

December 16, 2025

ROS2 Jazzy 설치

공식 문서: https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html

IsaacSim에서 권장하는 추가 패키지 설치

ROS 2 Bridge에서 사용하는 메시지 타입을 위해 추가 패키지가 필요합니다.

vision_msgs (Optional): Detection2DArray, Detection3DArray 등 바운딩 박스 퍼블리싱에 사용

sudo apt install ros-jazzy-vision-msgs

ackermann_msgs (Optional): AckermannDriveStamped 메시지 타입에 사용

sudo apt install ros-jazzy-ackermann-msgs

터미널에서 ROS2 연결하여 IsaacSim 실행

공식 문서: https://docs.isaacsim.omniverse.nvidia.com/5.1.0/installation/install_ros.html#using-terminal

Isaac Sim은 자체적으로 최소한의 ROS 2 라이브러리를 포함하고 있습니다. 내부 ROS 2 라이브러리를 사용하려면 Isaac Sim 실행 전에 새 터미널에서 다음 환경 변수를 설정해야 합니다.

Note

Isaac Sim이 기본 위치가 아닌 곳에 설치된 경우, isaac_sim_package_path를 Isaac Sim App Selector에 표시된 Package Path로 변경하세요.

# Isaac Sim 경로 설정
export isaac_sim_package_path=$HOME/isaacsim

# ROS 2 배포판 설정
export ROS_DISTRO=jazzy

# DDS 구현체 설정 (Fast DDS 사용)
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp

# 내부 라이브러리 경로 추가
# ⚠️ 터미널당 한 번만 설정! 여러 번 실행하면 경로가 중복 추가되어 충돌 발생 가능
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$isaac_sim_package_path/exts/isaacsim.ros2.bridge/jazzy/lib

# Isaac Sim 실행
$isaac_sim_package_path/isaac-sim.sh
Warningisaacsim.ros2.sim_control 사용 불가

ROS 2 Jazzy (apt 설치)는 Python 3.12를 사용하지만, Isaac Sim 5.1.0은 Python 3.11을 사용합니다. 이 버전 불일치로 인해 isaacsim.ros2.sim_control extension은 rclpy를 import할 수 없어 서비스/액션 호출이 불가능합니다.

  • 사용 가능: isaacsim.ros2.bridge (토픽 Pub/Sub)
  • 사용 불가: isaacsim.ros2.sim_control (서비스, 액션)

서비스/액션이 필요하다면 NVIDIA Docker 이미지를 사용하세요.

Workspace 만들기

공식 문서: https://docs.isaacsim.omniverse.nvidia.com/5.1.0/installation/install_ros.html#setting-up-workspaces

1. 빌드에 필요한 패키지 설치

# rosdep install 명령어용
sudo apt install python3-rosdep build-essential

# colcon build 명령어용
sudo apt install python3-colcon-common-extensions

2. ROS 2 환경 설정

source /opt/ros/jazzy/setup.bash

3. 패키지 의존성 해결

cd jazzy_ws
git submodule update --init --recursive  # Docker 사용 시 컨테이너 외부에서 실행
rosdep install -i --from-path src --rosdistro jazzy -y
Importanttopic_based_ros2_control 설치 문제

공식 문서에서는 sudo apt install ros-jazzy-topic-based-ros2-control를 실행하라고 하지만, 이 패키지는 공식 ROS 2 Jazzy 저장소에 없습니다. 아래 4단계에서 소스 빌드로 해결합니다.

4. topic_based_ros2_control 소스 빌드

# 소스 코드 클론
cd ~/jazzy_ws/src
git clone https://github.com/PickNikRobotics/topic_based_ros2_control.git

# 의존성 설치
cd ~/jazzy_ws
source /opt/ros/jazzy/setup.bash
sudo apt install ros-jazzy-hardware-interface
rosdep install --from-paths src --ignore-src -r -y

5. Workspace 빌드

cd ~/jazzy_ws
source /opt/ros/jazzy/setup.bash
colcon build

빌드 완료 후 루트 디렉토리에 build, install, log 디렉토리가 생성됩니다.

6. Workspace 활성화

새 터미널에서 다음 명령어로 workspace를 소싱합니다:

source /opt/ros/jazzy/setup.bash
cd ~/jazzy_ws
source install/local_setup.bash

7. Isaac Sim 연결 테스트

패키지 설치 확인

ros2 pkg list | grep topic_based

ROS 2 Bridge 연결 테스트

Isaac Sim에서 ROS 2 샘플 씬을 열고 토픽 연결을 테스트합니다:

  1. Isaac Sim 메뉴: Window > Examples > Robotics Examples > ROS2 > ISAAC ROS
  2. Sample Scene 실행
  3. Play 버튼 클릭 (시뮬레이션 시작)
# 새 터미널에서 토픽 연결 확인
ros2 topic list

# clock 토픽으로 Isaac Sim 연결 확인
ros2 topic echo /clock
Note

/clock 토픽은 Play 버튼을 눌러 시뮬레이션이 실행 중일 때만 퍼블리시됩니다.

topic_based_ros2_control 토픽 테스트

topic_based_ros2_control은 다음 토픽을 통해 Isaac Sim과 통신합니다:

  • /isaac_joint_commands - 조인트 명령 전송
  • /isaac_joint_states - 조인트 상태 수신

이 토픽들을 테스트하려면 MoveIt 예제를 실행합니다:

  1. Isaac Sim 메뉴: Window > Examples > Robotics Examples > ROS2 > MOVEIT
  2. Franka MoveIt 실행
  3. Play 버튼 클릭
# Isaac Sim에서 joint_states가 퍼블리시되는지 확인
ros2 topic echo /isaac_joint_states

ROS Bridge using Cyclone DDS

공식 문서: https://docs.isaacsim.omniverse.nvidia.com/5.1.0/installation/install_ros.html#enabling-the-ros-bridge-using-cyclone-dds

Note기본 설정: Fast DDS

Isaac Sim은 기본적으로 rmw_fastrtps_cpp(Fast DDS)를 사용하도록 설정되어 있습니다. 위의 터미널 실행 예제에서도 Fast DDS를 사용합니다. 같은 머신에서 통신하는 경우 Fast DDS의 공유 메모리 전송이 최적의 성능을 제공합니다.

Cyclone DDS를 사용하려면 Isaac Sim 실행 전에 RMW_IMPLEMENTATION 환경 변수를 변경해야 합니다.

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
Note

기존 예제에서 rmw_fastrtps_cpp로 설정하는 부분이 있다면 위 명령어로 대체하세요.

Cyclone DDS vs Fast DDS 비교

ROS 2에서는 DDS(Data Distribution Service)를 미들웨어로 사용합니다. 대표적인 구현체로 Cyclone DDS와 Fast DDS(구 FastRTPS)가 있습니다.

개요

항목 Cyclone DDS Fast DDS (FastRTPS)
개발사 Eclipse Foundation eProsima
라이선스 Eclipse Public License v2.0 Apache 2.0
ROS 2 기본값 Galactic Humble, Iron, Jazzy
특징 단순성, 효율성 강조 기능 풍부, DDS 표준 준수
Note

ROS 2 Jazzy에서는 Fast DDS가 기본 DDS입니다. Cyclone DDS가 기본이었던 것은 Galactic 버전뿐입니다.

성능 비교

Warning벤치마크 결과는 상이할 수 있음

아래 성능 비교는 여러 벤치마크를 종합한 것입니다. 테스트 환경, 데이터 크기, 네트워크 조건에 따라 결과가 달라질 수 있으며, 각 DDS 개발사의 벤치마크에서는 자사 제품이 우수한 결과를 보이는 경향이 있습니다.

Throughput (처리량)

  • Cyclone DDS: 일부 벤치마크에서 대용량 데이터 패킷 처리 시 우수한 결과
  • Fast DDS: 다중 구독자 시나리오 및 대용량(2MB+) 데이터에서 강점. 공유 메모리 전송 시 우수

Latency (지연시간)

  • Cyclone DDS: 소형 메시지에서 낮은 지연시간
  • Fast DDS: 대용량 메시지에서 더 안정적인 지연시간, 지터(jitter)가 더 일정
  • 공식 ROS 2 평가 보고서에서는 Fast DDS sync 모드가 4MB까지 모든 메시지 수신

CPU 사용량

  • 공식 ROS 2 Middleware 평가 보고서에 따르면 명확한 승자 없음
  • 워크로드와 데이터 크기에 따라 결과가 달라짐

메모리 사용량

  • Cyclone DDS: 데이터 크기 증가 시 메모리 사용량이 빠르게 증가
  • Fast DDS: 대용량 데이터에서 메모리 사용량이 더 안정적

Isaac Sim에서의 권장 사항

Tip사용 환경에 따른 선택

같은 머신에서 통신하는 경우 → Fast DDS 권장

  • 공유 메모리(Shared Memory) 전송 사용으로 최고의 시뮬레이션 성능
  • Linux에서 Fast DDS가 ROS 2 Bridge 활성화에 권장됨

다른 머신 또는 Docker 간 통신 → 추가 설정 필요

  • FASTRTPS_DEFAULT_PROFILES_FILE 환경변수로 UDP 전송 활성화 필요
  • fastdds.xml 설정 파일 지정 필요

QoS 문제 발생 시 → Cyclone DDS 대안

  • Fast DDS에서 depth policy가 UNKNOWN으로 표시되는 문제 해결 가능

주의사항

WarningDDS 혼용 시 호환성 문제

서로 다른 DDS 구현체를 혼용하면 문제가 발생할 수 있습니다.

  • Talker 노드(FastRTPS) + Listener 노드(CycloneDDS) 조합에서 Listener가 먼저 실행되면 처음 4개 메시지 누락
  • 모든 ROS 2 노드에서 동일한 DDS 구현체 사용 권장

참고 자료

  • ROS 2 DDS/RTPS Vendors 비교
  • 2021 ROS Middleware Evaluation Report
  • Isaac Sim ROS 2 Installation
  • Isaac Sim ROS 2 QoS 문서

Local Asset 설정

공식 문서: https://docs.isaacsim.omniverse.nvidia.com/5.1.0/installation/install_faq.html

Isaac Sim Local Assets Pack을 다운로드하면 오프라인 환경에서도 Asset을 사용할 수 있습니다.

1. Asset 다운로드

# aria2 설치
sudo apt install aria2

# Asset 파일 다운로드 (3개 파일, 총 약 30GB)
cd ~/Downloads
aria2c "https://download.isaacsim.omniverse.nvidia.com/isaac-sim-assets-complete-5.1.0.zip.001"
aria2c "https://download.isaacsim.omniverse.nvidia.com/isaac-sim-assets-complete-5.1.0.zip.002"
aria2c "https://download.isaacsim.omniverse.nvidia.com/isaac-sim-assets-complete-5.1.0.zip.003"

2. Asset 압축 해제

# 압축 파일 합치기 및 해제
mkdir ~/isaacsim_assets
cd ~/Downloads
cat isaac-sim-assets-complete-5.1.0.zip.001 isaac-sim-assets-complete-5.1.0.zip.002 isaac-sim-assets-complete-5.1.0.zip.003 > isaac-sim-assets-complete-5.1.0.zip
unzip "isaac-sim-assets-complete-5.1.0.zip" -d ~/isaacsim_assets
Important폴더 구조 확인

3개의 Asset 파일을 모두 합쳐서 ~/isaacsim_assets/Assets/Isaac/5.1 폴더에 NVIDIA와 Isaac 폴더가 모두 있어야 합니다.

3. Isaac Sim 설정 파일 수정

~/isaacsim/apps/isaacsim.exp.base.kit 파일에 다음 설정을 추가합니다:

[settings]
persistent.isaac.asset_root.default = "/home/<username>/isaacsim_assets/Assets/Isaac/5.1"

exts."isaacsim.gui.content_browser".folders = [
    "/home/<username>/isaacsim_assets/Assets/Isaac/5.1/Isaac/Robots",
    "/home/<username>/isaacsim_assets/Assets/Isaac/5.1/Isaac/People",
    "/home/<username>/isaacsim_assets/Assets/Isaac/5.1/Isaac/IsaacLab",
    "/home/<username>/isaacsim_assets/Assets/Isaac/5.1/Isaac/Props",
    "/home/<username>/isaacsim_assets/Assets/Isaac/5.1/Isaac/Environments",
    "/home/<username>/isaacsim_assets/Assets/Isaac/5.1/Isaac/Materials",
    "/home/<username>/isaacsim_assets/Assets/Isaac/5.1/Isaac/Samples",
    "/home/<username>/isaacsim_assets/Assets/Isaac/5.1/Isaac/Sensors",
]
Note

<username>을 본인의 사용자명으로 변경하세요.

4. Isaac Sim 실행

설정 파일 수정 대신 커맨드라인 옵션으로도 실행할 수 있습니다:

./isaac-sim.sh --/persistent/isaac/asset_root/default="/home/<username>/isaacsim_assets/Assets/Isaac/5.1"
Tip설정 우선순위

persistent.isaac.asset_root.default 설정은 .kit 파일(3단계) 또는 커맨드라인(4단계) 중 하나만 사용하면 됩니다.

  • 기본값: https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.1
  • 이 설정은 Python 코드의 get_assets_root_path() 또는 get_assets_root_path_async() 함수에서 사용됩니다.

5. Asset 연결 확인

Isaac Sim에서 Asset이 제대로 연결되었는지 확인합니다:

  1. Isaac Sim Assets Browser 탭 열기
  2. 기어(⚙️) 아이콘 클릭
  3. Check Default Assets Root Path 선택

로컬 Asset 사용 시 로그:

[139.213s] Checking for Isaac Sim Assets...
[139.218s] Isaac Sim assets found: /home/<username>/isaacsim_assets/Assets/Isaac/5.1

기본 온라인 Asset 사용 시 로그:

[139.213s] Checking for Isaac Sim Assets...
[139.218s] Isaac Sim assets found: https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.1

Copyright 2026, JungYeon Lee