// the find
SteveMacenski/slam_toolbox
Slam Toolbox for lifelong mapping and localization in potentially massive maps with ROS
slam_toolbox is the de facto standard 2D SLAM library for ROS 2, built on a heavily modified open_karto scan matcher with Ceres-based pose-graph optimization. It goes well beyond point-and-shoot mapping: serializable pose graphs, lifelong mapping, elastic pose-graph localization, and multi-robot support. If you're building a production ground robot that needs to map and navigate real spaces, this is what Nav2 points you at.
The pose-graph serialization story is genuinely good — you can stop mapping, reload the session days later, and continue exactly where you left off, which almost no other 2D SLAM library handles cleanly. The Ceres solver integration is well-benchmarked and the recommended SPARSE_NORMAL_CHOLESKY + LM configuration scales to 200,000+ sq ft buildings without blowing up. The localization mode reusing the SLAM pose graph (instead of requiring a separate .pgm file and AMCL) is a real architectural improvement that eliminates the static-map brittleness. Decentralized multi-robot mapping via namespace isolation and shared scan exchange is a thoughtful addition that doesn't require a central coordinator.
Lifelong mapping with node decay is explicitly marked experimental and the README admits you shouldn't use it in production yet — the bounded-computation story is incomplete, which means long-running sessions will keep growing the graph. Tuning is genuinely hard: 30+ parameters across solver, matcher, and toolbox sections, with almost no guidance on which ones actually matter vs. which are left-over knobs from open_karto. The 2021 serialized-file format break (fixing the 360-lidar frame bug) is a good reminder that the serialization format is not stable and you're one ABI break away from invalidating your saved maps. RVIZ interactive mode on large maps is acknowledged to be unusably slow, and the workaround is just 'don't use it on large maps.'