Skip to page content
SAVRN
Search Plan a project

Dataset · Robotics

SlugTrails

by Yunqian Cheng Head-inthe-Cloud/SlugTrails

SlugTrails is an egocentric floor-plan localization benchmark for large indoor buildings.

Rows—
Configurations—
Size76.5 MB
Licensecc-by-4.0
AccessPublicly accessible
Monthly Downloads10

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.

Data150 files · 73.9 MB
Documentation4 files · 39.4 KB
Other7 files · 2.4 MB
Repository9 files · 53.9 KB
Every file
FileTypeSizeSHA-256
RELEASE.jsonData6.1 KB—
manifests/direct_single_manifest.jsonData143.0 KB—
manifests/direct_sweep_manifest.jsonData1.3 MB—
manifests/finetune_session_split.jsonData2.4 KB—
manifests/manifest_stats.jsonData3.1 KB—
manifests/sequential_stream_manifest.jsonData19.3 MB645f6ec7026a
maps/BE_0/SCENE.jsonData534 B—
maps/BE_0/circulation_meta.jsonData547 B—
maps/BE_0/columns.csvData38.0 KB—
maps/BE_0/doors.csvData8.0 KB—
maps/BE_0/elevators.csvData1.6 KB—
maps/BE_0/flor_other.csvData27.5 KB—
maps/BE_0/handrails.csvData6.9 KB—
maps/BE_0/outline.jsonData3.9 KB—
maps/BE_0/stairs.csvData14.5 KB—
maps/BE_0/wall_column_elevator.csvData77.8 KB—
maps/BE_0/wall_column_elevator_meta.jsonData343 B—
maps/BE_0/walls.csvData98.0 KB—
maps/BE_0/windows.csvData5.1 KB—
maps/BE_1/SCENE.jsonData556 B—
maps/BE_1/circulation_meta.jsonData565 B—
maps/BE_1/columns.csvData42.1 KB—
maps/BE_1/doors.csvData10.7 KB—
maps/BE_1/elevators.csvData1.7 KB—
maps/BE_1/flor_other.csvData13.8 KB—
maps/BE_1/half_walls.csvData8.4 KB—
maps/BE_1/handrails.csvData—
maps/BE_1/outline.jsonData7.1 KB—
maps/BE_1/stairs.csvData24.5 KB—
maps/BE_1/wall_column_elevator.csvData129.7 KB—
maps/BE_1/wall_column_elevator_meta.jsonData369 B—
maps/BE_1/walls.csvData107.6 KB—
maps/BE_1/windows.csvData34.7 KB—
maps/BE_2/SCENE.jsonData556 B—
maps/BE_2/circulation_meta.jsonData549 B—
maps/BE_2/columns.csvData42.0 KB—
maps/BE_2/doors.csvData11.5 KB—
maps/BE_2/elevators.csvData1.7 KB—
maps/BE_2/flor_other.csvData22.6 KB—
maps/BE_2/half_walls.csvData12.2 KB—
maps/BE_2/handrails.csvData—
maps/BE_2/outline.jsonData7.5 KB—
maps/BE_2/stairs.csvData30.7 KB—
maps/BE_2/wall_column_elevator.csvData134.1 KB—
maps/BE_2/wall_column_elevator_meta.jsonData343 B—
maps/BE_2/walls.csvData200.5 KB—
maps/BE_2/windows.csvData40.1 KB—
maps/E2_2/SCENE.jsonData556 B—
maps/E2_2/circulation_meta.jsonData390 B—
maps/E2_2/columns.csvData87.4 KB—
maps/E2_2/doors.csvData7.1 KB—
maps/E2_2/elevators.csvData2.0 KB—
maps/E2_2/flor_other.csvData5.2 KB—
maps/E2_2/half_walls.csvData15.1 KB—
maps/E2_2/handrails.csvData—
maps/E2_2/outline.jsonData2.1 KB—
maps/E2_2/stairs.csvData14.6 KB—
maps/E2_2/wall_column_elevator.csvData114.7 KB—
maps/E2_2/wall_column_elevator_meta.jsonData344 B—
maps/E2_2/walls.csvData108.4 KB—
maps/E2_2/windows.csvData92.6 KB—
maps/E2_3/SCENE.jsonData556 B—
maps/E2_3/circulation_meta.jsonData581 B—
maps/E2_3/columns.csvData43.2 KB—
maps/E2_3/doors.csvData7.6 KB—
maps/E2_3/elevators.csvData2.1 KB—
maps/E2_3/flor_other.csvData5.9 KB—
maps/E2_3/half_walls.csvData14.3 KB—
maps/E2_3/handrails.csvData—
maps/E2_3/outline.jsonData16.4 KB—
maps/E2_3/stairs.csvData5.9 KB—
maps/E2_3/wall_column_elevator.csvData81.1 KB—
maps/E2_3/wall_column_elevator_meta.jsonData343 B—
maps/E2_3/walls.csvData104.6 KB—
maps/E2_3/windows.csvData103.1 KB—
maps/PS_2/SCENE.jsonData556 B—
maps/PS_2/circulation_meta.jsonData563 B—
maps/PS_2/columns.csvData105.6 KB—
maps/PS_2/doors.csvData7.9 KB—
maps/PS_2/elevators.csvData1.2 KB—
maps/PS_2/flor_other.csvData14.4 KB—
maps/PS_2/half_walls.csvData8.9 KB—
maps/PS_2/handrails.csvData—
maps/PS_2/outline.jsonData4.9 KB—
maps/PS_2/stairs.csvData30.2 KB—
maps/PS_2/wall_column_elevator.csvData153.2 KB—
maps/PS_2/wall_column_elevator_meta.jsonData344 B—
maps/PS_2/walls.csvData159.2 KB—
maps/PS_2/windows.csvData62.5 KB—
recordings/BE_0_0/RECORDING.jsonData742 B—
recordings/BE_0_0/alignment/trajectory_alignment_transform.jsonData224 B—
recordings/BE_0_0/gt_aligned/ALIGNMENT.jsonData578 B—
recordings/BE_0_0/gt_aligned/trajectory_tum.txtData932.7 KB—
recordings/BE_0_0/labels/panorama_timestamp_labels.csvData1.7 KB—
recordings/BE_0_0/metadata/camera-rgb_intrinsics_original.jsonData837 B—
recordings/BE_0_0/metadata/camera-rgb_intrinsics_undistorted.jsonData695 B—
recordings/BE_0_0/metadata/metadata.jsonData6.7 KB—
recordings/BE_0_0/mps/closed/POSE_FRAME.jsonData185 B—
recordings/BE_0_0/mps/open/POSE_FRAME.jsonData183 B—
recordings/BE_0_0/mps/open/trajectory_tum.txtData40.9 MB24e652d28ce3
recordings/BE_1_0/RECORDING.jsonData739 B—
recordings/BE_1_0/alignment/trajectory_alignment_transform.jsonData214 B—
recordings/BE_1_0/gt_aligned/ALIGNMENT.jsonData577 B—
recordings/BE_1_0/gt_aligned/trajectory_tum.txtData1.7 MB—
recordings/BE_1_0/labels/panorama_timestamp_labels.csvData3.0 KB—
recordings/BE_1_0/metadata/camera-rgb_intrinsics_original.jsonData837 B—
recordings/BE_1_0/metadata/camera-rgb_intrinsics_undistorted.jsonData695 B—
recordings/BE_1_0/metadata/metadata.jsonData6.6 KB—
recordings/BE_1_0/mps/closed/POSE_FRAME.jsonData185 B—
recordings/BE_1_0/mps/open/POSE_FRAME.jsonData183 B—
recordings/BE_2_0/RECORDING.jsonData742 B—
recordings/BE_2_0/alignment/trajectory_alignment_transform.jsonData212 B—
recordings/BE_2_0/gt_aligned/ALIGNMENT.jsonData578 B—
recordings/BE_2_0/gt_aligned/trajectory_tum.txtData1.6 MB—
recordings/BE_2_0/labels/panorama_timestamp_labels.csvData2.6 KB—
recordings/BE_2_0/metadata/camera-rgb_intrinsics_original.jsonData837 B—
recordings/BE_2_0/metadata/camera-rgb_intrinsics_undistorted.jsonData695 B—
recordings/BE_2_0/metadata/metadata.jsonData6.6 KB—
recordings/BE_2_0/mps/closed/POSE_FRAME.jsonData185 B—
recordings/BE_2_0/mps/open/POSE_FRAME.jsonData183 B—
recordings/E2_2_0/RECORDING.jsonData742 B—
recordings/E2_2_0/alignment/trajectory_alignment_transform.jsonData214 B—
recordings/E2_2_0/gt_aligned/ALIGNMENT.jsonData576 B—
recordings/E2_2_0/gt_aligned/trajectory_tum.txtData2.0 MB—
recordings/E2_2_0/labels/panorama_timestamp_labels.csvData3.2 KB—
recordings/E2_2_0/metadata/camera-rgb_intrinsics_original.jsonData837 B—
recordings/E2_2_0/metadata/camera-rgb_intrinsics_undistorted.jsonData695 B—
recordings/E2_2_0/metadata/metadata.jsonData6.7 KB—
recordings/E2_2_0/mps/closed/POSE_FRAME.jsonData185 B—
recordings/E2_2_0/mps/open/POSE_FRAME.jsonData183 B—
recordings/E2_3_0/RECORDING.jsonData738 B—
recordings/E2_3_0/alignment/trajectory_alignment_transform.jsonData230 B—
recordings/E2_3_0/gt_aligned/ALIGNMENT.jsonData577 B—
recordings/E2_3_0/gt_aligned/trajectory_tum.txtData1.7 MB—
recordings/E2_3_0/labels/panorama_timestamp_labels.csvData3.7 KB—
recordings/E2_3_0/metadata/camera-rgb_intrinsics_original.jsonData837 B—
recordings/E2_3_0/metadata/camera-rgb_intrinsics_undistorted.jsonData695 B—
recordings/E2_3_0/metadata/metadata.jsonData6.6 KB—
recordings/E2_3_0/mps/closed/POSE_FRAME.jsonData185 B—
recordings/E2_3_0/mps/open/POSE_FRAME.jsonData183 B—
recordings/PS_2_0/RECORDING.jsonData743 B—
recordings/PS_2_0/alignment/trajectory_alignment_transform.jsonData227 B—
recordings/PS_2_0/gt_aligned/ALIGNMENT.jsonData578 B—
recordings/PS_2_0/gt_aligned/trajectory_tum.txtData1.7 MB—
recordings/PS_2_0/labels/panorama_timestamp_labels.csvData3.5 KB—
recordings/PS_2_0/metadata/camera-rgb_intrinsics_original.jsonData837 B—
recordings/PS_2_0/metadata/camera-rgb_intrinsics_undistorted.jsonData695 B—
recordings/PS_2_0/metadata/metadata.jsonData6.7 KB—
recordings/PS_2_0/mps/closed/POSE_FRAME.jsonData185 B—
recordings/PS_2_0/mps/open/POSE_FRAME.jsonData183 B—
README.mdDocumentation6.3 KB—
manifests/README.mdDocumentation15.2 KB—
maps/README.mdDocumentation8.4 KB—
recordings/README.mdDocumentation9.4 KB—
CHECKSUMS.sha256Other29.6 KB—
recordings/BE_0_0/gt_aligned/trajectory_positions.npyOther277.9 KBdf77b37c8b19
recordings/BE_0_0/gt_aligned/trajectory_quality_score.npyOther92.7 KBe8b200c15039
recordings/BE_0_0/gt_aligned/trajectory_quaternions.npyOther370.5 KB39bc35f190ac
recordings/BE_0_0/gt_aligned/trajectory_timestamps.npyOther92.7 KBbf113b33baf1
recordings/BE_0_0/gt_aligned/trajectory_transforms.npyOther1.5 MB836cae7b9cfc
recordings/BE_0_0/rgb/camera-rgb_frame_timestamps.npyOther92.1 KBf8045b62a465
.DS_StoreRepository6.1 KB—
.gitattributesRepository2.7 KB—
recordings/.DS_StoreRepository6.1 KB—
recordings/BE_0_0/.DS_StoreRepository8.2 KB—
recordings/BE_1_0/.DS_StoreRepository6.1 KB—
recordings/BE_2_0/.DS_StoreRepository6.1 KB—
recordings/E2_2_0/.DS_StoreRepository6.1 KB—
recordings/E2_3_0/.DS_StoreRepository6.1 KB—
recordings/PS_2_0/.DS_StoreRepository6.1 KB—

License and Download

License
cc-by-4.0
Access
No access gate
Download from Yunqian Cheng

Released by Yunqian Cheng through its official repository on Hugging Face. Read the license.