turtle_tf2 데모로 보는 좌표계

뒤의 거북이는 앞 거북이가 어디 있는지 어떻게 알까?

화면을 누르면 다음 장으로 넘어갑니다

준비

데모와 도구를 먼저 설치합니다

이번 강은 거북이로 좌표계를 익힙니다. 터미널에서 sudo apt install ros-jazzy-turtle-tf2-py ros-jazzy-tf2-tools를 실행합니다. 앞의 것은 거북이 데모 노드, 뒤의 것은 변환 관계를 그림으로 뽑는 도구입니다.

turtlesim, rviz2, tf2_ros는 ros-jazzy-desktop에 이미 들어 있습니다(2강 2편).

따라 하기

터미널 둘로 데모를 띄웁니다

첫 터미널에서 ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py를 실행하면 거북이 두 마리가 나타납니다. 새 터미널에서 ros2 run turtlesim turtle_teleop_key를 띄우고, 그 창을 누른 채 화살표 키를 누르세요.

쫓아가기

turtle2가 turtle1을 따라 갑니다

키보드로 모는 것은 가운데의 turtle1뿐입니다. 그런데 turtle2가 어디로 가든 따라붙습니다. 아무도 turtle2에게 길을 알려 주지 않았는데 말입니다.

프레임 셋

연못에 좌표계 셋이 숨어 있습니다

이 데모는 좌표계 셋을 만듭니다. 연못 전체의 기준인 world, 그리고 거북이마다 몸에 붙은 turtle1, turtle2입니다. 이런 좌표계를 ROS에서는 프레임(frame)이라고 부릅니다.

붉은 축이 x, 청록 축이 y입니다. 이 강 내내 같은 색으로 그립니다.

뒤에서 도는 노드

알리는 노드와 묻는 노드

런치 파일은 노드 넷을 띄웁니다. 거북이 창 sim, 거북이 자리를 /tf 토픽에 알리는 broadcaster1과 broadcaster2, 그리고 그것을 받아 turtle2에게 속도를 보내는 listener입니다.

알리는 쪽은 7편, 묻는 쪽은 8편에서 직접 짭니다.

따라가는 원리

turtle2 기준으로 turtle1을 봅니다

listener는 "turtle2가 보기에 turtle1은 얼마나 앞, 얼마나 왼쪽에 있나?"를 묻습니다. 답이 나오면 그 방향으로 돌고, 멀수록 빨리 가라고 명령합니다. 이 물음에 답하는 장치가 TF2입니다.

숫자는 공식 튜토리얼의 출력 예시입니다. 좌표 변환은 3편에서 자세히 봅니다.

다음 편

거북이에 프레임이 하나라면, 진짜 로봇에는 몇 개나 있을까요?

2편로봇은 좌표계 덩어리 12강 목록