This repo’s stated peer is readable, BSD-friendly systems on similar sensors—not a claim to beat every leaderboard entry on every metric.
Published ATE numbers are not comparable if any of these differ:
- Trajectory length / frame window (
--skip-frames,--max-frames) - Alignment mode (
evo_ape--align,--correct_scale,--t_max_diff, …) - Monocular vs RGB-D vs stereo
- Loop closing on/off and vocabulary
- CPU / threading (Ceres
SVSLAM_CERES_NUM_THREADS, async vs--repro-eval)
Rule: fix all of the above before claiming “we beat OSS X”.
Match eval/regression_baselines.json → evo_ape_extra_args:
evo_ape tum groundtruth.txt trajectory.txt \
--align --correct_scale --t_max_diff 0.05SimpleVisualSLAM writes trajectory.txt in TUM (timestamp tx ty tz qx qy qz qw) from the build directory when run_mono is launched with cwd there.
For a controlled window (example: 250 frames from the start):
./build/run_mono --tum "$TUM_RGBD_FREIBURG1_XYZ" \
--max-frames 250 --repro-eval --no-viz [--depth] [--accel] \
--reference-policy heuristic
# then evo_ape from build/: groundtruth is inside the dataset folderRecord: git commit, ./build/run_mono --version, dataset path, exact CLI, and whether loop closing had a valid vocab.
| Project | License | Notes |
|---|---|---|
| stella_vslam | BSD-2-Clause | ORB + optional line/stereo; strong on EuRoC/TUM-style setups. Good primary numeric peer for “can we match classical feature SLAM on the same clip?”. |
| ORB-SLAM2 / ORB-SLAM3 | GPLv3 | Often stronger on many benchmarks, but license and codebase size differ; compare numbers if you want, but do not conflate with “replaceable module in a BSD product”. |
| OpenVINS, Kimera, etc. | Various | Useful baselines; check sensor assumptions (IMU-heavy, etc.). |
Pick one peer and one scenario first (e.g. TUM freiburg1_xyz, 250 frames, RGB-D + same evo flags). Expand only after the pipeline is stable.
Minimal defensible claim:
- Same TUM sequence subdirectory and same frame window as SimpleVisualSLAM’s published gate (see
eval/regression_baselines.json/eval/leaderboard_suite.json). - Same
evo_apealignment flags as above (or document intentional differences). - Peer system configured for same modality (e.g. both with depth if you compare RGB-D).
- Report mean ATE (m) and, if possible, repeat runs (stdev)—this repo supports bitwise repeat under
--repro-evalfor internal regression; external tools may only get statistical repeatability.
Optional stricter bar: add relative pose error (RPE) with the same evo settings used in other papers—only after ATE is aligned.
Use a small table in your notes or paper supplement:
| System | Commit / version | Modality | Sequence + window | mean ATE (m) | evo flags |
|---|---|---|---|---|---|
| SimpleVisualSLAM | run_mono --version + git SHA |
mono / depth | e.g. xyz 0–250 | … | align + correct_scale + t_max_diff 0.05 |
| Peer | … | … | … | … | same |
Before involving stella_vslam or any other OSS, freeze our number on a preset that matches the regression harness:
- Build
run_mono(any directory; passBUILD=…if notbuild/). - Install evo (
pip install evo) soevo_apeis onPATH. - From the repo root:
bash scripts/verify_comparison_benchmark.sh xyz_depth
# or: xyz_mono | room_mono | room_depth
BUILD=build_test_tumcal bash scripts/verify_comparison_benchmark.sh xyz_monoThe script removes stale trajectory*.txt in BUILD, runs --tum … --max-frames 250 --repro-eval --reference-policy heuristic (adds --depth when the preset says so), then prints mean ATE (m) using scripts/print_ate_mean.py, which reads evo_ape_extra_args from eval/regression_baselines.json.
Copy that scalar plus git rev-parse HEAD and ./$BUILD/run_mono --version into your comparison table; only then run the peer system with the same sequence folder, same modality, and same frame policy.
- Baseline one-shot:
scripts/verify_comparison_benchmark.sh+scripts/print_ate_mean.py. - Internal matrix:
scripts/build_leaderboard.py(methods × sequences). - Regression ceilings:
scripts/check_regression_gate.py(does not run external SLAM).
External runners stay in their repositories; this file defines how to line up numbers when you paste them next to ours.