slam-core
ActiveA geometry-first visual-inertial SLAM system in modern C++, built in disciplined stages with Rerun-based debugging and reproducible EuRoC experiments.
The long game
slam-core is the project I’m building the slowest, on purpose. It’s a visual-inertial SLAM system in modern C++ (SO(3)/SE(3) geometry, camera models, IMU propagation, EuRoC benchmarking), built in disciplined stages where every layer is tested before the next one stands on it.
After msckf-vio (Python, filter-first) and sfm-core (Python, geometry-first), this is the synthesis: the same ideas as a real systems codebase, with CMake, googletest, and Rerun-based visual debugging wired in from day one.
First measurable result
The IMU layer is up, and it already produced a satisfying number: on EuRoC MH_01, offline gyro bias correction drops mean gyro-only orientation error over 180 seconds from ~108° to ~7°.

The bias values are ground-truth-derived for now: a diagnostic tool, not the estimator. Online bias estimation is exactly the kind of thing the later filter stages exist to do; this experiment pins down how much accuracy is on the table.
What “disciplined stages” means here
Every stage ships with a reproducible experiment: a documented command sequence from raw EuRoC data to the plot above, runnable by anyone. That habit — result first, plumbing second, write-up always — is the whole methodology of this rebuild, and slam-core is where it gets applied to a full C++ system.
Watch this space: visual frontend and estimator stages land next, and this project graduates to featured when the trajectories do.