Study
Isaac · Sim

Isaac Sim ROS2 Tutorial 2: Camera Topic Publish

TurtleBot에 카메라를 추가하고 render product와 ROS2 Camera Helper로 image topic을 publish한다.

isaac-simros2camerarviz2omnigraphsensor

이 글은 TurtleBot stage에 camera prim을 붙이고, Isaac Sim camera output을 ROS2 image topic으로 publish한 뒤 RViz2에서 확인하는 과정을 정리한다. 핵심은 camera prim 자체보다 render product와 ROS2 Camera Helper의 연결이다.

1. TurtleBot에 카메라 추가

카메라는 로봇의 움직임을 따라가는 base prim 아래에 추가한다. URDF import 후 namespace가 붙었다면 a__namespace_base_footprint처럼 보이는 base 계층 아래에 넣어야 로봇 이동과 함께 frame이 움직인다.

실행 결과 미리보기

두 camera의 transform은 전방과 후방을 보도록 잡았다. 이렇게 구성하면 topic 분리와 frame 설정이 제대로 되었는지 확인하기 쉽다.

camera1 transform 설정

camera2 transform 설정

실행 결과 미리보기

2. ROS2 Camera OmniGraph

Isaac Sim에는 camera용 ROS2 graph shortcut이 있다. 메뉴에서 graph를 만든 뒤 ROS2 bridge extension이 켜져 있는지 먼저 확인한다.

1
Tools > Robotics > ROS 2 OmniGraphs > Camera

ROS2 camera publish용 OmniGraph

Isaac Create Render Product의 target은 camera prim이고, ROS2 Camera Helper는 그 render product를 image topic으로 변환한다. camera info와 image topic 이름을 명확히 나누면 RViz2에서 확인하기 쉽다.

1
2
3
4
Camera prim
  -> Isaac Create Render Product
  -> ROS2 Camera Helper
  -> ROS2 image topic

실행 결과 미리보기

3. RViz2에서 Topic 확인

ROS2 workspace를 source한 뒤 topic과 image display를 확인한다.

1
ros2 topic list

실행 결과 미리보기

camera1, camera2 topic을 연결한 모습

4. Camera Noise 예제

센서 노이즈를 추가하면 이미지가 실제 카메라처럼 더 불안정하게 들어오는 상황을 테스트할 수 있다. 노이즈가 적용된 topic도 별도로 publish해 RViz2에서 비교했다.

1
2
cd ~/isaacsim
./python.sh standalone_examples/api/isaacsim.ros2.bridge/camera_noise.py

Camera noise 예제 실행 후 RViz2 화면

rgb_augmented topic 확인

ROS2 workspace source

Augmented camera image를 RViz2에서 확인

1
2
3
4
Camera prim
  -> Render Product
  -> ROS2 Camera Helper
  -> RViz2 Image display

이번 글의 결론은 camera를 보이게 만드는 것보다 frame, render product, topic 이름을 일관되게 관리하는 것이 더 중요하다는 점이다.