📝ROS2 bag 사용
ros2
bag
2025
ros2 bag 사용방법에 대해 정리
기본 준비
- 새 터미널마다 ROS 2 환경을 source 합니다:
source /opt/ros/<ROS_DISTRO>/setup.bash - 기록할 토픽 목록 확인:
ros2 topic list(토픽이 실제로 publish 되는지ros2 topic echo /토픽명으로 확인). (ROS Documentation)
1) 특정 토픽 한 개 녹화
녹화 중지: Ctrl+C. 기록된 bag은 실행한 디렉토리 안에 rosbag2_<timestamp> 같은 폴더로 생성됩니다. (ROS Documentation)
2) 여러 토픽 녹화 & 출력 이름 지정
위 명령은 myrun이라는 이름의 bag(디렉토리/파일)을 만듭니다. (ROS Documentation)
3) 시스템의 모든 토픽 녹화
많은 토픽/데이터가 쏟아져 들어오므로 디스크 사용량에 주의하세요. (ROS Documentation)
4) 제외(필터) — 정규표현식으로 제외하기
모든 토픽을 녹화하면서 일부 토픽만 제외하려면 정규표현식 옵션을 사용합니다(버전별 이름이 약간 다름: --exclude-regex 등). 예:
참고: 옵션명과 동작(예: -x vs --exclude-regex)은 ROS 2 버전(단일 배포판)에서 바뀐 적이 있으니, ros2 bag --help로 로컬 옵션을 확인하세요. (Jazzy 등 최신 릴리스에서 --exclude → --exclude-regex로 변경된 사례가 있습니다). (ROS Documentation)
5) 압축 저장(저장 포맷, 성능)
rosbag2는 기본 저장 포맷(예: MCAP / sqlite)과 압축 옵션을 제공합니다. 예:
MCAP가 ROS 2의 기본/권장 포맷으로 도입되어 외부 툴 연동성(예: Foxglove)에서 유리한 경우가 있습니다. 압축을 사용하면 디스크 사용량을 크게 줄일 수 있으나 CPU 사용량이 늘어납니다. (GitHub)
6) 녹화한 bag 정보 보기 / 재생
- 정보 확인:
ros2 bag info <bag_name> - 재생(퍼블리시):
ros2 bag play <bag_name>예:ros2 bag play myrun— 플레이하면 녹화한 메시지들이 다시 퍼블리시됩니다. (ROS Documentation)
7) 자주 겪는 문제와 해결 팁
- 토픽이 녹화되지 않을 때: 해당 토픽이 실제로 publish 중인지(
ros2 topic echo) 확인. - QoS 호환성 문제: ROS 2는 QoS(신뢰성 등) 호환성 요구가 있어, 녹화(구독)가 실패할 수 있습니다. 필요하면 QoS 오버라이드 옵션이나 문서를 참조하세요. (ROS Documentation)
- 버전 차이:
ros2 bag의 옵션명(-x,--exclude-regex, 압축 옵션 등)은 ROS 2 배포판(humble, jazzy, rolling 등)에 따라 달라질 수 있습니다. 로컬에서ros2 bag --help로 실제 사용 가능한 옵션을 확인하세요. (ROS Documentation) - 디스크 용량: 고주파 토픽(예: 카메라, 라이다)을 녹화하면 금방 디스크를 잡아먹습니다. 카메라는 해상도/주파수를 낮추거나 압축을 적극 사용하세요. (GitHub)
8) 빠른 예제 모음 (복사해서 쓰기)
# 1) 특정 토픽 1개
ros2 bag record /my_robot/joint_states
# 2) 여러 토픽 + 이름지정
ros2 bag record -o exp1 /tf /odom /scan /camera/image_raw
# 3) 모든 토픽(이름 지정) + zstd 압축
ros2 bag record -a -o allrun --compression-mode file --compression-format zstd
# 4) 모든 토픽 녹화하되 /tf.* 제외
ros2 bag record -a -x "/tf.*" -o all_except_tf