A GUI tool to visualize and analyze message timing from ROS 2 bags (.mcap or .db3).
Built with Dear ImGui + ImPlot. No message deserialization is performed -- only timestamps and topic names are read, so it opens even bags with custom or unavailable message types.
- Timeline tab: zoomable 2D scatter plot -- X = time, Y = topic lane. Each dot is one message. Pan/zoom with mouse. Toggle per-topic visibility and color. Measure mode: click twice to place two vertical markers and read the delta-T.
- Histograms / Stats tab: per-topic inter-message interval histogram and a statistics table (count, mean, std, min, max in ms).
System packages (Ubuntu / ROS 2 Jazzy):
sudo apt install libglfw3-devROS 2 packages resolved automatically by rosdep:
rosbag2_cpprosbag2_storage
Storage backend plugins (installed with a typical ROS 2 desktop install):
rosbag2_storage_mcap— for.mcapbagsrosbag2_storage_sqlite3— for.db3bags
Third-party libraries (imgui, implot, tinyfiledialogs) are vendored as git
submodules under third_party/ -- no manual installation needed, but make sure
submodules are checked out (see Build section below).
cd ~/ros2_ws/src/rosbag_timing_inspector
# Fetch the vendored third-party submodules (imgui, implot, tinyfiledialogs)
git submodule update --init --recursive
cd ~/ros2_ws
# Install ROS 2 dependencies
rosdep install --from-paths src/rosbag_timing_inspector --ignore-src -r -y
# Build (release build recommended for large bags)
colcon build --packages-select rosbag_timing_inspector \
--cmake-args -DCMAKE_BUILD_TYPE=Releasesource ~/ros2_ws/install/setup.bash
# Pass a bag path directly:
rosbag_timing_inspector /path/to/recording.mcap
rosbag_timing_inspector /path/to/recording.db3
# Or open without arguments and use File > Open bag...:
rosbag_timing_inspector| Action | How |
|---|---|
| Zoom timeline | Scroll wheel over plot, or click-drag on an axis |
| Pan timeline | Middle-click drag, or right-click drag |
| Reset view | Double-click on plot |
| Toggle topic | Checkbox in the left panel |
| Change topic color | Color swatch in the left panel |
| Measure delta-T | Enable Measure mode, click for T1, click again for T2; drag either line to adjust |
| Reset measurement | Click a third time to restart |
MIT -- Copyright (C) 2026 Jose Luis Blanco Claraco