A Python library to work with bag files without ROS.
Project description
pybag
A Python library to work with bag files (MCAP and ROS Bag) without ROS.
[!Warning] The library is still in the early stages of development and the API is still unstable
Installation
# Add dependency to your package
uv add pybag-sdk
# Install pybag cli
uv tool install pybag-sdk
Quick Start
CLI
# Get file information
pybag info data.mcap
# Filter messages
pybag filter data.mcap -o output.mcap --include-topic /camera
# Merge multiple files
pybag merge input1.mcap input2.mcap -o output.mcap
Unified Reader
The Reader class provides a common interface for reading both MCAP and ROS 1 bag files.
The file format is automatically detected from the file extension.
from pybag import Reader
# Works with both .mcap and .bag files
with Reader.from_file("data.mcap") as reader:
for msg in reader.messages("/camera"):
print(msg.log_time, msg.data)
# Same API for ROS 1 bag files
with Reader.from_file("data.bag") as reader:
for msg in reader.messages("/sensor/*"): # glob patterns supported
print(msg.topic, msg.msg_type, msg.data)
Reading MCAP Files
from pybag.mcap_reader import McapFileReader
with McapFileReader.from_file("data.mcap") as reader:
for msg in reader.messages("/camera"):
print(msg.log_time, msg.data)
Writing MCAP Files
from pybag.mcap_writer import McapFileWriter
from pybag.ros2.humble import std_msgs
with McapFileWriter.open("output.mcap") as writer:
log_time_ns = 1000
msg = std_msgs.String(data="hello")
writer.write_message("/status", log_time_ns, msg)
Reading ROS 1 Bag Files
from pybag.bag_reader import BagFileReader
with BagFileReader.from_file("data.bag") as reader:
for msg in reader.messages("/camera"):
print(msg.log_time, msg.data)
Writing ROS 1 Bag Files
from pybag.bag_writer import BagFileWriter
from pybag.ros1.noetic import std_msgs
with BagFileWriter.open("output.bag") as writer:
log_time_ns = 1000
msg = std_msgs.String(data="hello")
writer.write_message("/status", log_time_ns, msg)
Custom Messages
from dataclasses import dataclass
import pybag.types as t
@dataclass
class SensorData:
__msg_name__ = 'custom/msg/SensorData'
temperature: t.float32
humidity: t.float32
with McapFileWriter.open("sensors.mcap") as writer:
writer.write_message("/sensor", 1000, SensorData(25.5, 60.0))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pybag_sdk-0.9.0.tar.gz.
File metadata
- Download URL: pybag_sdk-0.9.0.tar.gz
- Upload date:
- Size: 282.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb6098edf4544895b8ba87a48f02236db412740f148ff66f840938d63466c301
|
|
| MD5 |
0cf3a081c919bad12e518e0675dad3bf
|
|
| BLAKE2b-256 |
976b5c0f8fd23e1facc82d988ad455117d19825fc2d94243e4fe192782f29465
|
File details
Details for the file pybag_sdk-0.9.0-py3-none-any.whl.
File metadata
- Download URL: pybag_sdk-0.9.0-py3-none-any.whl
- Upload date:
- Size: 193.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1dce69ad99f78d8e6fe613351b8a9476ec2ccf32a390d99c04b19aed6458e3e5
|
|
| MD5 |
8e0fe7c4c5b608571ab10d4711f5d36c
|
|
| BLAKE2b-256 |
0d59c006f8d9e0908ca9fd2622b30abbd311120e364f0e85726abd3c52ea7e15
|