Ubuntu ROS 실습(10)

zeusqoi·3일 전

개인공부

목록 보기
29/42

이번에는 ROS 2의 Topic 통신을 실제 TurtleSim 환경에서 확인하고, Publisher와 Subscriber 사이에서 메시지가 전달되는 구조를 살펴보았다.

앞서 Topic의 기본 개념과 ROS 2의 주요 통신 방식에 대해 정리했기 때문에, 이번 실습에서는 Topic을 직접 확인하고 사용하는 과정에 집중하였다.


1. Topic 확인

현재 ROS 2 시스템에서 사용 중인 Topic을 확인하기 위해 다음 명령어를 사용할 수 있다.

ros2 topic list

이 명령어를 이용하면 현재 실행 중인 노드에서 사용하고 있는 Topic의 목록을 확인할 수 있다.

TurtleSim을 실행한 상태에서는 거북이의 이동과 관련된 Topic 등을 확인할 수 있다.


2. Topic 정보 확인

특정 Topic의 상세한 정보를 확인하려면 ros2 topic info 명령어를 사용할 수 있다.

ros2 topic info /turtle1/cmd_vel

이를 통해 해당 Topic의 메시지 타입과 Publisher, Subscriber 정보를 확인할 수 있다.

예를 들어 /turtle1/cmd_vel은 거북이의 속도 명령을 전달하는 Topic으로 사용된다.

Publisher
    │
    │ Twist 메시지
    ↓
/turtle1/cmd_vel
    │
    ↓
Subscriber

즉, Publisher가 속도 정보를 메시지로 전달하면 Subscriber가 해당 메시지를 받아 거북이의 움직임에 반영한다.


3. Topic 메시지 확인

실제로 Topic을 통해 전달되는 메시지를 확인하기 위해 ros2 topic echo 명령어를 사용할 수 있다.

ros2 topic echo /turtle1/cmd_vel

명령어를 실행한 상태에서 TurtleSim의 거북이를 움직이면 /turtle1/cmd_vel Topic을 통해 전달되는 메시지를 확인할 수 있다.

해당 Topic에서는 geometry_msgs/msg/Twist 타입의 메시지가 사용되며, 선형 속도와 각속도에 대한 정보를 전달한다.


4. Topic을 이용한 거북이 제어

Topic에 직접 메시지를 발행하여 TurtleSim의 거북이를 움직일 수도 있다.

/turtle1/cmd_vel Topic에 Twist 메시지를 발행하면 거북이에게 이동 명령을 전달할 수 있다.

Publisher
     │
     │ Twist
     ↓
/turtle1/cmd_vel
     │
     ↓
TurtleSim
     │
     ↓
거북이 이동

이를 통해 Topic이 단순히 목록에 존재하는 것이 아니라 실제 노드 간 데이터를 전달하는 통신 경로로 사용되고 있음을 확인할 수 있다.


5. Topic 통신 과정

이번 실습에서 확인한 Topic 통신 과정을 정리하면 다음과 같다.

[Publisher]
     │
     │ Message
     ↓
[Topic]
     │
     │ Message
     ↓
[Subscriber]
     │
     ↓
[TurtleSim 동작]

TurtleSim에서는 키보드 입력 등을 통해 생성된 이동 명령이 /turtle1/cmd_vel Topic을 통해 전달되고, TurtleSim이 해당 메시지를 받아 거북이를 움직인다.


마무리

이번 실습에서는 TurtleSim을 이용하여 ROS 2의 Topic 통신이 실제로 동작하는 과정을 확인했다.

ros2 topic list를 통해 현재 사용 중인 Topic을 확인하고, ros2 topic info를 통해 특정 Topic의 연결 정보를 확인하였다. 또한 ros2 topic echo를 이용하여 Topic으로 전달되는 실제 메시지를 확인하였다.

이를 통해 Publisher가 메시지를 발행하고 Topic을 거쳐 Subscriber에게 전달되는 ROS 2의 Topic 통신 과정을 직접 확인할 수 있었다.

특히 /turtle1/cmd_vel Topic을 통해 geometry_msgs/msg/Twist 메시지가 전달되며, 이를 이용해 TurtleSim의 거북이 움직임을 제어할 수 있다는 것을 확인하였다.

0개의 댓글