Skip to main content

Post-processing analysis engine for ROS2 rosbag data

Project description

bagx

PyPI CI Docs License: MIT

One command to check if your rosbag data is ready — for SLAM, Nav2, Autoware, or MoveIt.

pip install bagx
bagx eval your_bag.db3

bagx eval output

bagx analyzes your rosbag and gives you:

  • Exact IMU noise values to paste into your SLAM config
  • Sync delay warnings so you know when to enable deskew
  • "Use LiDAR-only" when your IMU is too noisy for LIO

The problem

You recorded a rosbag. You run SLAM. It diverges. Now you spend hours asking:

  • "Is my IMU noise too high for LIO?"bagx eval tells you
  • "What noise value should I set in the SLAM config?" → bagx gives you the exact number
  • "Are my LiDAR and IMU actually synchronized?"bagx sync shows the delay
  • "Where did the data quality drop?"bagx anomaly pinpoints the exact timestamp
  • "Which of my 10 bags is the best for benchmarking?"bagx batch eval ranks them all
  • "Is my odometry fast enough for Nav2?" → bagx checks rate and warns if too slow
  • "Are all Autoware sensing topics alive?" → bagx verifies camera, LiDAR, GNSS rates

Example: catching a real problem

$ bagx eval ouster_os0-32.db3

Overall Score: 76.6/100

Recommendations:
  ✔ IMU accel noise 0.087 m/s² — good for LIO, set imu_acc_noise_density to 0.087
  ⚠ IMU gyro noise 0.022 rad/s — consider lowering IMU integration weight
  ⚠ IMU rate 50Hz is low — 200Hz+ recommended for tightly-coupled LIO
  ⚠ LiDAR↔IMU sync delay 23ms — enable per-point deskew in SLAM

Without bagx, you'd discover these issues after hours of failed SLAM runs.

Install

pip install bagx

Works without ROS2 — reads .db3 files directly via SQLite.

Commands

Command One-liner
bagx eval bag.db3 Is this bag ready? Auto-detects SLAM / Nav2 / Autoware / MoveIt
bagx compare A.db3 B.db3 Which sensor config is better?
bagx sync bag.db3 /imu /lidar Are my sensors synchronized?
bagx anomaly bag.db3 Where did sensor quality drop?
bagx scenario bag.db3 Find GNSS-lost and high-dynamics segments
bagx export bag.db3 --ai Export to Parquet/JSON for ML
bagx batch eval *.db3 --csv Rank an entire dataset
bagx ask bag.db3 "question" Ask questions via LLM

Tested on public datasets

Dataset IMU Sync Score Insight
Newer College 84 100 92 Best data, ideal for SLAM benchmarking
Livox MID-360 97 70 84 Great IMU, but 25ms sync — needs deskew
NTU VIRAL 60 100 80 IMU too noisy for LIO, use LiDAR-only
Ouster OS0-32 80 74 77 50Hz IMU too slow, add external IMU

Auto-detects your framework

bagx recognizes topic patterns and gives framework-specific advice:

$ bagx eval nav2_robot.db3
Nav2 topics detected
  ✔ Odometry (/odom) at 50Hz — good for Nav2
  ⚠ LaserScan (/scan) at 5Hz — 10Hz+ recommended for costmap updates
  ⚠ cmd_vel at 8Hz — control loop may be too slow

$ bagx eval autoware_vehicle.db3
Autoware topics detected
  ✔ LiDAR (/sensing/lidar/points) at 10Hz
  ✔ Camera (/sensing/camera/image) at 30Hz
  ✔ GNSS (/sensing/gnss/fix)

$ bagx eval moveit_arm.db3
MoveIt topics detected
  ✔ JointState (/joint_states) at 500Hz — good for motion planning

Links

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

bagx-0.1.3.tar.gz (65.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bagx-0.1.3-py3-none-any.whl (45.6 kB view details)

Uploaded Python 3

File details

Details for the file bagx-0.1.3.tar.gz.

File metadata

  • Download URL: bagx-0.1.3.tar.gz
  • Upload date:
  • Size: 65.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bagx-0.1.3.tar.gz
Algorithm Hash digest
SHA256 ec251e6424f6663dd7e1794c104629c415eb7d6bced8f34183481a058333c700
MD5 990c794277bc4e8f557354b9ca5e3d33
BLAKE2b-256 935efa74137a1d5277d80542a505c68204ab6626de749c327601391e342f9b71

See more details on using hashes here.

Provenance

The following attestation bundles were made for bagx-0.1.3.tar.gz:

Publisher: publish.yml on rsasaki0109/bagx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bagx-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: bagx-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 45.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bagx-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a1330fd0f2c2c6702547a0c23e0fc756b7ea6e516cc3d991a070184b3990a5c2
MD5 ab91b602a54bf8685e3badd06d32874f
BLAKE2b-256 c8e8eb6df5e108520afa602855001200b38bfcabda07753177418f97d20f0eba

See more details on using hashes here.

Provenance

The following attestation bundles were made for bagx-0.1.3-py3-none-any.whl:

Publisher: publish.yml on rsasaki0109/bagx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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