Web-based replay views for aqua_localization public-data demos. Use the
free Foxglove Studio web app — no local
install required, no account needed for local-file playback.
- Runs entirely in the browser; nothing to install.
- Reads ROS 2
.mcapbags directly via drag-and-drop. - Layout is captured as a single JSON file you can commit and share — anyone who drags the same bag onto Foxglove with this layout imported sees the same panels, camera angle, and plots.
- Decent screenshot / export workflow for README assets.
| Layout | Demo | Bag |
|---|---|---|
aqua_tank_demo.json |
Tank Dataset short_test — IMU + pressure + DVL fusion vs AprilTag GT |
recorded via datasets/tank_dataset_demo.md |
Foxglove and rerun.io both play whatever is in the bag — by themselves the
source public bags do not contain aqua_localization output topics. Record
a "demo" bag that captures both the inputs and our pipeline outputs, so the
resulting .mcap is self-contained and reproducible.
One-shot recorder per dataset (each builds on the same pattern: estimator in
the background, ros2 bag record writing to mcap, ros2 bag play --clock
driving the source bag in the foreground):
ros2 run aqua_localization record_tank_demo.sh
ros2 run aqua_localization record_mbes_demo.sh
ros2 run aqua_localization record_ntnu_demo.sh
ros2 run aqua_localization record_aqualoc_demo.shEach script honors environment overrides for source/output paths and replay
duration — see the header comment of each aqua_localization/scripts/record_*_demo.sh
file.
The Tank demo bag contains ~27 k messages over ~15 s including 5 321
/aqua_imu_loc/odometry samples; the MBES demo bag is ~50 MB across 60 s
of multibeam fans plus our pipeline outputs; the NTNU bag is ~21 MB over
90 s; AQUALOC clocks in around 400 MB because of the camera stream.
If you prefer the manual three-terminal flow:
# Source bag (input only).
SRC=aqua_localization/datasets/public/tank_dataset/short_test_ros2
# Output bag (input + estimate + TF).
OUT=aqua_localization/datasets/public/tank_dataset/demo_with_estimate
source install/setup.bash
# Terminal A: estimator.
ros2 run aqua_imu_loc imu_loc_node --ros-args \
--params-file install/aqua_imu_loc/share/aqua_imu_loc/config/tank_dataset.yaml \
-p use_sim_time:=true
# Terminal B: recorder.
ros2 bag record -s mcap -o "$OUT" \
--topics /imu/data /pressure /dvl/twist /apriltag_slam/GT \
/aqua_imu_loc/odometry /aqua_imu_loc/status \
/tf /tf_static
# Terminal C: replay.
ros2 bag play "$SRC" --clockAfter the source bag finishes, ctrl-C the recorder and estimator.
- Open https://studio.foxglove.dev/ in any modern browser.
- Open local file… → select the
.mcapfrom thedemo_with_estimatedirectory above. - Layout menu (top-right) → Import from file… → choose the layout JSON in this directory.
- Press play. The 3D panel follows
base_link; the green trail is the AprilTag GT, the blue trail is theaqua_imu_locestimate, the orange arrows are the DVL body-frame twist samples. The right column shows depth (estimate vs GT) and DVL velocity components.
Foxglove has no built-in image export. The standard workflow:
- Single frame: pause at the moment of interest, take an OS screenshot of the browser viewport.
- Animated GIF / MP4: use OBS or
wf-recorder(Wayland) /simplescreenrecorder(X11) on the browser tab; Foxglove's own framerate matches whatever your screen captures.
Save README-bound assets under docs/media/.