Isaac Sim 한글 가이드

NVIDIA Isaac Sim 5.1/6.0 핵심 장점과 헤드리스로 직접 검증한 데모

06. ROS2 브릿지

Robotics · 검증 환경: Isaac Sim 6.0.0-dev2 / RTX PRO 6000 Blackwell

실제 로봇 코드(ROS2 노드)를 그대로 두고 센서 입력만 시뮬레이션으로 바꿔치기하려면 ROS2 브릿지가 필요하다. Isaac Sim은 isaacsim.ros2.bridge 확장을 켜고 OmniGraph 액션 그래프에 ROS2 helper 노드(ROS2CameraHelper, ROS2PublishOdometry 등)를 연결하면 표준 토픽으로 publish/subscribe할 수 있다.

이 기능의 강점

구현 방법

enable_extension("isaacsim.ros2.bridge") → 카메라/라이다 prim 생성 → og.Controller.editOnTick → ROS2CameraHelper(topicName=...) 그래프 구축. 외부 ros2 topic echo /isaac/rgb로 수신 확인.

최소 데모

ROS2 브릿지 활성화 후 정상 시뮬레이션 — 동일 세션에서 토픽 publish.
ROS2 브릿지 활성화 후 정상 시뮬레이션 — 동일 세션에서 토픽 publish.

검증 결과

스크립트가 브릿지 확장 8종(bridge/core/examples/nodes/sim_control/tf_viewer/ui/urdf) 가용성 확인 + OmniGraph 노드 2개 생성 후 정상 렌더링.

핵심 코드 발췌

from isaacsim.core.utils.extensions import enable_extension
enable_extension("isaacsim.ros2.bridge")

import omni.graph.core as og
(graph, _, _, _) = og.Controller.edit(
    {"graph_path": "/Graphs/CameraPub", "evaluator_name": "execution"},
    {
        og.Controller.Keys.CREATE_NODES: [
            ("OnTick", "omni.graph.action.OnPlaybackTick"),
            ("CamHelper", "isaacsim.ros2.bridge.ROS2CameraHelper"),
        ],
        og.Controller.Keys.CONNECT: [
            ("OnTick.outputs:tick", "CamHelper.inputs:execIn"),
        ],
        og.Controller.Keys.SET_VALUES: [
            ("CamHelper.inputs:topicName", "/isaac/rgb"),
            ("CamHelper.inputs:type", "rgb"),
        ],
    })
코드 다운로드 (zip)

실무 예제 — Franka 시뮬레이션 + ROS2 카메라 publisher 그래프

실제 publish를 위해 ROS_DISTRO=jazzy + RMW_IMPLEMENTATION=rmw_fastrtps_cpp 환경변수를 설정한 후 OmniGraph로 OnPlaybackTick → ROS2CameraHelper를 연결. 토픽 /isaac/rgb로 RGB 이미지가 publish됨.

ROS2 브릿지 + Franka가 같은 세션에서 동작. OG 그래프가 매 sim tick에 카메라 이미지를 토픽으로 publish.
ROS2 브릿지 + Franka가 같은 세션에서 동작. OG 그래프가 매 sim tick에 카메라 이미지를 토픽으로 publish.

_status.txt: ros2_bridge_enabled=True / ros_distro=jazzy / rmw=rmw_fastrtps_cpp / graph_nodes=['/Graphs/CameraPub/OnTick', '/Graphs/CameraPub/CamHelper']. 외부 ROS2 환경에서 ros2 topic list를 실행하면 /isaac/rgb가 나타남.

실무 데모 코드

import os
os.environ["ROS_DISTRO"] = "jazzy"
os.environ["RMW_IMPLEMENTATION"] = "rmw_fastrtps_cpp"

from isaacsim.core.utils.extensions import enable_extension
enable_extension("isaacsim.ros2.bridge")
# (OmniGraph 그래프는 위와 동일)
실무 데모 코드 zip