Note

This is a Hugging Face dataset. For large datasets, ensure huggingface_hub>=1.1.3 to avoid rate limits. Learn more in the Hugging Face integration docs.

Hugging Face

Hilti x Trimble SLAM Challenge 2026 → FiftyOne (Native Multimodal MCAP)#

preview

The Hilti x Trimble SLAM Challenge 2026 recordings, converted from ROS 2 bags to native multimodal MCAP episodes.

The fourth Hilti challenge drops the multi-sensor rig of the earlier years for a single consumer 360 camera, and adds the thing none of the others have: the building’s own floor plans. A run is solved twice over, once as plain SLAM in whatever frame the system likes, and once as localization in the coordinates of the drawing the building was made from.

The recordings are an Insta360 ONE RS 1-Inch 360 Edition: two roughly 200-degree fisheye lenses at 1472x1440 and 30 Hz, back to back, with a 1000 Hz inertial unit inside the body. The lenses are published as they were recorded rather than stitched into a panorama, since the two optical centres are 40 mm apart and stitching them invents parallax that is not there.

30 runs over 1h 20m, across 10 floors of one active construction site recorded on 8 dates between 2025-05-05 and 2025-12-03. 8 of those floors were walked more than once, which is what makes the revisit and change cases work.

The site was active during recording and the operator carrying the rig appears in the rear lens throughout. The recordings are republished here unchanged from a public release.

Installation#

pip install fiftyone

Usage#

import fiftyone as fo
import fiftyone.utils.huggingface as fouh

dataset = fouh.load_from_hub(
    "Voxel51/Hilti-Trimble-SLAM-Challenge-2026",
    name="Hilti-Trimble-SLAM-Challenge-2026",
    persistent=True,
)
fo.launch_app(dataset)

Every run on one floor, in the order they were recorded:

view = dataset.match({"floor": "floor_UG1"}).sort_by("recorded")
fo.launch_app(dataset, view=view)

Reference trajectories and floor plans#

Every run has a continuous 6-DoF reference trajectory, solved by a LiDAR-inertial mapping system carried rigidly alongside the camera and then transformed onto it. It gives the pose of cam0 in the mapping frame. The LiDAR starts recording a little after the camera does, so the reference begins a few seconds into each run rather than at its first frame. The raw LiDAR is not part of the release.

The building’s floor plans ship alongside the episodes as vector drawings, rendered images, and binary occupancy masks in two variants, one treating windows as openings and one not. Each episode names the plan its floor belongs to and carries a measured starting pose in that plan’s coordinates, which is the prior the localization task is given.

What you get#

Each episode carries:

  • /cam0 and /cam1, the front and rear fisheye lenses at 1472x1440, as foxglove.CompressedImage

  • /cam0-calibration and /cam1-calibration, the intrinsics, as foxglove.CameraCalibration

  • /imu.plot, three-axis acceleration and angular rate at 1000 Hz

  • /ground-truth-pose, the reference trajectory, as foxglove.PoseInFrame in the map frame

  • /ground-truth.plot, the same trajectory as a timeline track

  • /floorplan-pose, the measured starting pose in the floor plan’s own frame, as foxglove.PoseInFrame

  • /tf, both lenses against the inertial frame, as foxglove.FrameTransform

  • /sequence, naming the run

Across the whole set that comes to 290,250 camera frames, 4,859,264 inertial samples and 142,423 reference poses.

Sequence

Floor

Recorded

Frames

Reference

Plan

Duration

floor_UG2_2025-12-02_run_1

UG2

2025-12-02

13,552

6,687

floor_UG2.png

3m 46s

floor_UG1_2025-05-19_run_1

UG1

2025-05-19

12,366

6,159

floor_UG1.png

3m 26s

floor_UG1_2025-06-18_run_1

UG1

2025-06-18

10,140

4,971

floor_UG1.png

2m 49s

floor_UG1_2025-10-16_run_1

UG1

2025-10-16

12,344

6,124

floor_UG1.png

3m 26s

floor_UG1_2025-12-02_run_1

UG1

2025-12-02

15,438

7,636

floor_UG1.png

4m 18s

floor_UG1_2025-12-02_run_2

UG1

2025-12-02

13,360

6,585

floor_UG1.png

3m 43s

floor_UG1_2025-12-03_run_1

UG1

2025-12-03

8,308

4,030

floor_UG1.png

2m 19s

floor_EG_2025-10-16_run_1

EG

2025-10-16

14,712

7,280

floor_EG.png

4m 05s

floor_EG_2025-12-02_run_1

EG

2025-12-02

7,762

3,788

floor_EG.png

2m 09s

floor_EG_2025-12-02_run_2

EG

2025-12-02

9,902

4,872

floor_EG.png

2m 45s

floor_1_2025-05-05_run_1

1

2025-05-05

8,076

3,923

floor_1.png

2m 15s

floor_1_2025-07-07_run_1

1

2025-07-07

8,264

4,007

floor_1.png

2m 18s

floor_1_2025-12-02_run_1

1

2025-12-02

16,658

8,283

floor_1.png

4m 38s

floor_2_2025-05-05_run_1

2

2025-05-05

11,270

5,594

floor_2.png

3m 08s

floor_2_2025-10-28_run_1

2

2025-10-28

6,360

3,067

floor_2.png

1m 46s

floor_2_2025-10-28_run_2

2

2025-10-28

5,392

2,569

floor_2.png

1m 30s

floor_2_2025-12-02_run_1

2

2025-12-02

8,980

4,309

floor_2.png

2m 30s

floor_2_2025-12-03_run_1

2

2025-12-03

9,168

4,492

floor_2.png

2m 33s

floor_3_2025-05-19_run_1

3

2025-05-19

7,092

3,464

floor_3.png

1m 58s

floor_3_2025-12-02_run_1

3

2025-12-02

8,130

3,977

floor_3.png

2m 16s

floor_4_2025-05-19_run_1

4

2025-05-19

5,576

2,755

floor_4.png

1m 33s

floor_4_2025-12-02_run_1

4

2025-12-02

11,730

5,797

floor_4.png

3m 16s

floor_5_2025-12-02_run_1

5

2025-12-02

9,834

4,810

floor_5.png

2m 44s

floor_6_2025-06-18_run_1

6

2025-06-18

4,414

2,078

floor_6.png

1m 14s

floor_6_2025-07-07_run_1

6

2025-07-07

4,566

2,189

floor_6.png

1m 16s

floor_6_2025-12-02_run_1

6

2025-12-02

10,434

5,118

floor_6.png

2m 54s

floor_6_2025-12-02_run_2

6

2025-12-02

7,640

3,734

floor_6.png

2m 07s

floor_7_2025-12-02_run_1

7

2025-12-02

7,280

3,533

floor_7.png

2m 01s

floor_7_2025-12-02_run_2

7

2025-12-02

9,404

4,648

floor_7.png

2m 37s

floor_7_2025-12-03_run_1

7

2025-12-03

12,098

5,944

floor_7.png

3m 22s

Episodes carry the fields sequence, floor, recorded, run, cameras, floorplan, has_floorplan_pose, num_camera_frames, num_imu_samples, num_ground_truth_poses and duration.

Notes on the conversion#

The source frames are already compressed, so their bytes are carried through rather than decoded and encoded again. Nothing is resampled: both lenses keep their 30 Hz and the inertial unit its 1000 Hz.

The lenses are fisheye and are published under the equidistant model, fitted by the release to the extended unified camera model it calibrated them with. The release publishes both fits; the one carried here is the one a pinhole-equidistant pipeline can read.

/tf is derived from the release’s Kalibr camera chain, which gives each lens against the inertial frame. Inverting it recovers the rig: the two optical centres 40 mm apart and 179.6 degrees opposed, which is the camera’s physical geometry.

The bags carry a session clock rather than wall time, starting near 9,999 seconds, and the reference trajectories and floor-plan poses are on that same clock. Timestamps are left as the release wrote them so they still line up; the calendar date of each run is on the episode as recorded.

The reference trajectory is in the mapping system’s own frame and the floor-plan pose is in the building drawing’s. Neither has a measured relation to the other or to the rig, since recovering them is what the challenge asks, so they sit in their own frames rather than hanging off the rig tree.

The release’s floor plans, its two Kalibr chains and the table of starting poses are republished at the repo root. The calibration recordings the chains were solved from are not.

License & attribution#

The source dataset is released under CC BY-NC-SA 3.0, and this conversion is distributed under the same license. Use is limited to non-commercial purposes, attribution is required, and adaptations must be distributed under the same or a compatible license.

Changes from the source: conversion from ROS 2 bags to the FiftyOne MCAP flavor, and the reference trajectories, floor-plan poses, camera intrinsics and calibrated frame tree carried as streams alongside the episodes. The frames themselves are the release’s own bytes.

Citation#

@misc{hiltitrimble2026,
  title  = {Hilti-Trimble-Oxford Dataset: 360 Visual-Inertial Benchmark with Floor Plan Priors for SLAM and Localization},
  author = {{Hilti Research} and {Trimble} and {Dynamic Robot Systems Group, University of Oxford}},
  year   = {2026},
  note   = {https://arxiv.org/abs/2607.06464}
}