https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Introduction-To-Tf2.html
Introducing tf2 — ROS 2 Documentation: Jazzy documentation
© Copyright 2025, Open Robotics.
docs.ros.org
빨간색은 x축 , 초록색은 y축 , 파란색은 z축
tf2란?
- tf2는 ROS에서 사용하는 프레임워크이다.
- 좌표 프레임 간의 변환( transformation )을 관리하는데 사용한다.
- 좌표 프레임이란? ( coordinate frame )
- 공간에서 위치(position)과 방향(orientation)을 정의하기 위한 기준점(origin)과 축(axis)를 의미.
즉, '어디를 기준으로 위치와 방향을 측정할 것인가'를 결정하는 것.- 원점 origin : 좌표 프레임의 기준이 되는점
- 축 axis : 2d에서는 x,y축이며 3d는 x,y,z축이다.
- 방향 : 각 축의 방향이 정의되어 있어야 회전을 표현할 수 있다.
- 공간에서 위치(position)과 방향(orientation)을 정의하기 위한 기준점(origin)과 축(axis)를 의미.
- 좌표 프레임이란? ( coordinate frame )
tf2가 왜 필요한가?
- 로봇은 다양한 센서와 모듈을 가지고 데이터를 수집한다.
수집한 데이터는 각기 다른 좌표 프레임을 기반으로 측정된다.- ex) 카메라는 카메라 좌표계에서 이미지를 캡처.
LiDAR는 레이저 좌표계에서 거리 데이터를 측정.- 이렇게 여러 좌표계가 존재할때, 로봇이 자신의 위치를 정확히 파악하고 환경을 이해하기 위해서는 좌표 변환이 필수.
- ex) 카메라는 카메라 좌표계에서 이미지를 캡처.
tf2의 기본 구성요소
- 크게 2가지 요소로 나누며 tree형태로 연결된다.
- Frame : 좌표계를 나타냄.
- Transform : 한 좌표계에서 다른 좌표계로의 위치 및 회전 정보를 나타냄. (3d에서는 이동(translation) + 회전( rotation)의 조합 )
tf2의 핵심 패키지
- tf2_ros : tf2의 ros인터페이스를 제공
- 주로 아래 2개의 클래스를 사용
- TransformBroadcaster : 좌표 변환 정보에 다른 노드에 전송broadcast하는 역할
- ex) 로봇의 각 부품간 위치 정보를 지속적으로 publish
- TransformListener : 다른 노드에서 보낸 변환 정보를 listen하고, 원하는 변환을 요청하는 역할
- TransformBroadcaster : 좌표 변환 정보에 다른 노드에 전송broadcast하는 역할
- 주로 아래 2개의 클래스를 사용
- tf2_geometry_msgs : geometry_msg타입(ex. pose , point , vector3 )에 대한 변환 기능을 제공한다.
- tf2_tools : tf2트리 구조를 시각화하거나 디버깅 할수있는 툴을 제공
- tf2_py : 파이썬에서도 사용할 수 있게 해줌.
Installing the demo
- 아래 명령어를 입력하여 설치
sudo apt-get install ros-jazzy-rviz2 ros-jazzy-turtle-tf2-py ros-jazzy-tf2-ros ros-jazzy-tf2-tools ros-jazzy-turtlesim
Running the demo
- 이번에는 turtke_tf2.py 튜토리얼 데모 패키지를 해보자.
우선 터미널을 열어서 source해주고 ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py 를 입력하자.

- ros2 run turtlesim turtle_teleop_key 를 입력해서 거북이를 움직이면 또 다른 거북이가 따라올것이다.

'ROS 2' 카테고리의 다른 글
| Launch file (0) | 2025.02.05 |
|---|---|
| URDF : Using URDF with robot_state_publisher (1) | 2025.02.04 |
| URDF : Using Xacro to clean up your code (0) | 2025.02.04 |
| URDF : Adding physical and collision properties (0) | 2025.02.04 |
| URDF : Building a movable robot model (0) | 2025.02.03 |