Underwater 3DGS Sample Pack Workflow

A small, release-ready artifact pattern for publishing 20-frame nerfstudio-style 3DGS input packs from public underwater bags.

Artifact Target

Nametank_short_test_3dgs_pack_20frames.zip
Formatnerfstudio-style transforms.json
Scope20 frames, intrinsics, odometry poses, base-to-camera extrinsic

The checked-in compact Tank bag does not include camera image or CameraInfo topics. Build this artifact from a Tank conversion made with camera topics included, or from another public underwater camera bag.

Open the Tank camera-enabled conversion check

Published Artifact

The first public sample pack is attached to v0.3. It contains 20 Tank Dataset frames, 20 matched /apriltag_slam/GT poses, manual Tank stereo intrinsics, and a nerfstudio-style transforms.json.

Download tank_short_test_3dgs_pack_20frames.zip

Open the static pack inspector

This is a reproducible input pack for 3DGS tooling, not a trained Gaussian Splatting result or reconstruction-quality benchmark.

Build Command

source /opt/ros/humble/setup.bash
source install/setup.bash

ros2 run aqua_localization check_3dgs_bag_ready.py \
  --bag datasets/public/tank_dataset/short_test_ros2_with_cameras \
  --dataset "Tank Dataset" \
  --sequence short_test \
  --trajectory-topic /apriltag_slam/GT \
  --allow-manual-intrinsics

ros2 run aqua_localization export_3dgs_pack_pipeline.py \
  --bag datasets/public/tank_dataset/short_test_ros2_with_cameras \
  --dataset "Tank Dataset" \
  --sequence short_test \
  --out /tmp/tank_short_test_3dgs_pack_20frames \
  --force \
  --max-frames 20 \
  --stride 5 \
  --max-time-diff 0.05 \
  --base-from-camera -0.25 -0.45 0.0 0.0 0.0 0.0 1.0 \
  --camera-intrinsics 612 512 655.0 655.0 306.0 256.0 \
  --trajectory-topic /apriltag_slam/GT \
  --format nerfstudio

cd /tmp
zip -r tank_short_test_3dgs_pack_20frames.zip tank_short_test_3dgs_pack_20frames

Tank Intrinsics Note

Tank short_test camera conversions may not include sensor_msgs/CameraInfo. The sample command passes the same stereo intrinsics used by the visual frontend and marks the readiness check as manual-intrinsics aware. If a future bag includes CameraInfo, remove --allow-manual-intrinsics and --camera-intrinsics and let the pipeline read intrinsics from the bag.

Expected Files

tank_short_test_3dgs_pack_20frames/
  README.md
  manifest.json
  pack_index.json
  summary.json
  frames.json
  transforms.json
  images/
    frame_000000.png
    ...

Minimal Checks

python3 -m json.tool /tmp/tank_short_test_3dgs_pack_20frames/summary.json >/dev/null
python3 -m json.tool /tmp/tank_short_test_3dgs_pack_20frames/transforms.json >/dev/null
find /tmp/tank_short_test_3dgs_pack_20frames/images -type f | wc -l

Release Checklist

  1. Build the pack from a camera-enabled public bag.
  2. Run the JSON and image-count checks.
  3. Upload tank_short_test_3dgs_pack_20frames.zip to the next GitHub Release.
  4. Add the Release URL to the 3DGS demo page.
  5. Keep the wording experimental until a trained reconstruction artifact is published.