Hilti x Trimble SLAM Challenge 2026 in FiftyOne: One Anchor Gets You to the Door, Not the Route
Oct 7, 2026
•
8 min read
Author
Adonai Vera
Adonai Vera is a Machine Learning Engineer & DevRel at Voxel51 with over 7 years of experience building computer vision and machine learning models using TensorFlow, Docker, and OpenCV. Adonai started as a software developer, moved into AI, led teams, and served as CTO. Today, he connect code and community to build open, production-ready AI — making technology simple, accessible, and reliable. LinkedIn | GitHub
FiftyOne's new Hilti x Trimble SLAM Challenge 2026 zoo dataset walks the same construction-site floor on eight different dates. We anchored each walk to the building's own floor plan using nothing but its one measured starting pose, and checked whether that single anchor is enough to bring repeat visits back into registration.
The Hilti x Trimble SLAM Challenge 2026: a SLAM benchmark that ships its own floor plans
FiftyOne's zoo quietly picked up two new Hilti simultaneous localization and mapping (SLAM) benchmarks this release: the original 2021 challenge and a new 2026 edition run with Trimble and the University of Oxford. The 2026 edition drops the dense five-camera, two-LiDAR rig of the earlier years for something much simpler: a single consumer 360 camera and the building's own architectural floor plans. Thirty runs cover ten floors of one active construction site, recorded on eight dates between May and December 2025. Eight of those floors were walked more than once, which is what makes a revisit comparison possible at all.
Every run carries a continuous reference trajectory from a LiDAR-inertial rig carried alongside the camera, in that run's own arbitrary mapping frame, plus one measured starting pose in the floor plan's own coordinates. That single pose is the only thing tying a run's trajectory to the building's drawing.
The rig itself is 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 two optical centres sit 40 millimeters apart and 179.6 degrees opposed, recovered from the release's own Kalibr camera chain. The frames ship exactly as recorded, published under the equidistant model rather than stitched into a single panorama, since stitching two lenses that far apart invents parallax that was never physically there. This is a deliberately cheaper and simpler rig than the five-camera, two-LiDAR setup the 2021 challenge used, which is itself a finding worth sitting with: the newer, harder benchmark (floor-plan localization, not just SLAM) chose less sensing, not more.
Key takeaways
The Hilti x Trimble SLAM Challenge 2026 dataset in the FiftyOne Dataset Zoo covers 30 runs across 10 floors of one active construction site, recorded on eight dates between May and December 2025 with a single consumer 360 camera.
Each Hilti x Trimble SLAM Challenge 2026 run ships one measured floor-plan pose, and that single pose is the only link between the run's SLAM trajectory and the building's floor plan.
On floor_6 of the Hilti x Trimble SLAM Challenge 2026, anchoring each run to the floor plan with one rigid transform left same-day endpoints 1.05 meters apart and cross-date endpoints 5.9 meters apart on average.
Whole-path chamfer distance between Hilti x Trimble SLAM Challenge 2026 floor_6 runs was about 4 meters for both same-day and cross-date pairs. Agreeing endpoints after single-anchor registration do not mean the walked routes agree.
To evaluate single-anchor registration on any repeat-visit dataset, report an endpoint distance, a whole-path distance such as chamfer or Hausdorff, and the sample size.
Is one anchor point enough to register a SLAM trajectory to a floor plan?
A floor plan is a shared, persistent coordinate system. A SLAM trajectory is not: it lives in whatever frame the system happened to start in that day. The obvious way to connect the two, when all you have is one matched pose, is a single rigid transform: rotate and translate the whole trajectory so its first point lands exactly on the floor plan's starting pose, then trust the rest of the path to follow. The rest of this post is one worked example of what that actually buys you, and what it does not, across four real walks of the same floor.
Four visits to the same floor, six months apart
We picked floor_6, the smallest of the revisited floors by total data size: four runs recorded on 2025-06-18, 2025-07-07, and twice on 2025-12-02, loaded directly into FiftyOne as native multimodal MCAP episodes. Each episode carries the front and rear fisheye lenses (cam0, cam1), 1000 Hz IMU, and two pose streams: a continuous ground-truth-pose in the run's own mapping frame, and a single floorplan-pose, the measured starting position and orientation in the building drawing's coordinates.
The four floor_6 episodes in FiftyOne's grid, each a native MCAP recording of a 360 camera's two fisheye lenses through the same active construction floor.
Opening one episode in the real multimodal viewer shows exactly what the challenge publishes: both fisheye lenses, unrectified and unstitched, plus the 3D panel ready to plot whichever pose stream you toggle on.
cam0 (front) and cam1 (rear) of floor_6_2025-06-18_run_1. The rear lens carries the operator who walked the rig, a known property of this release.
Pressing play draws the run's own ground-truth-pose live in the 3D panel, in its own mapping frame, while both lenses advance in sync.
The reference trajectory building up live as floor_6_2025-06-18_run_1 plays, alongside both real fisheye feeds.
To anchor a run, we read its first ground-truth-pose and its one floorplan-pose directly out of the .fo.mcap file, compute the single rigid rotation and translation that carries the first onto the second, and apply that one transform to every pose in the run. No further correction, no re-anchoring partway through. That is the entire registration a one-point anchor can give you. The whole extraction is a straight read of the MCAP channels FiftyOne already decodes for the viewer, no model and no SLAM solver involved:
from mcap.reader import make_reader
from mcap_protobuf.decoder import DecoderFactory
from scipy.spatial.transform import Rotation
def read_poses(mcap_path, topic):
with open(mcap_path, 'rb') as f:
reader = make_reader(f, decoder_factories=[DecoderFactory()])
for _, _, message, proto_msg in reader.iter_decoded_messages([topic]):
p, q = proto_msg.pose.position, proto_msg.pose.orientation
yield message.log_time * 1e-9, (p.x, p.y, p.z), (q.x, q.y, q.z, q.w)
# anchor: rotate/translate the run's own frame onto the floor-plan pose
R = (Rotation.from_quat(floorplan_quat) *
Rotation.from_quat(first_gt_quat).inv()).as_matrix()
t = floorplan_pos - R @ first_gt_pos
What we measured: endpoint distance vs. whole-path chamfer distance
Across the 4 floor_6 runs we checked every pair (6 pairs total): one pair recorded on the same day (2025-12-02, run 1 vs. run 2), and five pairs spanning 19 to 167 days. For each pair we measured three things after anchoring both runs to the floor plan: how far apart their two anchor points sit, how far apart they end up, and how well their whole walked paths overlap as shapes (a symmetric nearest-point, or chamfer, distance).
All four anchors (circles) land within about 10 meters of each other, but the walked loops diverge heavily. The 12-02 run 1 walk alone covers more of the floor than the other three combined.
The same-day pair ends up 1.05 meters apart, a tight number for two independent walks of an active construction floor. The cross-date pairs end up 5.9 meters apart on average, worst case 9.0 meters, for the pair recorded only 19 days apart, not the pair recorded 167 days apart. Endpoint agreement does not scale with elapsed time at all in this sample; it is dominated by where the operator happened to start and stop walking that day, which a single anchor point cannot separate from genuine drift.
Endpoints agree far better same-day than across dates. Whole-path shape agreement does not show that same gap.
The whole-path chamfer distance tells a different story, and this is the finding that surprised us: the same-day pair's paths disagree by 4.30 meters on average, essentially the same as the cross-date mean of 4.01 meters. Same-day repeatability, which looked excellent by endpoint, does not carry over to the shape of the route at all. The two 2025-12-02 runs started and ended close together but walked different loops of the floor in between: 210.6 meters of path for run 1 against 145.8 meters for run 2. A single anchor fixes one point in space. It says nothing about the corridor you actually took.
We also checked the chamfer distance in each direction separately (every point of run 1 to its nearest point in run 2, and the reverse), in case the shorter walk simply sat inside the longer one's footprint: 4.35 meters one way, 4.24 meters the other. They are close to each other, which rules out a clean nesting relationship. These were not two versions of the same loop at different lengths; they were two different loops through the same room that happened to start and stop near the same door.
Building your own anchor-and-compare check
The shape here transfers past SLAM. Any time you have repeat visits to the same physical space, each with its own local reference frame and one shared external landmark, you can run this same check:
Pull the first and last pose of each run in its own frame, plus whatever single shared-frame pose you do have (a GPS fix, an ArUco marker, a known doorway).
Compute one rigid transform from the run's first pose to the shared anchor, and apply it to the whole run. Resist the urge to also correct the end point; that would hide exactly the error this check exists to find.
Measure two different things, not one an endpoint-to-endpoint distance across runs, and a whole-path distance (chamfer, or Hausdorff for a stricter worst-case bound). A single anchor can pass the first test and fail the second, as it did here.
Report both, and state sample size. An n=1 same-day pair is not proof of repeatability, it is one data point, exactly as honestly stated in measurements.json for this post.
Where a one-point anchor is the only option you have
This is not a construction-site curiosity. A single shared anchor, with no continuous ground truth in between, is the normal case anywhere a facility cannot run a permanent positioning system, usually because the cost or the physical disruption of instrumenting the whole space outweighs what one fixed reference point already buys you:
Facility and construction progress capture. Hilti's own SLAM challenges exist because large active sites cannot wire up real-time kinematic (RTK) GPS or ultra-wideband (UWB) anchors fast enough to keep up with changing floors; a walked survey anchored at one known doorway or marker per visit is the realistic workflow, not a limitation of the demo.
Warehouse and retail robots between relayouts. A mobile robot re-localizing against a stored map after shelving moves typically gets one confident anchor (a fixed charging dock or fiducial) and has to trust its own odometry for everything else until the next anchor.
Underground and tunnel inspection. GPS-denied by definition, so a surveyed shaft entrance or known junction is often the only absolute reference a crew gets per run, the same one-point-anchor situation this dataset reproduces on the surface.
Try the Hilti x Trimble SLAM Challenge 2026 dataset in FiftyOne
The dataset loads directly from the FiftyOne Dataset Zoo. A full floor's episodes run several gigabytes each, so loading metadata first and filtering to the floor you want, as this post's build script does, keeps the download honest.
End-position and whole-path (chamfer) distance for all six floor_6 run pairs after single-anchor floor-plan registration. The same-day pair has the closest endpoints but not the closest paths.
Pair
Days apart
End distance (m)
Chamfer distance (m)
2025-06-18 run 1 vs 2025-07-07 run 1
19
8.97
4.91
2025-06-18 run 1 vs 2025-12-02 run 1
167
5.19
5.68
2025-06-18 run 1 vs 2025-12-02 run 2
167
5.56
2.39
2025-07-07 run 1 vs 2025-12-02 run 1
148
4.57
2.38
2025-07-07 run 1 vs 2025-12-02 run 2
148
5.19
4.68
2025-12-02 run 1 vs 2025-12-02 run 2
0
1.05
4.30
End-position and whole-path (chamfer) distance for all six floor_6 run pairs after single-anchor floor-plan registration. The same-day pair has the closest endpoints but not the closest paths.
FAQ
It's a SLAM and floor-plan localization benchmark of 30 runs across 10 floors of an active construction site, available in the FiftyOne Dataset Zoo. Each run includes front and rear fisheye video from an Insta360 ONE RS, a 1000 Hz IMU, a LiDAR-inertial reference trajectory, and one measured starting pose in floor-plan coordinates.
Compute a single rigid rotation and translation that carries the run's first trajectory pose onto its floor-plan pose, then apply that transform to every pose in the run. No re-anchoring happens partway through.
Not reliably. In this test, one anchor brought same-day endpoints within 1.05 meters, but whole-path chamfer distance stayed around 4 meters for both same-day and cross-date pairs. A single anchor fixes one point, not the route walked.
Chamfer distance is a symmetric nearest-point distance between two paths. It measures how well two trajectories overlap as shapes, not just where they end.
Yes. It applies to any repeat visits to the same space where each run has its own local frame and one shared external landmark. Examples include a GPS fix, an ArUco marker, or a known doorway.
Adonai Vera
Adonai Vera is a Machine Learning Engineer & DevRel at Voxel51 with over 7 years of experience building computer vision and machine learning models using TensorFlow, Docker, and OpenCV. Adonai started as a software developer, moved into AI, led teams, and served as CTO. Today, he connect code and community to build open, production-ready AI — making technology simple, accessible, and reliable.