tf2 소개

목표: 터틀심 데모를 실행하고 터틀심을 사용한 멀티로봇 예제에서 tf2의 강력한 기능을 살펴보기

데모 설치

먼저 데모 패키지와 해당 종속성을 설치해 보겠습니다.

sudo apt-get install ros-humble-rviz2 ros-humble-turtle-tf2-py ros-humble-tf2-ros ros-humble-tf2-tools ros-humble-turtlesim

데모 실행

이제 turtle_tf2_py 튜토리얼 패키지를 설치했으므로 데모를 실행해 보겠습니다. 먼저 새 터미널을 열고 ROS 2 설치 환경을 소스로 지정 하여 ros2 명령을 사용할 수 있게 합니다. 그런 다음 다음 명령을 실행합니다.

ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py

두 개의 터틀을 가진 turtlesim이 시작되는 것을 볼 수 있습니다.

../../../_images/turtlesim_follow1.png

두 번째 터미널 창에서 다음 명령을 입력하세요.

ros2 run turtlesim turtle_teleop_key

터틀심이 시작되면 키보드 화살표 키를 사용하여 터틀심에서 중앙 터틀을 움직일 수 있습니다. 터틀을 움직이려면 키보드 화살표 키가 캡처되도록 두 번째 터미널 창을 선택하세요.

../../../_images/turtlesim_follow2.png

한 터틀이 계속해서 다른 터틀을 따라가는 것을 볼 수 있습니다.

무슨 일이 일어나고 있나요?

이 데모는 tf2 라이브러리를 사용하여 세 개의 좌표 프레임을 생성합니다. world 프레임, turtle1 프레임 및 turtle2 프레임입니다. 이 튜토리얼에서는 tf2 브로드캐스터 를 사용하여 터틀 좌표 프레임을 게시하고 tf2 리스너 를 사용하여 터틀 프레임의 차이를 계산하고 한 터틀이 다른 터틀을 따라가도록합니다.

tf2 도구

이제 tf2가 이 데모를 만드는 데 어떻게 사용되는지 살펴 보겠습니다. tf2_tools 를 사용하여 tf2가 뒤에서 어떻게 작동하는지 확인할 수 있습니다.

1. view_frames 사용

view_frames 는 ROS를 통해 tf2에서 브로드캐스트되는 프레임을 나타내는 다이어그램을 생성합니다.

ros2 run tf2_tools view_frames

다음과 같이 볼 수 있습니다.

Listening to tf data during 5 seconds...
Generating graph in frames.pdf file...

여기에서 tf2 브로드캐스트를 통해 송출되는 프레임을 듣고 프레임이 어떻게 연결되어 있는지 나타내는 트리를 그립니다. 트리를 보려면 생성된 frames.pdf 를 좋아하는 PDF 뷰어로 열어보세요.

../../../_images/turtlesim_frames.png

여기서 tf2에 의해 브로드캐스트되는 세 개의 프레임을 볼 수 있습니다. world, turtle1turtle2 입니다. world 프레임은 turtle1turtle2 프레임의 부모입니다. 또한 디버깅 목적으로 tf2 프레임이 tf2에 게시되는 속도와 가장 오래된 및 가장 최근의 프레임 변환을 수신한 시기에 대한 일부 진단 정보도 보고합니다.

2. tf2_echo 사용

tf2_echo 는 ROS를 통해 브로드캐스트되는 두 개의 프레임 간의 변환을 보고합니다.

사용법:

ros2 run tf2_ros tf2_echo [source_frame] [target_frame]

turtle2 프레임에 대한 turtle1 프레임의 변환을 보겠습니다. 이것은 다음과 같습니다.

ros2 run tf2_ros tf2_echo turtle2 turtle1

tf2_echo 리스터가 ROS 2를 통해 브로드캐스트되는 프레임을 수신함에 따라 변환이 표시됩니다.

At time 1622031731.625364060
- Translation: [2.796, 1.039, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.202, 0.979]
At time 1622031732.614745114
- Translation: [1.608, 0.250, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.032, 0.999]

터틀을 움직이면 두 터틀이 서로에 대해 상대적으로 움직이는 것을 볼 수 있습니다.

rviz2 및 tf2

rviz2 는 tf2 프레임을 검사하는 데 유용한 시각화 도구입니다. rviz2 를 사용하여 터틀 프레임을 확인해 봅시다. 구성 파일을 사용하여 rviz2 를 시작합니다. 구성 파일은 -d 옵션을 사용하여 지정합니다.

ros2 run rviz2 rviz2 -d $(ros2 pkg prefix --share turtle_tf2_py)/rviz/turtle_rviz.rviz
../../../_images/turtlesim_rviz1.png

사이드 바에서 tf2에 의해 브로드캐스트되는 프레임을 볼 수 있습니다. 터틀을 움직이면 rviz에서 프레임이 움직이는 것을 볼 수 있습니다.