CloudAnalyzer 0.4.0 closes the Phase 21-27 SLAM expansion arc.
Highlights
ca slam-rundrives a LiDAR-odometry pipeline end-to-end on raw scans (KITTI.bin,.pcd,.ply, or a frames-list.txt) and emits the trajectory + accumulated map the rest of the QA stack consumes (ca run-evaluate,ca check,ca history,ca benchmark eval). Install viapip install 'cloudanalyzer[slam]'.- The
slam_runexperiment slice now ships three architecturally distinct real drivers plus a sentinel. All three real drivers pass the bundled synthetic-figure8 default gate:
| Driver | Architecture | figure-8 ATE | figure-8 AUC | License |
|---|---|---|---|---|
kiss_icp (adopted) |
scan-to-map + CV prediction | 1.6 mm | 1.00 | BSD |
kiss_slam (experimental) |
KISS-ICP + PGO + loop closure | 1.6 mm | 1.00 | MIT |
small_gicp (experimental) |
scan-to-map VGICP via GaussianVoxelMap | 2.2 mm | 0.99 | MIT |
identity_passthrough (sentinel) |
identity poses | huge | low | - |
- The bundled
benchmarks/slam/synthetic-figure8/benchmark suite now ships raw scans underscans/(200 frames, yaw-bearing tangent heading), so the full scans → SLAM → benchmark eval loop reproduces from a clean checkout with no BYO data.
What this means
Before v0.4.0, CloudAnalyzer was "you bring the SLAM output, I'll score it." After v0.4.0 it is "give me your raw scans, I'll pick a SLAM driver, run it, and score it for you" — with three independent drivers verified against a rotation-bearing dogfood suite in CI.
See also
- Full per-phase narrative: CHANGELOG.md
- Driver docs: docs/commands/slam-run.md
- Bake-off decisions: docs/decisions.md