RViz2에서 TF 표시 맛보기
눈에 보이지 않는 좌표계를 화면에 띄워 볼 수 있을까?
따라 하기
데모와 함께 RViz2를 띄웁니다
RViz2는 로봇의 프레임과 센서 값을 3D 화면에 그려 주는 도구입니다. 데모를 띄운 뒤 새 터미널에서 ros2 run rviz2 rviz2 -d에 설정 파일 turtle_rviz.rviz의 경로를 붙여 실행합니다. -d는 설정 파일을 열고 뜨라는 옵션입니다.
경로 앞의 $(ros2 pkg prefix --share turtle_tf2_py)가 데모 패키지가 설치된 폴더를 찾아 줍니다.
화면
프레임마다 작은 좌표축이 보입니다
왼쪽 Displays 패널에 TF 표시가 켜져 있습니다. 오른쪽 화면에는 world, turtle1, turtle2 자리에 좌표축이 하나씩 그려지고, 자식에서 부모로 가는 선이 트리 관계를 보여 줍니다. 이 설정은 위에서 내려다보는 시점입니다.
RViz는 x를 빨강, y를 초록으로 그립니다. 이 설정 파일은 프레임 이름 표시가 꺼져 있어, 그림에는 이름을 따로 붙였습니다.
움직여 보기
거북이를 몰면 축도 따라 갑니다
새 터미널에서 ros2 run turtlesim turtle_teleop_key로 거북이를 몰아 보세요. turtlesim 창의 거북이와 RViz의 좌표축이 똑같이 움직입니다. 브로드캐스터가 거북이 자리를 TF로 계속 알리고 있기 때문입니다.
기준 화면
Fixed Frame이 화면의 기준입니다
Global Options의 Fixed Frame은 화면 전체의 기준 프레임입니다. RViz는 모든 것을 이 프레임 기준으로 바꿔 그립니다. world로 두면 연못이 멈춰 있고, turtle1로 두면 turtle1이 멈추고 세상이 움직입니다.
트리에 없는 이름을 두면 아무것도 그려지지 않습니다. 13강 8편에서 다시 봅니다.
TF 표시 설정
이름, 축, 선을 켜고 끕니다
새로 띄운 RViz라면 왼쪽 아래 Add를 눌러 TF를 고르면 됩니다. TF 항목을 펼치면 이름(Show Names), 축(Show Axes), 부모로 가는 선(Show Arrows)을 따로 켜고 끌 수 있습니다. Frames에서는 프레임마다 보일지 고릅니다.
프레임이 수십 개인 로봇에서는 필요한 것만 남기면 화면이 깔끔해집니다.
12강 정리
알리고, 쌓고, 물어서 씁니다
로봇의 위치 정보는 모두 "어느 프레임 기준인가"와 함께 다닙니다. 노드들은 자기가 아는 변환을 /tf, /tf_static으로 알리고, 필요한 노드는 Buffer에 물어 원하는 기준으로 바꿔 씁니다. RViz도 그렇게 묻는 노드 중 하나입니다.
다음 강