ROS2


bag

  • ros2 bag record {topic}: 토픽을 녹화
  • ros2 bag play {bag file}: 녹화된 파일을 실행

아래 명령어로 turtilesim_node를 실행

$ ros2 run turtlesim turtlesim_node

turtilesim_node를 키보드로 움직일 수 있게 모듈 실행

$ ros2 run turtlesim turtle_teleop_key

이후에 turtilesim의 cmd_vel을 녹화하도록 명령

$ ros2 bag record /turtle1/cmd_vel

그럼 해당 명령어를 실행한 위치에 bag파일이 생성됨

master@master:~/workspace/ros2$ ls
rosbag2_2025_09_25-14_46_03  run_config.txt

녹화한 파일의 정보를 보고싶다면

$ ros2 bag info rosbag2_2025_09_25-14_46_03/

Files:             rosbag2_2025_09_25-14_46_03_0.db3
Bag size:          25.0 KiB
Storage id:        sqlite3
Duration:          22.000396302s
Start:             Sep 25 2025 14:46:04.757747247 (1758779164.757747247)
End:               Sep 25 2025 14:46:26.758143549 (1758779186.758143549)
Messages:          23
Topic information: Topic: /turtle1/cmd_vel | Type: geometry_msgs/msg/Twist | Count: 23 | Serialization Format: cdr

녹화된 파일을 실행하고 싶다면 아래 명령어를 입력하면 거북이가 녹화한 cmd_vel을 따라 똑같이 동작한다.

$ ros2 bag play rosbag2_2025_09_25-14_46_03
[INFO] [1758779228.496099360] [rosbag2_storage]: Opened database 'rosbag2_2025_09_25-14_46_03/rosbag2_2025_09_25-14_46_03_0.db3' for READ_ONLY.
[INFO] [1758779228.496134652] [rosbag2_player]: Set rate to 1
[INFO] [1758779228.497536235] [rosbag2_player]: Adding keyboard callbacks.
[INFO] [1758779228.497566610] [rosbag2_player]: Press SPACE for Pause/Resume
[INFO] [1758779228.497571985] [rosbag2_player]: Press CURSOR_RIGHT for Play Next Message
[INFO] [1758779228.497580027] [rosbag2_player]: Press CURSOR_UP for Increase Rate 10%
[INFO] [1758779228.497583819] [rosbag2_player]: Press CURSOR_DOWN for Decrease Rate 10%
[INFO] [1758779228.497786235] [rosbag2_storage]: Opened database 'rosbag2_2025_09_25-14_46_03/rosbag2_2025_09_25-14_46_03_0.db3' for READ_ONLY

만약 로그파일의 용량문제로 10초간격으로 파일을 저장하고싶다면 아래 명령어를 입력하면 된다.

mybag라는 폴더에 10초 단위로 로그파일이 저장된다.

$ ros2 bag record /turtle1/cmd_vel --max-bag-duration 10 -o mybag