이번 실습에서는 ROS 2의 Topic 데이터를 기록하고 다시 재생하는 rosbag 기능을 실습했다.
앞선 실습에서 Topic을 이용해 TurtleSim의 거북이를 제어했다면, 이번에는 해당 Topic으로 전달되는 메시지를 Bag 파일로 저장하고 이후 다시 재생하여 동일한 데이터를 확인해 보았다.
ROS 2의 rosbag은 ROS에서 발생하는 Topic 메시지를 파일로 기록하고, 필요할 때 다시 재생할 수 있도록 하는 기능이다.
Topic을 통해 전달되는 데이터를 저장해 두면 이후 동일한 데이터를 다시 재생하면서 테스트하거나 분석할 수 있다.
ROS 2에서는 다음과 같은 명령어를 사용한다.
ros2 bag record
ros2 bag info
ros2 bag play
각 명령어의 역할은 다음과 같다.
| 명령어 | 기능 |
|---|---|
ros2 bag record | Topic 메시지를 기록 |
ros2 bag info | 기록된 Bag 정보 확인 |
ros2 bag play | 기록된 메시지 재생 |
이번 실습에서는 TurtleSim에서 거북이의 움직임을 제어할 때 사용하는 다음 Topic을 기록했다.
/turtle1/cmd_vel
해당 Topic의 메시지 타입은 다음과 같다.
geometry_msgs/msg/Twist
/turtle1/cmd_vel은 거북이의 이동 및 회전 명령을 전달하는 Topic이다.
다음 명령어를 사용하여 /turtle1/cmd_vel Topic의 메시지를 기록했다.
ros2 bag record /turtle1/cmd_vel
이후 TurtleSim을 움직이면서 /turtle1/cmd_vel을 통해 전달되는 메시지를 Bag 파일에 저장했다.
실습에서는 약 93초 동안 데이터를 기록했으며, 총 28개의 메시지가 저장되었다.
기록이 끝난 후 ros2 bag info 명령어를 이용하여 저장된 Bag의 정보를 확인했다.
ros2 bag info rosbag2_2026_10_01-10_19_24/
확인 결과 다음과 같은 정보를 확인할 수 있었다.
Duration: 93.717029682s
Messages: 28
Topic information:
Topic: /turtle1/cmd_vel
Type: geometry_msgs/msg/Twist
Count: 28
이를 통해 약 93초 동안 기록된 /turtle1/cmd_vel Topic의 메시지가 총 28개 저장되어 있으며, 메시지 타입은 geometry_msgs/msg/Twist임을 확인했다.
기록한 Bag 파일은 ros2 bag play 명령어를 이용하여 다시 재생할 수 있다.
ros2 bag play rosbag2_2026_10_01-10_19_24/
Bag을 재생하면 저장되어 있던 /turtle1/cmd_vel 메시지가 다시 전달된다.
따라서 별도로 거북이를 조작하지 않아도 기록 당시 전달되었던 이동 명령이 다시 실행되면서 TurtleSim에서 거북이의 움직임이 재현된다.

실습 화면에서는 ros2 bag play를 통해 기록된 Bag 파일을 재생하고 있으며, TurtleSim에서 저장된 이동 명령에 따라 거북이가 움직인 경로를 확인할 수 있다.
이번 실습에서 진행한 과정은 다음과 같다.
/turtle1/cmd_vel
│
│ Topic 메시지
↓
ros2 bag record
│
↓
Bag 파일
│
│ ros2 bag play
↓
/turtle1/cmd_vel
│
↓
TurtleSim
즉, TurtleSim에 전달되는 Topic 메시지를 먼저 Bag 파일에 저장하고, 이후 저장된 데이터를 다시 재생하여 동일한 Topic 메시지를 전달하는 방식이다.
이번 실습에서는 ROS 2에서 Topic 데이터를 rosbag으로 기록하고 다시 재생하는 과정을 직접 확인했다.
/turtle1/cmd_vel Topic을 대상으로 메시지를 기록한 뒤 ros2 bag info를 통해 저장된 데이터의 정보를 확인했으며, ros2 bag play를 이용해 기록된 메시지를 다시 재생했다.
실습 결과 약 93초 동안 기록된 28개의 /turtle1/cmd_vel 메시지를 다시 재생하여 TurtleSim의 움직임이 재현되는 것을 확인할 수 있었다.
정리하면 다음과 같다.
ros2 bag record
→ Topic 메시지 기록
ros2 bag info
→ 기록된 Bag 정보 확인
ros2 bag play
→ 기록된 Topic 메시지 재생
이번 실습을 통해 ROS 2에서 발생하는 데이터를 단순히 실시간으로 전달하는 것뿐만 아니라, 기록하고 저장한 뒤 필요할 때 다시 재생할 수 있다는 것을 확인했다.