로보쌤

TF 탐색기 연습문제 정답

시행일·최종 수정일: 2026년 9월 1일

정답을 보기 전에

먼저 각 문제에 자신의 말로 답해본 뒤 해설과 비교해 보세요. 표현이 달라도 핵심 개념과 계산 과정이 맞으면 정답으로 볼 수 있습니다.

← 강의와 연습문제로 돌아가기

1. 좌표값에 frame_id와 Timestamp가 모두 필요한 이유를 설명하세요.

정답과 해설

frame_id는 값이 어느 원점과 축 기준인지, Timestamp는 움직이는 Robot의 어느 순간에 측정했는지 알려줍니다. 둘 중 하나가 없으면 다른 Sensor나 Map 좌표로 정확하게 변환할 수 없습니다.

2. REP-103의 Robot Body 좌표축과 Camera Optical 축을 비교하세요.

정답과 해설

Robot Body Frame은 X가 앞, Y가 왼쪽, Z가 위입니다. Camera Optical Frame은 Z가 영상의 앞, X가 오른쪽, Y가 아래를 향하므로 camera_link와 별도 Transform으로 연결합니다.

3. Transform의 Parent·Child와 lookup_transform(target, source, time)의 의미를 설명하세요.

정답과 해설

Transform Message는 Parent 안에서 Child의 위치와 방향을 표현합니다. lookup_transform(target, source, time)은 지정 시각에 Source Frame Data를 Target Frame에서 표현하기 위한 변환을 요청합니다.

4. TF Tree에서 같은 Child를 두 Node가 발행하면 어떤 증상이 나타날 수 있나요?

정답과 해설

서로 다른 Transform이 번갈아 Buffer에 들어와 RViz의 Robot이나 Sensor가 떨리고 두 위치를 오갈 수 있습니다. 같은 Edge의 Owner를 하나로 정해야 합니다.

5. map, odom, base_link의 역할과 연속성 차이를 설명하세요.

정답과 해설

map은 전역적으로 일관되지만 Localization 보정으로 뛸 수 있고, odom은 지역적으로 연속적이지만 장기 Drift합니다. base_link는 Robot 본체와 함께 움직이는 기준 Frame입니다.

6. Localization이 일반적으로 map → odom을 발행하는 이유는 무엇인가요?

정답과 해설

Odometry가 이미 odom → base_link를 제공하므로 Localization은 누적 오차를 나타내는 map → odom 보정만 발행합니다. 직접 map → base_link를 추가하면 Parent 구조와 발행 책임이 충돌할 수 있습니다.

7. /tf와 /tf_static의 Data와 QoS 동작 차이는 무엇인가요?

정답과 해설

/tf는 Robot Pose와 Joint처럼 변하는 Transform을 Timestamp와 함께 반복 발행합니다. /tf_static은 고정 관계를 한 번 제공하고 Transient Local 성질로 늦게 참가한 Listener도 값을 받을 수 있게 합니다.

8. 회전 없는 Quaternion 값과 모두 0인 Quaternion의 차이는 무엇인가요?

정답과 해설

회전 없음은 단위 Quaternion (x=0,y=0,z=0,w=1)입니다. 네 성분이 모두 0이면 길이가 0이라 정규화할 수 없는 유효하지 않은 Quaternion입니다.

9. view_frames, tf2_echo, tf2_monitor의 역할을 각각 설명하세요.

정답과 해설

view_frames는 전체 Tree 그림, tf2_echo는 두 Frame 사이의 실제 Transform 값, tf2_monitor는 Chain·Broadcaster·발행률과 Delay를 조사합니다.

10. Sensor Message를 최신 Transform이 아니라 측정 Stamp로 변환해야 하는 이유는 무엇인가요?

정답과 해설

Sensor가 측정된 뒤 처리·전송되는 동안 Robot이 이동할 수 있습니다. 최신 Pose를 쓰면 이동량만큼 공간 오차가 생기므로 Message를 촬영·측정한 순간의 Transform을 사용해야 합니다.

11. LookupException, ConnectivityException과 ExtrapolationException의 차이는 무엇인가요?

정답과 해설

Lookup은 Frame 이름 자체를 모르고, Connectivity는 두 Frame을 알아도 연결 경로가 없으며, Extrapolation은 경로는 있지만 요청한 과거나 미래 시각의 Transform이 없을 때 발생합니다.

12. Future Extrapolation과 Past Extrapolation의 원인을 각각 두 가지씩 쓰세요.

정답과 해설

Future는 TF 발행 지연과 Sensor Clock이 빠른 경우, Past는 처리 지연으로 Data가 Buffer보다 오래됐거나 Buffer 보관 시간이 너무 짧은 경우가 대표적입니다. Simulation Clock 불일치도 두 오류를 만들 수 있습니다.

13. Simulation과 rosbag에서 use_sim_time, /clock, /tf_static을 확인해야 하는 이유는 무엇인가요?

정답과 해설

Node가 서로 다른 Clock을 쓰면 Stamp와 Buffer 시간이 맞지 않습니다. Bag에 /tf_static이 없으면 Sensor 장착 관계도 재현할 수 없으므로 Clock Source와 Dynamic·Static TF를 함께 확인해야 합니다.

14. URDF, Odometry, EKF와 Localization의 Transform 발행 책임을 어떻게 나눌 수 있나요?

정답과 해설

URDF와 robot_state_publisher가 본체·Sensor·Joint 관계, 선택한 Odometry 또는 EKF 하나가 odom → base_link, AMCL·SLAM 같은 Localization이 map → odom을 맡도록 Edge별 Owner를 하나로 정할 수 있습니다.

15. RViz에서 LaserScan이 벽을 따라 번질 때 Frame부터 Sensor 시간까지 진단 순서를 설명하세요.

정답과 해설

Scan의 frame_id와 Static 장착 Transform을 확인한 뒤 Tree 연결과 중복 Owner를 봅니다. 이어 Scan Stamp, Odometry·TF 발행률과 Delay, Clock 동기, Robot 이동 중 Motion Distortion 순서로 조사합니다.

학습 마무리

틀린 문제는 강의의 관련 장을 다시 읽고, 용어뿐 아니라 각 개념이 실제 로봇에서 어떤 역할을 하는지 설명해 보세요.

← 강의로 돌아가기

TF 탐색기 연습문제 정답과 해설 | 로보쌤