Study
Isaac · Sim

Isaac Sim ROS2 Tutorial 3: RTX Lidar Sensor 연결

TurtleBot에 RTX 2D/3D Lidar를 추가하고 LaserScan, PointCloud topic으로 publish한다.

isaac-simros2lidarrtx-lidarlaserscanpointcloudrviz2omnigraph

이번 글에서는 TurtleBot에 RTX 2D/3D Lidar를 추가하고, 각각 LaserScan과 PointCloud topic으로 ROS2에 publish하는 흐름을 정리했다. 카메라와 마찬가지로 sensor prim을 render product로 연결하고 ROS2 helper가 topic으로 변환하는 구조다.

1
Create > Sensors > RTX Lidar > NVIDIA > Example Rotary 2D

1. RTX 2D Lidar 추가

상단 메뉴에서 RTX 2D Lidar를 추가한 뒤 TurtleBot의 lidar 기준 frame 위치에 배치한다. URDF 기준 prim이 base_scan이라면 Lidar prim을 그 아래에 넣고 local transform을 0으로 맞추는 것이 자연스럽다.

RTX 2D Lidar 추가 메뉴

base_scan 아래에 RTX 2D Lidar 배치

RTX 2D Lidar transform 설정

2. RTX 3D Lidar 추가

3D Lidar도 같은 방식으로 추가한다. 2D Lidar가 평면 scan을 만든다면, 3D Lidar는 point cloud 확인용으로 사용한다.

RTX 3D Lidar 추가

RTX 3D Lidar transform 설정

3. RTX Lidar Action Graph

Lidar 출력은 Action Graph에서 render product를 만든 뒤 ROS2 RTX Lidar Helper로 넘긴다. graph prim을 lidar namespace 아래에 두면 multi-robot 상황에서 topic과 frame 충돌을 줄이기 쉽다.

RTX Lidar용 Action Graph

  • On Playback Tick은 simulation play 중 graph를 실행한다.
  • Isaac Create Render Product는 RTX Lidar sensor를 render product에 연결한다.
  • ROS2 RTX Lidar Helper는 render product를 LaserScan 또는 PointCloud message로 변환한다.
노드역할
On Playback Ticksimulation play 중 graph를 tick마다 실행합니다.
ROS2 ContextROS2 통신 context를 만듭니다.
Isaac Create Render ProductRTX Lidar sensor를 render product로 연결합니다.
ROS2 RTX Lidar HelperLidar render product를 ROS2 LaserScan 또는 PointCloud topic으로 publish합니다.

frame ID를 base_scan으로 설정

4. RViz2 확인

ROS2 bridge가 정상이라면 LaserScan과 PointCloud topic을 RViz2에서 확인할 수 있다. 이때 display의 fixed frame과 message frame_id가 TF tree 안에서 연결되어 있어야 한다.

1
ros2 topic list

실행 결과 미리보기

1
2
3
4
RTX Lidar prim
  -> Isaac Create Render Product
  -> ROS2 RTX Lidar Helper
  -> LaserScan / PointCloud topic

정리하면 RTX Lidar는 sensor prim, render product, ROS2 helper, TF frame 네 요소가 맞아야 RViz2에서 안정적으로 보인다.