Isaac Sim ROS2 Tutorial 4: TF Tree와 Odometry 구성
TurtleBot의 sensor frame, odom frame, base frame을 ROS2 TF tree와 odometry topic으로 연결한다.
이번 글에서는 TurtleBot의 sensor frame과 odometry를 ROS2 TF tree로 내보내는 과정을 정리했다. camera와 lidar topic이 보이더라도, RViz2에서 로봇 위에 올바르게 표시하려면 각 topic의 frame이 TF tree 안에 연결되어 있어야 한다.
1. Camera TF Publisher
이전 글에서 만든 camera prim들을 대상으로 ROS2 Publish Transform Tree 노드를 추가한다. timestamp는 Isaac Sim simulation time을 사용하도록 연결한다.
robot articulation root를 함께 넣고 parent prim을 base frame으로 맞추면 camera와 wheel frame을 robot base 아래에 묶을 수 있다.
2. Odometry 설정
Odometry graph는 robot의 이동량을 계산해 /odom topic으로 publish하고, 동시에 odom -> base_link 관계를 TF로 내보낸다.
3. Robot Base 아래 TF 정리
sensor frame과 wheel frame이 base 아래에 일관되게 붙어 있어야 RViz2에서 display 기준 frame을 바꿔도 데이터가 흐트러지지 않는다.
1
2
orientation: (1, 0, 0, 0)
translation: (0, 0, 0)
4. World와 Odom 연결
simulation world와 odom frame 사이의 관계도 명시적으로 publish한다. 이 연결이 빠지면 TF tree가 둘로 갈라져 RViz2에서 frame lookup 오류가 날 수 있다.
5. RViz2와 tf_viewer 확인
RViz2에서는 fixed frame을 odom 또는 base_link로 두고, camera, lidar, odometry display가 같은 tree 안에서 움직이는지 확인한다.

1
2
3
4
world
-> odom
-> base_link / base_footprint
-> sensors and wheel links
Isaac Sim의 tf_viewer extension을 사용하면 stage 안에서도 TF 구성을 빠르게 확인할 수 있다.
1
2
3
4
robot prim / sensor prim
-> ROS2 Publish Transform Tree
-> ROS2 Publish Odometry
-> RViz2 TF and Odometry display
이번 단계의 핵심은 topic과 frame을 따로 보지 않는 것이다. ROS2 sensor message는 frame_id를 포함하고, 그 frame_id가 TF tree 안에서 robot base와 연결되어야 실제 로봇 위치 기준으로 해석된다.












