Skip to main content

Remove topics from rosbags

Project description

rosbag-topic-remove

Filter out topics from a rosbag

Use case

Say you have too much topics in a rosbag (ROS1 or ROS2) and that you want to keep a copy of this rosbag without data from a specific sensor. rosbag-topic-remove will :

  • Filter out topics based on their name
  • Filter out topics based on glob-like wildcard patterns
  • Preserve your original rosbag

Installation

rosbag-topic-remove can be installed from PyPi :

pip install rosbag-topic-remove

Usage

rosbag-topic-remove can be used both as a command line application and in Python code.

Command line

A basic use of rosbag-topic-remove is to simply call it from the command line.

rosbag-topic-remove /path/to/rosbag -t /topic/to_delete
rosbag-topic-remove /path/to/rosbag -t *sensor*

Here are all the CLI options of rosbag-topic-remove:

$ rosbag-topic-remove -h
usage: rosbag-topic-remove [-h] [-o OUTBAG] [-t TOPICS [TOPICS ...]] [-f]
                           inbag

positional arguments:
  inbag                 Input bag

options:
  -h, --help            show this help message and exit
  -o OUTBAG, --output OUTBAG, --outbag OUTBAG
                        Filtered bag
  -t TOPICS [TOPICS ...], --topics TOPICS [TOPICS ...]
                        Topics to remove from the rosbag
  -f, --force           Force output file overwriting

Python Code API

You can also call rosbag-topic-remove directly into your Python code :

from rosbag_topic_remove import BagTopicRemover

data_path = "path/to/a/rosbag.bag"  # ROS1
data_path = "path/to/a/rosbag"  # ROS2
rbag_rem = BagTopicRemover(data_path)

# Change the input bag
rbag_rem.inbag = "path/to/another/rosbag"

# Remove /cmd_vel
rbag_rem.remove("/cmd_vel")

# Remove /cmd_vel
rbag_rem.remove("/cmd_vel")

# Remove all camera info topics
rbag_rem.remove("/*/camera_info")

# Remove all topics from the IMU and from the GPS
rbag_rem.remove(("/imu/*", "/gps/*"))

# Export a rosbag with all topics filtered
rbag_rem.export("path/to/save/this/filtered/rosbag.bag")  # ROS1
rbag_rem.export("path/to/save/that/filtered/rosbag")  # ROS2

Contributing

Pull requests are welcome and don't hesitate to open issues

(Recommended) flit is used to package this module. Development packages can be installed using flit :

python -m venv venv
source venv/bin/activate
pip install flit
flit install

(Alternative) Development requirements can be installed using pip :

python -m venv venv
source venv/bin/activate
pip install -r requirements/requirements-dev.txt

Acknowledgements

This package relies strongly on rosbags for working with rosbags. Hats off to the team at Ternaris for developing and maintaining it.

License

This project is licensed under a MIT license

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rosbag-topic-remove-0.0.2.tar.gz (8.5 kB view hashes)

Uploaded Source

Built Distribution

rosbag_topic_remove-0.0.2-py3-none-any.whl (7.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page