SlugTrails is an egocentric floor-plan localization benchmark for large indoor buildings.
Dataset Card
By Yunqian Cheng, published under cc-by-4.0, revision 574616328cbf.
SlugTrails 1.0
SlugTrails is an egocentric floor-plan localization benchmark for large indoor buildings.
This Hugging Face package (slugtrails-1.0) is the canonical public data blob: anonymized RGB, Project Aria MPS trajectories, floor-plan–aligned ground truth, CAD-derived maps, and official evaluation / finetune splits.
| Release id | slugtrails-1.0 (package 1.0.0) |
| License | CC BY 4.0 |
| Code & tools | github.com/Head-inthe-Cloud/SlugTrails |
| Paper | Cheng & Manduchi — SlugTrails: An Egocentric Benchmark for Floor Plan Localization in Large Buildings (2026) |
manifests/ holds our official splits for the paper protocol (SHA-256 digests in RELEASE.json). You may define your own sampling if you prefer; numbers comparable to the paper should use these manifests.
What’s inside
- 3 campus buildings / 6 floors — floor-plan outline 22 089 m², circulation space 5317 m² (same figures as the paper)
- 6 Aria sessions (~30 Hz RGB); trajectory length ≈ 1.80 km (≈ 1.57 km excluding panorama spins)
- CAD floor plans with semantic classes + outline + circulation masks (meters)
- MPS open-loop and closed-loop device trajectories (Meta export)
- Factor-graph GT (
gt_aligned/) in the same meter frame as the maps - Official protocols: single-frame, multi-view sweep, walking sequence + finetune session split
Not in 1.0: raw VRS, SLAM-camera videos, MoGe depths, extra non-protocol sessions.
Quick layout
slugtrails-1.0/
├── README.md ← this card
├── RELEASE.json
├── CHECKSUMS.sha256
├── maps/<floor_stem>/ ← walls, doors, windows, … outline, circulation
├── manifests/ ← official eval / finetune splits
└── recordings/<recording_id>/
├── RECORDING.json
├── rgb/ ← anonymized camera-rgb_undistorted.mp4 + timestamps
├── mps/{closed,open}/
├── gt_aligned/ ← canonical SE(3) GT @ ~30 Hz (eval lookup)
├── labels/
├── alignment/ ← coarse SE(2) prior to FG
└── metadata/ ← sanitized Aria metadata + RGB intrinsics
Per-folder docs: maps/README.md · manifests/README.md · recordings/README.md.
Protocol recordings
| Recording | Floor map |
|---|---|
BE_0_0 |
maps/BE_0/ |
BE_1_0 |
maps/BE_1/ |
BE_2_0 |
maps/BE_2/ |
E2_2_0 |
maps/E2_2/ |
E2_3_0 |
maps/E2_3/ |
PS_2_0 |
maps/PS_2/ |
Leave-out roles (finetune / paper): ID test session BE_2_0, OOD test session PS_2_0 — see manifests/finetune_session_split.json.
Coordinate frames (read this once)
| Asset | Frame |
|---|---|
maps/* |
Floor-plan meters; origin = CAD footprint bottom-left (after unit scale). Not geographic north unless the DXF already was. |
gt_aligned/ |
Same map frame (factor-graph alignment of MPS closed-loop → plan). |
mps/closed, mps/open |
Meta MPS device poses in MPS frames — not map meters. |
| Timestamps | Aria device nanoseconds across RGB, MPS, labels, GT. |
Eval scoring looks up nearest gt_aligned/ pose by timestamp_ns.
Official evaluation protocols
| Manifest | Task | Size (this release) |
|---|---|---|
direct_single_manifest.json |
One walking RGB → SE(2) | 1296 samples @ 1 Hz (pano / pitch filters) |
direct_sweep_manifest.json |
Stationary multi-view spin → one pose | 2880 sweeps (180°/270°/360° tiers) |
sequential_stream_manifest.json |
Walking stream + relative motion | 600 sequences / 26400 frame rows @ 2 Hz, seed 42 |
finetune_session_split.json |
Train / ID / OOD session carve | roles into the three tasks |
SHA-256 digests for these files are listed in RELEASE.json (also covered by CHECKSUMS.sha256).
Privacy / anonymization
Public RGB was anonymized before release. Faces / heads were detected with SAM3, then manually inspected and blurred (elliptical Gaussian blur baked into rgb/camera-rgb_undistorted.mp4). Working label sidecars are not shipped.
We also checked that individual name tags do not appear as readable text, along with room numbers — under our QA, all such text is too blurry to read.
Although we have done our best to anonymize, if you need additional anonymization, contact the corresponding author at [email protected].
Capture is in public / circulation spaces of campus buildings.
Verify download
From a checkout of the code tools (public GitHub) with this tree as the data root:
# Example: confirm RELEASE.json + manifest digests (API may take a data root flag —
# see the public repo README for the exact verify_release invocation once published.)
sha256sum -c CHECKSUMS.sha256 | tail
Spot-check one recording: open recordings/BE_2_0/rgb/camera-rgb_undistorted.mp4, load gt_aligned/trajectory_positions.npy, confirm RECORDING.json → anonymization.status == "done".
Citation
If you use SlugTrails, please cite:
@inproceedings{Cheng2026SlugTrailsAE,
title={SlugTrails: An Egocentric Benchmark for Floor Plan Localization in Large Buildings},
author={Yunqian Cheng and Roberto Manduchi},
year={2026}
}
Also cite Project Aria / MPS and any baseline methods you evaluate under their own licenses.
Contact
Yunqian Cheng ([email protected]) · Roberto Manduchi ([email protected])
UC Santa Cruz — Computer Science and Engineering
Issues / data questions: GitHub Issues on the public repo.
Details
- Repository
- Head-inthe-Cloud/SlugTrails
- Publisher
- Yunqian Cheng
- Task category
- Robotics
- Tags
- indoor-localization, floor-plan, egocentric
- Size category
- 10GB<n<100GB
- Languages
- en
- Revision
- 574616328cbf23da61c3a23a58357c65a9da4cae
- Last updated
- 2026-10-12
Files
170 files, 76.5 MB in total.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| RELEASE.json | Data | 6.1 KB | — |
| manifests/direct_single_manifest.json | Data | 143.0 KB | — |
| manifests/direct_sweep_manifest.json | Data | 1.3 MB | — |
| manifests/finetune_session_split.json | Data | 2.4 KB | — |
| manifests/manifest_stats.json | Data | 3.1 KB | — |
| manifests/sequential_stream_manifest.json | Data | 19.3 MB | 645f6ec7026a |
| maps/BE_0/SCENE.json | Data | 534 B | — |
| maps/BE_0/circulation_meta.json | Data | 547 B | — |
| maps/BE_0/columns.csv | Data | 38.0 KB | — |
| maps/BE_0/doors.csv | Data | 8.0 KB | — |
| maps/BE_0/elevators.csv | Data | 1.6 KB | — |
| maps/BE_0/flor_other.csv | Data | 27.5 KB | — |
| maps/BE_0/handrails.csv | Data | 6.9 KB | — |
| maps/BE_0/outline.json | Data | 3.9 KB | — |
| maps/BE_0/stairs.csv | Data | 14.5 KB | — |
| maps/BE_0/wall_column_elevator.csv | Data | 77.8 KB | — |
| maps/BE_0/wall_column_elevator_meta.json | Data | 343 B | — |
| maps/BE_0/walls.csv | Data | 98.0 KB | — |
| maps/BE_0/windows.csv | Data | 5.1 KB | — |
| maps/BE_1/SCENE.json | Data | 556 B | — |
| maps/BE_1/circulation_meta.json | Data | 565 B | — |
| maps/BE_1/columns.csv | Data | 42.1 KB | — |
| maps/BE_1/doors.csv | Data | 10.7 KB | — |
| maps/BE_1/elevators.csv | Data | 1.7 KB | — |
| maps/BE_1/flor_other.csv | Data | 13.8 KB | — |
| maps/BE_1/half_walls.csv | Data | 8.4 KB | — |
| maps/BE_1/handrails.csv | Data | — | |
| maps/BE_1/outline.json | Data | 7.1 KB | — |
| maps/BE_1/stairs.csv | Data | 24.5 KB | — |
| maps/BE_1/wall_column_elevator.csv | Data | 129.7 KB | — |
| maps/BE_1/wall_column_elevator_meta.json | Data | 369 B | — |
| maps/BE_1/walls.csv | Data | 107.6 KB | — |
| maps/BE_1/windows.csv | Data | 34.7 KB | — |
| maps/BE_2/SCENE.json | Data | 556 B | — |
| maps/BE_2/circulation_meta.json | Data | 549 B | — |
| maps/BE_2/columns.csv | Data | 42.0 KB | — |
| maps/BE_2/doors.csv | Data | 11.5 KB | — |
| maps/BE_2/elevators.csv | Data | 1.7 KB | — |
| maps/BE_2/flor_other.csv | Data | 22.6 KB | — |
| maps/BE_2/half_walls.csv | Data | 12.2 KB | — |
| maps/BE_2/handrails.csv | Data | — | |
| maps/BE_2/outline.json | Data | 7.5 KB | — |
| maps/BE_2/stairs.csv | Data | 30.7 KB | — |
| maps/BE_2/wall_column_elevator.csv | Data | 134.1 KB | — |
| maps/BE_2/wall_column_elevator_meta.json | Data | 343 B | — |
| maps/BE_2/walls.csv | Data | 200.5 KB | — |
| maps/BE_2/windows.csv | Data | 40.1 KB | — |
| maps/E2_2/SCENE.json | Data | 556 B | — |
| maps/E2_2/circulation_meta.json | Data | 390 B | — |
| maps/E2_2/columns.csv | Data | 87.4 KB | — |
| maps/E2_2/doors.csv | Data | 7.1 KB | — |
| maps/E2_2/elevators.csv | Data | 2.0 KB | — |
| maps/E2_2/flor_other.csv | Data | 5.2 KB | — |
| maps/E2_2/half_walls.csv | Data | 15.1 KB | — |
| maps/E2_2/handrails.csv | Data | — | |
| maps/E2_2/outline.json | Data | 2.1 KB | — |
| maps/E2_2/stairs.csv | Data | 14.6 KB | — |
| maps/E2_2/wall_column_elevator.csv | Data | 114.7 KB | — |
| maps/E2_2/wall_column_elevator_meta.json | Data | 344 B | — |
| maps/E2_2/walls.csv | Data | 108.4 KB | — |
| maps/E2_2/windows.csv | Data | 92.6 KB | — |
| maps/E2_3/SCENE.json | Data | 556 B | — |
| maps/E2_3/circulation_meta.json | Data | 581 B | — |
| maps/E2_3/columns.csv | Data | 43.2 KB | — |
| maps/E2_3/doors.csv | Data | 7.6 KB | — |
| maps/E2_3/elevators.csv | Data | 2.1 KB | — |
| maps/E2_3/flor_other.csv | Data | 5.9 KB | — |
| maps/E2_3/half_walls.csv | Data | 14.3 KB | — |
| maps/E2_3/handrails.csv | Data | — | |
| maps/E2_3/outline.json | Data | 16.4 KB | — |
| maps/E2_3/stairs.csv | Data | 5.9 KB | — |
| maps/E2_3/wall_column_elevator.csv | Data | 81.1 KB | — |
| maps/E2_3/wall_column_elevator_meta.json | Data | 343 B | — |
| maps/E2_3/walls.csv | Data | 104.6 KB | — |
| maps/E2_3/windows.csv | Data | 103.1 KB | — |
| maps/PS_2/SCENE.json | Data | 556 B | — |
| maps/PS_2/circulation_meta.json | Data | 563 B | — |
| maps/PS_2/columns.csv | Data | 105.6 KB | — |
| maps/PS_2/doors.csv | Data | 7.9 KB | — |
| maps/PS_2/elevators.csv | Data | 1.2 KB | — |
| maps/PS_2/flor_other.csv | Data | 14.4 KB | — |
| maps/PS_2/half_walls.csv | Data | 8.9 KB | — |
| maps/PS_2/handrails.csv | Data | — | |
| maps/PS_2/outline.json | Data | 4.9 KB | — |
| maps/PS_2/stairs.csv | Data | 30.2 KB | — |
| maps/PS_2/wall_column_elevator.csv | Data | 153.2 KB | — |
| maps/PS_2/wall_column_elevator_meta.json | Data | 344 B | — |
| maps/PS_2/walls.csv | Data | 159.2 KB | — |
| maps/PS_2/windows.csv | Data | 62.5 KB | — |
| recordings/BE_0_0/RECORDING.json | Data | 742 B | — |
| recordings/BE_0_0/alignment/trajectory_alignment_transform.json | Data | 224 B | — |
| recordings/BE_0_0/gt_aligned/ALIGNMENT.json | Data | 578 B | — |
| recordings/BE_0_0/gt_aligned/trajectory_tum.txt | Data | 932.7 KB | — |
| recordings/BE_0_0/labels/panorama_timestamp_labels.csv | Data | 1.7 KB | — |
| recordings/BE_0_0/metadata/camera-rgb_intrinsics_original.json | Data | 837 B | — |
| recordings/BE_0_0/metadata/camera-rgb_intrinsics_undistorted.json | Data | 695 B | — |
| recordings/BE_0_0/metadata/metadata.json | Data | 6.7 KB | — |
| recordings/BE_0_0/mps/closed/POSE_FRAME.json | Data | 185 B | — |
| recordings/BE_0_0/mps/open/POSE_FRAME.json | Data | 183 B | — |
| recordings/BE_0_0/mps/open/trajectory_tum.txt | Data | 40.9 MB | 24e652d28ce3 |
| recordings/BE_1_0/RECORDING.json | Data | 739 B | — |
| recordings/BE_1_0/alignment/trajectory_alignment_transform.json | Data | 214 B | — |
| recordings/BE_1_0/gt_aligned/ALIGNMENT.json | Data | 577 B | — |
| recordings/BE_1_0/gt_aligned/trajectory_tum.txt | Data | 1.7 MB | — |
| recordings/BE_1_0/labels/panorama_timestamp_labels.csv | Data | 3.0 KB | — |
| recordings/BE_1_0/metadata/camera-rgb_intrinsics_original.json | Data | 837 B | — |
| recordings/BE_1_0/metadata/camera-rgb_intrinsics_undistorted.json | Data | 695 B | — |
| recordings/BE_1_0/metadata/metadata.json | Data | 6.6 KB | — |
| recordings/BE_1_0/mps/closed/POSE_FRAME.json | Data | 185 B | — |
| recordings/BE_1_0/mps/open/POSE_FRAME.json | Data | 183 B | — |
| recordings/BE_2_0/RECORDING.json | Data | 742 B | — |
| recordings/BE_2_0/alignment/trajectory_alignment_transform.json | Data | 212 B | — |
| recordings/BE_2_0/gt_aligned/ALIGNMENT.json | Data | 578 B | — |
| recordings/BE_2_0/gt_aligned/trajectory_tum.txt | Data | 1.6 MB | — |
| recordings/BE_2_0/labels/panorama_timestamp_labels.csv | Data | 2.6 KB | — |
| recordings/BE_2_0/metadata/camera-rgb_intrinsics_original.json | Data | 837 B | — |
| recordings/BE_2_0/metadata/camera-rgb_intrinsics_undistorted.json | Data | 695 B | — |
| recordings/BE_2_0/metadata/metadata.json | Data | 6.6 KB | — |
| recordings/BE_2_0/mps/closed/POSE_FRAME.json | Data | 185 B | — |
| recordings/BE_2_0/mps/open/POSE_FRAME.json | Data | 183 B | — |
| recordings/E2_2_0/RECORDING.json | Data | 742 B | — |
| recordings/E2_2_0/alignment/trajectory_alignment_transform.json | Data | 214 B | — |
| recordings/E2_2_0/gt_aligned/ALIGNMENT.json | Data | 576 B | — |
| recordings/E2_2_0/gt_aligned/trajectory_tum.txt | Data | 2.0 MB | — |
| recordings/E2_2_0/labels/panorama_timestamp_labels.csv | Data | 3.2 KB | — |
| recordings/E2_2_0/metadata/camera-rgb_intrinsics_original.json | Data | 837 B | — |
| recordings/E2_2_0/metadata/camera-rgb_intrinsics_undistorted.json | Data | 695 B | — |
| recordings/E2_2_0/metadata/metadata.json | Data | 6.7 KB | — |
| recordings/E2_2_0/mps/closed/POSE_FRAME.json | Data | 185 B | — |
| recordings/E2_2_0/mps/open/POSE_FRAME.json | Data | 183 B | — |
| recordings/E2_3_0/RECORDING.json | Data | 738 B | — |
| recordings/E2_3_0/alignment/trajectory_alignment_transform.json | Data | 230 B | — |
| recordings/E2_3_0/gt_aligned/ALIGNMENT.json | Data | 577 B | — |
| recordings/E2_3_0/gt_aligned/trajectory_tum.txt | Data | 1.7 MB | — |
| recordings/E2_3_0/labels/panorama_timestamp_labels.csv | Data | 3.7 KB | — |
| recordings/E2_3_0/metadata/camera-rgb_intrinsics_original.json | Data | 837 B | — |
| recordings/E2_3_0/metadata/camera-rgb_intrinsics_undistorted.json | Data | 695 B | — |
| recordings/E2_3_0/metadata/metadata.json | Data | 6.6 KB | — |
| recordings/E2_3_0/mps/closed/POSE_FRAME.json | Data | 185 B | — |
| recordings/E2_3_0/mps/open/POSE_FRAME.json | Data | 183 B | — |
| recordings/PS_2_0/RECORDING.json | Data | 743 B | — |
| recordings/PS_2_0/alignment/trajectory_alignment_transform.json | Data | 227 B | — |
| recordings/PS_2_0/gt_aligned/ALIGNMENT.json | Data | 578 B | — |
| recordings/PS_2_0/gt_aligned/trajectory_tum.txt | Data | 1.7 MB | — |
| recordings/PS_2_0/labels/panorama_timestamp_labels.csv | Data | 3.5 KB | — |
| recordings/PS_2_0/metadata/camera-rgb_intrinsics_original.json | Data | 837 B | — |
| recordings/PS_2_0/metadata/camera-rgb_intrinsics_undistorted.json | Data | 695 B | — |
| recordings/PS_2_0/metadata/metadata.json | Data | 6.7 KB | — |
| recordings/PS_2_0/mps/closed/POSE_FRAME.json | Data | 185 B | — |
| recordings/PS_2_0/mps/open/POSE_FRAME.json | Data | 183 B | — |
| README.md | Documentation | 6.3 KB | — |
| manifests/README.md | Documentation | 15.2 KB | — |
| maps/README.md | Documentation | 8.4 KB | — |
| recordings/README.md | Documentation | 9.4 KB | — |
| CHECKSUMS.sha256 | Other | 29.6 KB | — |
| recordings/BE_0_0/gt_aligned/trajectory_positions.npy | Other | 277.9 KB | df77b37c8b19 |
| recordings/BE_0_0/gt_aligned/trajectory_quality_score.npy | Other | 92.7 KB | e8b200c15039 |
| recordings/BE_0_0/gt_aligned/trajectory_quaternions.npy | Other | 370.5 KB | 39bc35f190ac |
| recordings/BE_0_0/gt_aligned/trajectory_timestamps.npy | Other | 92.7 KB | bf113b33baf1 |
| recordings/BE_0_0/gt_aligned/trajectory_transforms.npy | Other | 1.5 MB | 836cae7b9cfc |
| recordings/BE_0_0/rgb/camera-rgb_frame_timestamps.npy | Other | 92.1 KB | f8045b62a465 |
| .DS_Store | Repository | 6.1 KB | — |
| .gitattributes | Repository | 2.7 KB | — |
| recordings/.DS_Store | Repository | 6.1 KB | — |
| recordings/BE_0_0/.DS_Store | Repository | 8.2 KB | — |
| recordings/BE_1_0/.DS_Store | Repository | 6.1 KB | — |
| recordings/BE_2_0/.DS_Store | Repository | 6.1 KB | — |
| recordings/E2_2_0/.DS_Store | Repository | 6.1 KB | — |
| recordings/E2_3_0/.DS_Store | Repository | 6.1 KB | — |
| recordings/PS_2_0/.DS_Store | Repository | 6.1 KB | — |
License and Download
- License
- cc-by-4.0
- Access
- No access gate
Released by Yunqian Cheng through its official repository on Hugging Face. Read the license.