rosbag2_py는 ROS 2에서 rosbag2 API를 Python에서 사용할 수 있도록 제공하는 패키지입니다. ROS 2의 rosbag2는 로봇 시스템의 센서 데이터, 토픽 메시지 등을 저장하고 재생하는 기능을 담당합니다.
rosbag2_py 주요 기능Bag 파일 기록 (Recording)
.db3 (SQLite 기반) 포맷으로 저장할 수 있습니다.Bag 파일 재생 (Playback)
Bag 파일 읽기 (Reading)
Bag 파일 메타데이터 조회 (Metadata Query)
rosbag2_py 주요 APIrosbag2_py는 rosbag2_py.reader 및 rosbag2_py.writer 등의 모듈을 제공합니다.
from rosbag2_py import SequentialWriter
from rosbag2_py._storage import StorageOptions, ConverterOptions
from rclpy.serialization import serialize_message
from std_msgs.msg import String
# 저장할 Bag 파일 설정
storage_options = StorageOptions(uri='my_bag', storage_id='sqlite3')
converter_options = ConverterOptions(input_format='', output_format='')
writer = SequentialWriter()
writer.open(storage_options, converter_options)
# 기록할 토픽과 메시지 타입 설정
topic_name = '/example_topic'
msg_type = String
writer.create_topic({'name': topic_name, 'type': 'std_msgs/msg/String', 'serialization_format': 'cdr'})
# 메시지 작성 및 저장
msg = String()
msg.data = 'Hello, ROSBag2!'
writer.write(topic_name, serialize_message(msg), 0) # 0은 타임스탬프
from rosbag2_py import Player
from rosbag2_py._storage import StorageOptions, PlayOptions
# Bag 파일 재생 옵션 설정
storage_options = StorageOptions(uri='my_bag', storage_id='sqlite3')
play_options = PlayOptions()
player = Player()
player.play(storage_options, play_options)
from rosbag2_py import SequentialReader
from rosbag2_py._storage import StorageOptions
storage_options = StorageOptions(uri='my_bag', storage_id='sqlite3')
reader = SequentialReader()
reader.open(storage_options)
# 저장된 메시지 읽기
while reader.has_next():
(topic, msg, t) = reader.read_next()
print(f"Received message from {topic} at time {t}")
from rosbag2_py import Info
from rosbag2_py._storage import StorageOptions
storage_options = StorageOptions(uri='my_bag', storage_id='sqlite3')
info = Info()
metadata = info.read_metadata(storage_options.uri, storage_options.storage_id)
print(metadata)
rosbag2_py의 장점rosbag2 API를 Python에서 활용 가능.rosbag2의 다양한 스토리지 플러그인 지원 (예: SQLite, PostgreSQL 등).rosbag2_py는 ROS 2에서 데이터 로깅 및 분석을 Python 환경에서 쉽게 수행할 수 있도록 돕는 핵심 패키지입니다. 🚀