Necessity Robotics

Technical paper · in preparation

xclean, scored on what it publishes live.

A stereo visual-inertial SLAM system, and an evaluation that scores what it published live: latency at every frame, accuracy at its keyframes, never a trajectory refined after the run.

Not yet releasedAuthors: to be announcedFinal numbers: board of 2026-10-30

Summary

Robots act on the pose their state estimator gives them at each frame. We present xclean, a stereo visual-inertial SLAM system whose GPU code is written in CuPy, with no learned networks in its SLAM pipeline. It uses the IMU while a built-in consistency check accepts it and otherwise runs as stereo visual odometry with loop closure (the IMU stayed in use to the end on 50 of 216 board runs). We score it on exactly what it publishes live: runs paced at the sensors' real rate and the poses it published live, with rules written down before the runs (amendments made during the board are disclosed). On a final board of 72 routes and 216 live runs, its median frame-to-pose latency is 20.4 ms (p95 26.4 ms) on one desktop GPU, and no run of record was lost on the 38 routes held out from xclean's development (10 of them were run in a set-aside first launch whose results were never read) (robustness was not perfect: see the limitations). It is not more accurate than the systems we compared it with: against offline ORB-SLAM3 on those 38 routes it wins 10, ties 2 and loses 26. We report every loss.

This page is a summary. The full paper is being revised to the final board; until it is released, the numbers here and on the results page are the reference.

Why score the live output

A humanoid handing someone a cup, or a mobile robot opening a door, acts on its estimate of where it is at the moment it acts. That estimate sees each frame once, must answer before the next frame arrives, and can never revise an answer it already gave. Published SLAM accuracy is usually measured on the trajectory saved at the end of the run, after global optimisation has revised every pose with hindsight, and often with the data fed slower than real time. That number can be far from what the robot received.

Method, in brief

  • Front end. Stereo feature tracking on the GPU, with sparse stereo matching for depth.
  • Association by map matching. Features are matched against the local map, not only the previous frame.
  • Estimator. A tightly coupled visual-inertial sliding-window solve on the GPU; each frame's pose comes from a solve that contains that frame.
  • IMU. Initialisation, an online consistency check (the watchdog that can drop or refuse the IMU) and an online camera-IMU clock-offset estimate. xclean is a stereo visual-inertial SLAM system: it uses the IMU while a built-in consistency check accepts it, and otherwise continues as stereo visual odometry with loop closure. In the final board the IMU stayed in use to the end on 50 of 216 runs (mostly EuRoC and 4Seasons). On MADMAX, Rosario and our own OAK-D-Lite recordings the check dropped or refused it. KITTI has no IMU. Per dataset.
  • Full SLAM. Loop closure with a global correction applied live, relocalisation, and map reuse.
  • One configuration. One frozen build ran every route on the board.
  • Maps. 3-D Gaussian-splat maps are built afterwards from the images and xclean's live poses (maps).

Live evaluation protocol

  • Harness. Frames and IMU samples are released at their recorded timestamps; the system never sees data newer than what was released; every published pose is recorded by a separate process.
  • Live scorer. It scores the poses as published live: latency over every frame, accuracy (ATE) at keyframe level on the map stream (LIVE-MAP). Each route has three valid runs of record; 8 void attempts were re-run (a first launch on a pre-fix build was set aside entirely; see the results page), and the rules for what voids a run and for incomplete attempts were amended during the board. Every attempt is in the board ledger.
  • Bars written down in advance. Latency, drops, continuity, robustness, accuracy and resources, each with a written pass rule. The protocol was amended during the board: no accuracy number was read before any amendment, but validity outcomes (void and incomplete runs) were, and they drove 8.36 and 8.40-8.44. The amendments are listed on the results page.
  • Held-out routes. The final board's headline uses 38 routes held out from xclean's development. Ten of them were run in a first launch that was set aside with its results never read (see the results page), and our previous system had run on 36 of them (claim C5 compares against it).
  • Baselines. ORB-SLAM3 offline and untuned (5 runs per route) and OKVIS2-X causal and unpaced (1 run per route), each built on Windows with portability-only patches and run separately; none of their code is part of xclean. ORB-SLAM3 ran stereo-inertial where the dataset has an IMU, except on rosario_01, 02, 03 and 06, where its IMU start-up crashed on every run and it ran stereo-only, and on 1 of its 5 madmax_B0 runs; on KITTI, which has no IMU, it ran stereo. OKVIS2-X ran visual-inertial, with the IMU off on KITTI. The OKVIS2-X comparison uses frame-level ATE (each pose held until the next frame), as pre-registered; the table's xclean ATE is keyframe-level.

Results (final board)

20.4ms
median latency (p95 26.4, p99 30.7 ms)
216runs
valid runs of record on 72 routes, 3 per route
10/ 2 / 26
wins / ties / losses vs offline ORB-SLAM3, 38 unseen routes

Against OKVIS2-X (causal) on the same routes: 11 wins, 10 ties, 17 losses. 1 of 12 pre-registered claims passed on the unseen routes. Every route, with its disclosures, is on the results page.

Limitations

  • Not more accurate than ORB-SLAM3 or OKVIS2-X on our board.
  • The engine was frozen with its last pre-registered kill test (K14: no unflagged map jumps, and loop closure paying where routes revisit) failed on two routes (madmax_E0, kitti_02); on a third, kitti_09, no loop was fused and it passed only through the no-harm clause. The board ran on a twin build with identical engine code.
  • Robustness: no run of record was lost on the 38 held-out routes, but on 2 of them a replay attempt crashed or hung; the unsupported-frames check passed on 9, failed on 4 and is pending on 25 (all MADMAX, whose ground truth has known faults).
  • One machine: all timings come from one desktop with an RTX 5090. The embedded port is not done.
  • Some datasets have known faults: MADMAX's ground-truth heading departs from its own antenna track for long stretches, and Rosario v1's ground truth is position-only; these affect every system scored. On 4Seasons, the stereo images' metric scale disagrees with the RTK-GNSS ground truth per recording (by -11 to +5 %), for both stereo systems; the cause is open; it is not the ground truth (the camera calibration is suspected). (An earlier 2-11 % scale error was our own converter's bug, fixed on 2026-10-04 before any final score.)
  • Our own OAK-D-Lite routes were recorded on the camera and replayed in real time; they have no ground truth (latency, drops and visual inspection only). Live on-device testing of the release is pending.

Citation

The paper is not released yet. Until it is, please cite the software (its repository goes public with the code release):

@software{xclean2026,
  title        = {xclean: real-time stereo visual-inertial SLAM},
  author       = {{Necessity Robotics}},
  year         = {2026},
  note         = {Open-source release (Apache-2.0) forthcoming},
  url          = {https://necessityrobotics.github.io/xclean.html}
}