싱글 프레임 브로드캐스팅

저작권: 쿼드(QUAD) 드론연구소 https://smartstore.naver.com/maponarooo

첫 번째 방법은 static_transform_publisher입니다. 짐작할 수 있듯이 이 도구는 정적 변환이 아닌 동적 변환을 브로드캐스트할 수 없습니다. 이것은 약간 쓸모 없는 것처럼 보일 수 있지만 변환을 배우고, 빠른 테스트를 수행하고, 더 큰 시스템에서 "접착제" 역할을 하는 데 매우 유용합니다(예: 두 개의 서로 다른 노드가 프레임이 다른 이름을 갖거나 약간 다른 지점에 있을 것으로 예상하는 경우) ).

아래 명령은 변환 및 회전이 제공된 정적 변환을 parent_frame에서 child_frame로 브로드캐스트 합니다 . 회전은 라디안 단위이며 로컬 좌표계를 기준으로 변환 후 순서대로 처리됩니다.

ros2 run tf2_ros static_transform_publisher x y z yaw pitch roll parent_frame child_frame

예를 들어, world프레임에서 45°(0.785rad) 각도로 프레임을 가로질러 위쪽에 있는 robot_1프레임을 원할 수 있습니다 . 이를 위해 다음 명령을 사용합니다.

ros2 run tf2_ros static_transform_publisher 2 1 0 0.785 0 0 world robot_1

사이드카처럼 항상 첫 번째 로봇robot_1의 오른쪽에 앉아 있는 두 번째 로봇robot_2이 있다고 가정해 보겠습니다. 두 번째 터미널을 사용하여 아래 명령을 사용하여 또 다른 정적 변환을 생성하여 의 양의 x 방향으로 1m 떨어진 새 프레임을 생성할 수 있습니다.

ros2 run tf2_ros static_transform_publisher 1 0 0 0 0 0 robot_1 robot_2

이제 이것이 잘 작동하는지 확인하기 위해 ROS 시각화 도구인 RViz를 사용합니다.

ROS2에서 RViz(ROS 시각화 도구)는 rviz2이라고 불리며 동일한 이름의 패키지에 있습니다. 따라서 다음을 실행하기만 하면 됩니다.

ros2 run rviz2 rviz2

RViz는 모든 종류의 다양한 데이터를 표시할 수 있습니다. TF 데이터를 표시하려면 왼쪽 하단 모서리에 있는 "추가" 버튼을 클릭하고 "TF"를 선택합니다.

어떤 프레임을 참조로 사용할지 RViz에 알리지 않았기 때문에 변환은 아직 나타나지 않습니다( map현재 존재하지 않는 로 기본 설정됨). 왼쪽 상단 모서리에서 world고정 프레임으로 선택할 수 있습니다.

"Global Status"가 정상이 되고 두 프레임이 나타나야 하며 두 프레임 사이에 변환을 나타내는 선이 있어야 합니다.

RViz는 소개와 view_frames아래에서와 같이 부모에서 자식으로가 아니라 자식에서 부모로의 화살표로 변환을 나타냅니다.

왼쪽 패널을 사용하여 RViz에 표시되는 데이터를 구성할 수 있습니다. 예를 들어 TF 시각화에 대한 설정을 열고 프레임 이름 표시를 활성화할 수 있습니다.

첫 번째 터미널로 돌아가서 90°(1.57rad)의 더 큰 회전으로 명령을 다시 실행하면 RViz에서 첫 번째 로봇의 마커가 회전하고 두 번째 로봇도 움직이는 것을 볼 수 있습니다.

ros2 run tf2_ros static_transform_publisher 2 1 0 1.57 0 0 world robot_1

이것을 가지고 놀면서 변환이 어떻게 작동하는지 감을 잡는 것이 좋습니다. 대신 world고정 프레임(왼쪽 상단)을 로봇 중 하나로 변경하거나 프레임을 새로운 위치 및 회전으로 조정하거나 새 프레임을 추가해 보십시오.

다음으로 이동하기 전에 모든 RViz를 중지하고 닫아야 합니다 . 그렇지 않으면 간섭이 발생합니다.

Last updated