On Use of the SLAM Toolbox:
A Fresh(er) look at Mapping and Localization for the Dynamic World

Steve Macenski, Samsung Research America
Conﬁdential - Do Not Distribute - Simbe Robotics, Inc.

OVERVIEW

Background and Motivating Problems
SLAM Toolbox
Use, Conﬁguration, and Examples
In the Wild and Roadmap

Background - What is SLAM? How does it look like to ROS (REP 105)?
SLAM: Simultaneous Localization and Mapping
Receive sensing from the environment- Range Finders- Odometry Sources (encoders, IMU, etc)
- Camera- RadarCreate a model of the world for positioning- Sometimes used navigate- May be visualized as grids or feature maps
An REP-105 compliant implementation will
provide the map -> odom transform, but often more.

/map

/odom
Positioning

Fused Odometry

Background - A 30,000 ft View*
GMapping (pf based)- Presented in 2007 - year of the ﬁrst iPhone- Mapping large spaces is an “art”- In my experience, diverges in >20,000 sqft
Karto (graph based)- Excellent scan matcher- Basis of several companies SLAM
- In my experience, an acceptable starting point
Cartographer (graph based)- Localization, submap serialization, 3D support- Discussions with Google haven’t inspired conﬁdence- In my experience, couldn’t reliably create useable maps
● Thick hairy walls, missing simple loop closures, etc* Look, I can’t talk about everything, we’ll be here all day!

Background - Quick Primer on Graph-based SLAM
4 Major Elements of Graph-based SLAM
- Sensor Matcher- Pose-Graph- Loop Closure Candidate Selector- Graph OptimizerΔ, ΣΔ, ΣSensor matcher computes relative poses andconﬁdences between candidate scans
Those are added as edges to a pose-graph
Loop closure candidates identiﬁed
and correlated for new constraints
StartOptimizer tries to reduce error in the graphBackground - Quick Primer on Graph-based SLAM
4 Major Elements of Graph-based SLAM
- Sensor Matcher- Pose-Graph- Loop Closure Candidate Selector- Graph OptimizerΔ, ΣΔ, ΣSensor matcher computes relative poses andconﬁdences between candidate scans
Those are added as edges to a pose-graph
Loop closure candidates identiﬁed
and correlated for new constraints
StartOptimizer tries to reduce error in the graph

SLAM Toolbox - An Overview
Map Large and Dynamic Spaces
Reliably Map Spaces >>100,000 sqft Quickly
Improved Ease of Mapping
Rich Set of Toolbox Utilities
Localization that Embraces Change
Online and Oﬄine Processing
Continue Mapping from Prior Sessions Losslessly
Roughly 1 hour to map 45,000 sqft
Courtesy: SimbeRobotics.com

SLAM Toolbox - Mapping
Mapping Modes● Synchronous: All measurement processing○ May lag in large spaces if compute is limited○ Oﬄine: for highest quality● Asynchronous: Best-eﬀort processing○ Online: navigating on limited compute
Ceres Plugin Optimizer
Serialization for Continued Mapping / Post-Processing
Map ~200,000 sqft Synchronously in Real-Time on Robot● Much larger available in asynchronous & cloud processing[Soon] Multi-robot distributed mapping

SLAM Toolbox - Localization
Takes Advantage of Data + Graph- Goal: Localization as close to SLAM as possible- Localize with map and current state in local horizon- New obstacles become features, not deviations!
- If no base map given, “local SLAM”
Elastic Pose-Graph Deformation
1. Fixed size buﬀer of new scans
2. Add new node/constraints to graph
3. Once expired from buﬀer● remove & free data / nodes
4. Pose-graph reverts to original stateBuﬀer size set by scan_buﬀer_size (10)tSLAM Toolbox - Continue/LifeLong Mapping
Continue Mapping = Reﬁne or explore new spaces
Each mode can continue building a map- Load graph, relocalize to a pose or keynode- Match against local environment for a reﬁned ﬁt- Find transform from current & serialized frames- Continue reﬁning map

Lifelong Mapping = Above + removal of extra nodes* Cartographer’s Lifelong mapping is my continue mapping, it does not bound computation[Experimental] A living, breathing map- Online updates to map over many sessions- Online removal of outdated/redundant data
- Currently computed by a (questionable) heuristic

SLAM Toolbox - Toolbox Processing
I have pose-graphs and scans serialized, what can I do with it?
Batteries Included:● Kinematic map merging● Manual pose-graph manipulation● Rotate maps without aliasing pixels● Continue to build maps / localizationIdeas:● Map rendering with diﬀerent parameters● Merge N maps using graph structure / data
● Select & remove nodes/constraints● Annotations● Analyze odometric & sensor poses to model odometry drift

Conﬁguration and Use
Select Parameters - See documentation for full list and descriptions

stack_size_to_use: Stack size, for serialization/deserialization only
tf_buﬀer_duration: TF buﬀer storage duration (oﬄine speedups)
solver_plugin: Optimizer plugin to use
mode: Mapping or localization mode for optimizer settings
map_ﬁle_name: Base ﬁlepath of serialized map to load
map_start_{pose, at_dock}: Whether to start at a speciﬁc pose or dockenable_interactive_mode: Enables interactive pose-graph manipulation

ExamplesCars!

Sidewalk of San Francisco

What’s Next?
The Work is Never Done
#76 - Multi-laser Robots#68 - Multi-robot Cloud Processing Sample
Additional Tools for Processing Pose-Graph/Data● Map merging method using graph structure● Robot odometry drift estimation● Selectively remove nodes/constraints
Promote “true” Lifelong Mapping Node to Production

In The Wild

Navigation2 Tiny Ticket Competition Winner - Shivang PatelRepository, Documentation, and Issue Tracker:
https://github.com/SteveMacenski/slam_toolbox.git
ROS Wiki Page: http://wiki.ros.org/slam_toolbox
Thanks to Other Active Contributor: Ivona Jambrečić
Thanks to Circuit Launch & Andrew Etherington for their
help in ﬁnishing this work with facilities & a LIDAR to test

Steve Macenski
Open Source Robotics Engineering Leads.macenski@samsung.com
stevenmacenski@gmail.com

Conﬁdential - Do Not Distribute - Prepared for SoftBank Robotics