LIO-SAM

Shan 2020 · Paper

One-line summary — LIO-SAM reformulated LiDAR-inertial odometry as factor-graph smoothing, letting IMU preintegration, scan-matching, GPS, and loop closures all enter one MAP estimation problem — while keeping real time by matching keyframes only against a local sliding-window map.

Problem

LOAM saves its data in a global voxel map, which makes it difficult to perform loop closure detection or incorporate absolute measurements such as GPS; its IMU is used only to de-skew scans and give a motion prior (loosely coupled), and its optimization degrades as the voxel map densifies. Tightly-coupled alternatives like LIOM process all measurements jointly but run at only ~0.6× real time. LIO-SAM targets both problems at once: a factor graph accepts heterogeneous relative and absolute measurements as factors, and scan-matching at a local rather than global scale keeps computation bounded.

Method & architecture

The robot state is x=[R,p,v,b]\mathbf{x} = [\,\mathbf{R}^{\top}, \mathbf{p}^{\top}, \mathbf{v}^{\top}, \mathbf{b}^{\top}\,]^{\top} (attitude, position, velocity, IMU bias). A new state node is added when the pose change exceeds a threshold, and the graph is optimized incrementally with iSAM2 under four factor types:

Results

Evaluated on five self-collected datasets (Rotation, Walking, Campus, Park, Amsterdam) across three platforms — handheld device, Clearpath Jackal UGV, and the Duffy 21 electric boat — using a VLP-16, a MicroStrain 3DM-GX5-25 IMU, and Reach M GPS, on an i7-10710U CPU (no GPU):

Why it matters for SLAM

LIO-SAM did for LiDAR what VINS-Mono and OKVIS did for cameras: it made tightly-coupled inertial fusion via graph optimization the default architecture. Its clean separation of measurement sources as factors makes it easy to extend — LVI-SAM adds an entire visual-inertial subsystem on top of it — and it remains the standard factor-graph baseline against which filter-based systems like FAST-LIO2 are compared. Use it when you want loop closure, GPS fusion, and a smoothing backend out of the box.