Applied Engineering Reference

Kalman Filters for LiDAR-IMU Fusion SLAM

A complete reference for building a fusion SLAM engine — from foundational math to state-of-the-art algorithms
Purpose of This Document

This reference guide explains the family of Kalman Filters — from the basic linear filter through the Error-State variants used in production SLAM systems — specifically as they apply to building a LiDAR-Inertial SLAM engine. The goal is to fuse data from a LiDAR sensor (accurate spatial measurements at ~10–20 Hz) with an IMU sensor (high-frequency orientation and acceleration at ~100–400 Hz) to produce real-time, accurate, drift-corrected 6-DOF pose estimation and 3D mapping.

1. Where This Fits in the Learning Path

Kalman filters sit at the convergence of four mathematical branches. Relative to the learning path from Algebra through Calculus and beyond:

The path to Kalman Filters

AlgebraTrigonometry / PrecalculusCalculus 1 → then three parallel branches:

1. Linear Algebra — the biggest prerequisite. The filter is fundamentally a matrix algorithm: state vectors, covariance matrices, matrix multiplication and inversion.

2. Probability & Statistics — Gaussian distributions, covariance, conditional probability. Without this, the linear algebra looks like arbitrary matrix shuffling.

3. Differential EquationsControl Theory — the filter models system evolution using state-space equations $\dot{\mathbf{x}} = A\mathbf{x} + B\mathbf{u}$, which are systems of differential equations in matrix form.

These three branches converge at Kalman Filters. For the nonlinear variants (EKF, ESKF, UKF) used in SLAM, you additionally need Calculus 3 (multivariable calculus, Jacobians) and familiarity with 3D rotation representations (SO(3), quaternions).

2. Prerequisite Knowledge

Linear Algebra (Critical)

Vectors and matrices, matrix multiplication, transpose, inverse. Eigenvalues and eigenvectors. Positive-definite matrices (covariance matrices are always symmetric positive-definite). The matrix identity $(\mathbf{A}\mathbf{B})^{-1} = \mathbf{B}^{-1}\mathbf{A}^{-1}$.

Probability & Statistics (Critical)

Random variables, mean (expectation), variance, covariance. The multivariate Gaussian distribution $\mathcal{N}(\boldsymbol{\mu}, \mathbf{P})$. Bayes' theorem. The concept that fusing two uncertain estimates produces a better estimate than either alone.

Calculus (Required)

Derivatives and integrals (Calc 1). Partial derivatives and Jacobian matrices (Calc 3). The Jacobian $\mathbf{J} = \frac{\partial \mathbf{f}}{\partial \mathbf{x}}$ is how the EKF linearizes nonlinear functions — each entry is $J_{ij} = \frac{\partial f_i}{\partial x_j}$.

Differential Equations (Required)

State-space representation $\dot{\mathbf{x}} = \mathbf{f}(\mathbf{x}, \mathbf{u})$. Discretization of continuous models. Numerical integration (Euler, Runge-Kutta) for IMU propagation.

3D Geometry & Rotations (SLAM-specific)

Rotation matrices $\mathbf{R} \in SO(3)$, quaternions, Euler angles. The skew-symmetric matrix $[\mathbf{a}]_\times$ for cross products. Lie groups and Lie algebras (for the error-state formulation on manifolds). Coordinate frame transformations.

Practical note

You don't need to master all of this before starting. Many engineers learn by implementing a simple 1D Kalman filter first, then gradually adding complexity. The math deepens as the problems demand it.

3. The Sensor Fusion Problem

A LiDAR-IMU SLAM system must estimate the robot's state $\mathbf{x}$ — typically position, velocity, orientation, and IMU biases — by combining two complementary sensors:

SensorStrengthsWeaknessesTypical Rate
IMUHigh frequency, captures fast motion, provides orientationDrifts over time (integrating noisy accelerations), no absolute position100–400 Hz
LiDARAccurate 3D point clouds, absolute spatial measurementsLower rate, can miss fast motion, struggles in feature-poor environments10–20 Hz

The Kalman filter is the mathematical framework that optimally fuses these: the IMU drives the prediction step (fast, drifty) and the LiDAR drives the correction step (slow, accurate).

The core idea

Between LiDAR scans, propagate the state forward using IMU readings (prediction).
When a LiDAR scan arrives, correct the prediction using the spatial measurement (update).
The Kalman gain $\mathbf{K}$ automatically determines how much to trust each source.

4. The Linear Kalman Filter (KF)

The foundation. Optimal for linear systems with Gaussian noise. Not directly usable for SLAM (which is nonlinear), but understanding it is essential before moving to the nonlinear variants.

State-Space Model

Process model (how the state evolves)
$$\mathbf{x}_{k+1} = \mathbf{F}_k \mathbf{x}_k + \mathbf{B}_k \mathbf{u}_k + \mathbf{w}_k$$

$\mathbf{x}_k$ = state vector, $\mathbf{F}_k$ = state transition matrix, $\mathbf{B}_k$ = control input matrix, $\mathbf{u}_k$ = control input, $\mathbf{w}_k \sim \mathcal{N}(0, \mathbf{Q}_k)$ = process noise.

Measurement model (what we observe)
$$\mathbf{z}_k = \mathbf{H}_k \mathbf{x}_k + \mathbf{v}_k$$

$\mathbf{z}_k$ = measurement vector, $\mathbf{H}_k$ = observation matrix, $\mathbf{v}_k \sim \mathcal{N}(0, \mathbf{R}_k)$ = measurement noise.

The Five Equations

Prediction step (time update)
$$\hat{\mathbf{x}}_{k+1|k} = \mathbf{F}_k \hat{\mathbf{x}}_{k|k} + \mathbf{B}_k \mathbf{u}_k$$ $$\mathbf{P}_{k+1|k} = \mathbf{F}_k \mathbf{P}_{k|k} \mathbf{F}_k^T + \mathbf{Q}_k$$
Correction step (measurement update)
$$\mathbf{K}_{k+1} = \mathbf{P}_{k+1|k} \mathbf{H}_{k+1}^T \left(\mathbf{H}_{k+1} \mathbf{P}_{k+1|k} \mathbf{H}_{k+1}^T + \mathbf{R}_{k+1}\right)^{-1}$$ $$\hat{\mathbf{x}}_{k+1|k+1} = \hat{\mathbf{x}}_{k+1|k} + \mathbf{K}_{k+1}\left(\mathbf{z}_{k+1} - \mathbf{H}_{k+1}\hat{\mathbf{x}}_{k+1|k}\right)$$ $$\mathbf{P}_{k+1|k+1} = \left(\mathbf{I} - \mathbf{K}_{k+1}\mathbf{H}_{k+1}\right)\mathbf{P}_{k+1|k}$$
Intuition

The Kalman Gain $\mathbf{K}$ is the key. When the prediction is uncertain ($\mathbf{P}$ is large), $\mathbf{K}$ is large and the filter trusts the measurement more. When the measurement is noisy ($\mathbf{R}$ is large), $\mathbf{K}$ is small and the filter trusts its prediction more. It's an optimal weighted average.

Limitations for SLAM

The linear KF requires $\mathbf{F}$ and $\mathbf{H}$ to be constant matrices — but in SLAM, the motion model involves 3D rotations (nonlinear), and the LiDAR measurement model maps 3D points through coordinate transforms (also nonlinear). This is why we need the extensions below.

5. The Extended Kalman Filter (EKF)

The most widely used nonlinear filter. It handles nonlinear process and measurement models by linearizing them at each time step using Jacobian matrices.

Nonlinear State-Space Model

Process model (nonlinear)
$$\mathbf{x}_{k+1} = \mathbf{f}(\mathbf{x}_k, \mathbf{u}_k) + \mathbf{w}_k$$

$\mathbf{f}(\cdot)$ is now a nonlinear function (e.g., 3D rotation + translation from IMU integration).

Measurement model (nonlinear)
$$\mathbf{z}_k = \mathbf{h}(\mathbf{x}_k) + \mathbf{v}_k$$

$\mathbf{h}(\cdot)$ maps the state to expected measurements (e.g., projecting map points into the LiDAR frame).

Linearization via Jacobians

The EKF approximates the nonlinear functions with first-order Taylor expansions around the current estimate:

$$\mathbf{F}_k = \frac{\partial \mathbf{f}}{\partial \mathbf{x}}\bigg|_{\hat{\mathbf{x}}_{k|k}} \qquad \mathbf{H}_k = \frac{\partial \mathbf{h}}{\partial \mathbf{x}}\bigg|_{\hat{\mathbf{x}}_{k+1|k}}$$

EKF Equations

Prediction
$$\hat{\mathbf{x}}_{k+1|k} = \mathbf{f}(\hat{\mathbf{x}}_{k|k}, \mathbf{u}_k)$$ $$\mathbf{P}_{k+1|k} = \mathbf{F}_k \mathbf{P}_{k|k} \mathbf{F}_k^T + \mathbf{Q}_k$$
Correction
$$\mathbf{K}_{k+1} = \mathbf{P}_{k+1|k}\mathbf{H}_{k+1}^T\left(\mathbf{H}_{k+1}\mathbf{P}_{k+1|k}\mathbf{H}_{k+1}^T + \mathbf{R}_{k+1}\right)^{-1}$$ $$\hat{\mathbf{x}}_{k+1|k+1} = \hat{\mathbf{x}}_{k+1|k} + \mathbf{K}_{k+1}\left(\mathbf{z}_{k+1} - \mathbf{h}(\hat{\mathbf{x}}_{k+1|k})\right)$$ $$\mathbf{P}_{k+1|k+1} = \left(\mathbf{I} - \mathbf{K}_{k+1}\mathbf{H}_{k+1}\right)\mathbf{P}_{k+1|k}$$
For SLAM

The term $\mathbf{z}_{k+1} - \mathbf{h}(\hat{\mathbf{x}}_{k+1|k})$ is called the innovation or residual — the difference between what the LiDAR actually measured and what the filter predicted it should measure. This is where scan-matching (ICP, NDT, or feature matching) produces the LiDAR "measurement."

6. The Error-State Kalman Filter (ESKF)

The preferred variant for IMU-centric fusion and the foundation of FAST-LIO, FAST-LIO2, and most modern LiDAR-inertial systems. Instead of estimating the full state, it estimates the error between the IMU's predicted state and the true state.

Why Error-State?

Three key advantages for SLAM:

State Decomposition

Nominal state (IMU integration, no filter)

The "big" state propagated purely from IMU readings, using the nonlinear kinematic equations. No covariance, no correction.

$$\bar{\mathbf{x}}_{k+1} = \mathbf{f}(\bar{\mathbf{x}}_k, \mathbf{u}_k)$$
Error state (what the Kalman filter estimates)

The small deviation $\delta\mathbf{x}$ between the nominal state and the true state:

$$\mathbf{x}_{\text{true}} = \bar{\mathbf{x}} \oplus \delta\mathbf{x}$$

where $\oplus$ denotes the composition operation (simple addition for position/velocity, but a rotation composition for orientation).

Error-State Vector (Typical for LiDAR-IMU SLAM)

$$\delta\mathbf{x} = \begin{bmatrix} \delta\mathbf{p} \\ \delta\mathbf{v} \\ \delta\boldsymbol{\theta} \\ \delta\mathbf{b}_a \\ \delta\mathbf{b}_\omega \\ \delta\mathbf{g} \end{bmatrix} \in \mathbb{R}^{18}$$

where $\delta\mathbf{p}$ = position error, $\delta\mathbf{v}$ = velocity error, $\delta\boldsymbol{\theta}$ = orientation error (small angle), $\delta\mathbf{b}_a$ = accelerometer bias error, $\delta\mathbf{b}_\omega$ = gyroscope bias error, $\delta\mathbf{g}$ = gravity direction error.

ESKF Equations

Prediction (error state)
$$\delta\hat{\mathbf{x}}_{k+1|k} = \mathbf{F}_\delta \, \delta\hat{\mathbf{x}}_{k|k} \quad \text{(often reset to zero after each correction)}$$ $$\mathbf{P}_{k+1|k} = \mathbf{F}_\delta \, \mathbf{P}_{k|k} \, \mathbf{F}_\delta^T + \mathbf{G}\,\mathbf{Q}\,\mathbf{G}^T$$

$\mathbf{F}_\delta$ = Jacobian of the error-state dynamics, $\mathbf{G}$ = noise input matrix.

Correction (when LiDAR measurement arrives)
$$\mathbf{K} = \mathbf{P}_{k+1|k}\mathbf{H}^T\left(\mathbf{H}\mathbf{P}_{k+1|k}\mathbf{H}^T + \mathbf{R}\right)^{-1}$$ $$\delta\hat{\mathbf{x}} = \mathbf{K}\left(\mathbf{z} - \mathbf{h}(\bar{\mathbf{x}}_{k+1})\right)$$ $$\mathbf{P}_{k+1|k+1} = \left(\mathbf{I} - \mathbf{K}\mathbf{H}\right)\mathbf{P}_{k+1|k}$$
Injection (apply correction to nominal state)
$$\hat{\mathbf{p}} = \bar{\mathbf{p}} + \delta\hat{\mathbf{p}}$$ $$\hat{\mathbf{v}} = \bar{\mathbf{v}} + \delta\hat{\mathbf{v}}$$ $$\hat{\mathbf{R}} = \bar{\mathbf{R}} \cdot \text{Exp}(\delta\hat{\boldsymbol{\theta}})$$ $$\hat{\mathbf{b}}_a = \bar{\mathbf{b}}_a + \delta\hat{\mathbf{b}}_a, \quad \hat{\mathbf{b}}_\omega = \bar{\mathbf{b}}_\omega + \delta\hat{\mathbf{b}}_\omega$$

Then reset the error state to zero: $\delta\hat{\mathbf{x}} \leftarrow \mathbf{0}$.

7. The Iterated Extended Kalman Filter (IEKF)

Used in FAST-LIO and FAST-LIO2. The key insight: the standard EKF linearizes around the prediction, but if the correction moves the state significantly, that linearization point was wrong. The IEKF iterates — re-linearizing around the updated estimate — until convergence.

Iteration Loop

Iterated correction

Starting from the predicted state $\hat{\mathbf{x}}^{(0)} = \hat{\mathbf{x}}_{k+1|k}$, iterate for $j = 0, 1, 2, \ldots$:

$$\mathbf{H}^{(j)} = \frac{\partial \mathbf{h}}{\partial \mathbf{x}}\bigg|_{\hat{\mathbf{x}}^{(j)}}$$ $$\mathbf{K}^{(j)} = \mathbf{P}_{k+1|k}(\mathbf{H}^{(j)})^T\left(\mathbf{H}^{(j)}\mathbf{P}_{k+1|k}(\mathbf{H}^{(j)})^T + \mathbf{R}\right)^{-1}$$ $$\hat{\mathbf{x}}^{(j+1)} = \hat{\mathbf{x}}_{k+1|k} + \mathbf{K}^{(j)}\left(\mathbf{z} - \mathbf{h}(\hat{\mathbf{x}}^{(j)}) - \mathbf{H}^{(j)}(\hat{\mathbf{x}}_{k+1|k} - \hat{\mathbf{x}}^{(j)})\right)$$

Stop when $\|\hat{\mathbf{x}}^{(j+1)} - \hat{\mathbf{x}}^{(j)}\| < \varepsilon$ (convergence).

FAST-LIO's innovation

FAST-LIO reformulates the Kalman gain computation so that its complexity depends on the state dimension (~24) rather than the measurement dimension (thousands of LiDAR points). This is what makes iterating practical in real-time — each iteration costs microseconds instead of milliseconds.

8. The Unscented Kalman Filter (UKF)

An alternative to the EKF that avoids computing Jacobians entirely. Instead of linearizing, it passes carefully chosen sigma points through the nonlinear function and reconstructs the Gaussian statistics from the transformed points.

Sigma Point Generation

For state dimension $n$ with mean $\hat{\mathbf{x}}$ and covariance $\mathbf{P}$, generate $2n+1$ sigma points:

$$\boldsymbol{\chi}_0 = \hat{\mathbf{x}}$$ $$\boldsymbol{\chi}_i = \hat{\mathbf{x}} + \left(\sqrt{(n+\lambda)\mathbf{P}}\right)_i \quad \text{for } i = 1, \ldots, n$$ $$\boldsymbol{\chi}_{i+n} = \hat{\mathbf{x}} - \left(\sqrt{(n+\lambda)\mathbf{P}}\right)_i \quad \text{for } i = 1, \ldots, n$$

where $\lambda = \alpha^2(n + \kappa) - n$ is a scaling parameter and $\left(\sqrt{(n+\lambda)\mathbf{P}}\right)_i$ is the $i$-th column of the matrix square root.

Transform and Reconstruct

Propagate each sigma point through the nonlinear function
$$\boldsymbol{\chi}_i^* = \mathbf{f}(\boldsymbol{\chi}_i, \mathbf{u}_k) \quad \text{for each } i$$
Reconstruct the mean and covariance from transformed points
$$\hat{\mathbf{x}}_{k+1|k} = \sum_{i=0}^{2n} W_i^{(m)} \boldsymbol{\chi}_i^*$$ $$\mathbf{P}_{k+1|k} = \sum_{i=0}^{2n} W_i^{(c)} (\boldsymbol{\chi}_i^* - \hat{\mathbf{x}}_{k+1|k})(\boldsymbol{\chi}_i^* - \hat{\mathbf{x}}_{k+1|k})^T + \mathbf{Q}$$
Trade-off

The UKF captures second-order nonlinear effects that the EKF misses (no linearization error), and requires no Jacobian derivation. However, it's computationally heavier — generating and propagating $2n+1$ sigma points for an $n$-dimensional state. For SLAM with $n \approx 18$–24, that's 37–49 sigma points per step. In practice, the ESKF/IEKF is preferred for LiDAR-IMU SLAM because the error-state is already nearly linear, making the EKF's linearization accurate enough.

9. IMU Kinematic Model for SLAM

The IMU measures angular velocity $\boldsymbol{\omega}_m$ and linear acceleration $\mathbf{a}_m$, both corrupted by bias and noise:

$$\boldsymbol{\omega}_m = \boldsymbol{\omega} + \mathbf{b}_\omega + \mathbf{n}_\omega$$ $$\mathbf{a}_m = \mathbf{R}^T(\mathbf{a} - {}^G\mathbf{g}) + \mathbf{b}_a + \mathbf{n}_a$$

where $\mathbf{R}$ is the rotation from global to IMU frame, ${}^G\mathbf{g}$ is gravity in the global frame, and $\mathbf{b}_\omega, \mathbf{b}_a$ are slowly-varying biases modeled as random walks.

Continuous-Time State Dynamics

The kinematic equations
$$\dot{\mathbf{R}} = \mathbf{R}[\boldsymbol{\omega}_m - \mathbf{b}_\omega - \mathbf{n}_\omega]_\times$$ $$\dot{\mathbf{p}} = \mathbf{v}$$ $$\dot{\mathbf{v}} = \mathbf{R}(\mathbf{a}_m - \mathbf{b}_a - \mathbf{n}_a) + {}^G\mathbf{g}$$ $$\dot{\mathbf{b}}_\omega = \mathbf{n}_{b\omega}$$ $$\dot{\mathbf{b}}_a = \mathbf{n}_{ba}$$

where $[\cdot]_\times$ denotes the skew-symmetric matrix for cross products.

Discrete-Time Integration

Between IMU samples at period $\Delta t$:

$$\mathbf{R}_{k+1} = \mathbf{R}_k \cdot \text{Exp}\left((\boldsymbol{\omega}_m - \mathbf{b}_\omega)\Delta t\right)$$ $$\mathbf{v}_{k+1} = \mathbf{v}_k + \left(\mathbf{R}_k(\mathbf{a}_m - \mathbf{b}_a) + {}^G\mathbf{g}\right)\Delta t$$ $$\mathbf{p}_{k+1} = \mathbf{p}_k + \mathbf{v}_k \Delta t + \frac{1}{2}\left(\mathbf{R}_k(\mathbf{a}_m - \mathbf{b}_a) + {}^G\mathbf{g}\right)\Delta t^2$$
10. LiDAR Measurement Model

The LiDAR provides 3D point clouds. In SLAM, these points are matched to a map (scan-to-map registration) to produce a pose "measurement" that corrects the IMU prediction.

Point-to-Plane Residual (Most Common)

For each LiDAR point ${}^L\mathbf{p}_j$ (in the LiDAR frame), transform it to the global frame using the current state estimate and compute its distance to the nearest plane in the map:

$$r_j = \mathbf{n}_j^T\left(\mathbf{R}\cdot{}^I\mathbf{R}_L \cdot {}^L\mathbf{p}_j + \mathbf{R}\cdot{}^I\mathbf{t}_L + \mathbf{p} - \mathbf{q}_j\right)$$

where $\mathbf{n}_j$ is the plane normal at the nearest map point $\mathbf{q}_j$, and ${}^I\mathbf{R}_L, {}^I\mathbf{t}_L$ are the LiDAR-to-IMU extrinsic calibration.

In practice

Each LiDAR scan produces hundreds or thousands of residuals $r_j$. Stacking them gives the measurement vector $\mathbf{z}$ and the Jacobian $\mathbf{H}$ needed by the Kalman filter. This is why FAST-LIO's reformulated Kalman gain (which avoids inverting the huge $\mathbf{H}\mathbf{P}\mathbf{H}^T + \mathbf{R}$ matrix) is so important.

11. Fusion Architecture: Putting It All Together

Tightly-Coupled LiDAR-IMU Pipeline

Step 1 — IMU Propagation (between LiDAR scans)

At each IMU sample (~100–400 Hz): integrate the kinematic equations to propagate the nominal state forward. Propagate the error-state covariance $\mathbf{P}$ using the error-state Jacobian $\mathbf{F}_\delta$.

Step 2 — Point Cloud De-skewing

LiDAR points within a scan are collected over ~100ms. During this time the robot moves. Use the IMU-propagated poses to "undo" the motion and align all points to the same reference time (backward propagation).

Step 3 — Scan Registration

Match the de-skewed point cloud to the map using nearest-neighbor search (KD-tree or ikd-Tree). Compute point-to-plane residuals for each matched point.

Step 4 — Kalman Filter Correction

Stack all residuals into the measurement vector. Compute the Kalman gain $\mathbf{K}$. Update the error state $\delta\hat{\mathbf{x}}$. Inject into the nominal state. Reset the error state to zero. Optionally iterate (IEKF).

Step 5 — Map Update

Transform the corrected scan points to the global frame and insert them into the map data structure (e.g., ikd-Tree, voxel hash map).

12. State-of-the-Art Systems
SystemFilter TypeKey InnovationReference
FAST-LIOIterated ESKFReformulated Kalman gain (state-dim complexity instead of measurement-dim)Xu & Zhang, 2021
FAST-LIO2Iterated ESKFDirect point registration (no feature extraction) + ikd-TreeXu et al., 2022
LIO-SAMFactor Graph + EKFIMU preintegration on factor graph with loop closure supportShan et al., 2020
DLIOESKFCoarse-to-fine continuous-time trajectory for motion correctionChen et al., 2023
Faster-LIOIterated ESKFParallel sparse incremental voxels (iVox) replacing ikd-TreeBai et al., 2022
Point-LIOESKFPoint-by-point processing instead of scan-by-scanHe et al., 2023
13. Choosing a Filter for Your SLAM Engine
FilterComplexityAccuracyBest For
Linear KFLowestOptimal (linear systems only)Learning, simple 1D/2D tracking
EKFLowGood (if nonlinearity is mild)General sensor fusion, GPS/INS
ESKFLowVery good for IMU-centric fusionLiDAR-IMU SLAM (recommended starting point)
IEKF / IESKFMediumBest for large correctionsProduction SLAM (FAST-LIO2 approach)
UKFHigherBetter for highly nonlinear modelsWhen Jacobians are hard to derive, moderate state dimension
Recommendation for your SLAM engine

Start with an Error-State Kalman Filter (ESKF) — it's the natural fit for IMU-centric fusion, handles 3D rotations cleanly, and is what most modern LiDAR-inertial systems use. If you need better accuracy under aggressive motion, upgrade to the Iterated ESKF (IESKF) as used in FAST-LIO2. The UKF is an alternative if you want to avoid deriving Jacobians, but it's computationally heavier and less common in production SLAM.

14. Academic Papers, Textbooks & Resources

Foundational Papers

PaperAuthorsYearLink
A New Approach to Linear Filtering and Prediction ProblemsR. E. Kalman1960cs.unc.edu (PDF)
New Results in Linear Filtering and Prediction TheoryR. E. Kalman, R. S. Bucy1961duke.edu (PDF)
Unscented Filtering and Nonlinear EstimationS. J. Julier, J. K. Uhlmann2004Proc. IEEE, Vol. 92, No. 3

LiDAR-Inertial SLAM Papers

PaperAuthorsYearLink
FAST-LIO: A Fast, Robust LiDAR-Inertial Odometry Package by Tightly-Coupled Iterated Kalman FilterW. Xu, F. Zhang2021arXiv:2010.08196
FAST-LIO2: Fast Direct LiDAR-Inertial OdometryW. Xu, Y. Cai, D. He, J. Lin, F. Zhang2022GitHub + IEEE TRO
LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and MappingT. Shan, B. Englot, D. Meyers, W. Wang, C. Ratti, D. Rus2020arXiv:2007.00258
LOAM: Lidar Odometry and Mapping in Real-timeJ. Zhang, S. Singh2014RSS 2014
LINS: A Lidar-Inertial State Estimator for Robust and Efficient NavigationC. Qin, H. Ye, C. Pranata, J. Han, S. Zhang, M. Liu2020arXiv:1907.02233

Textbooks

TitleAuthorsNotes
Kalman Filter from the Ground UpA. BeckerBest starting point. Hands-on numerical examples with MATLAB code. Covers linear, EKF, and UKF. Available at kalmanfilter.net
Optimal State Estimation: Kalman, H-Infinity, and Nonlinear ApproachesD. SimonComprehensive graduate-level text covering all filter variants with exercises. Wiley, 2006.
Stochastic Models, Estimation, and Control (Vol. 1–3)P. S. MaybeckClassic. Ch. 1 freely available at cs.unc.edu. Outstanding intuitive introduction.
Kalman Filtering: Theory and PracticeM. S. Grewal, A. P. AndrewsStrong on both theory and practical implementation. Prentice Hall / Wiley.
Applied Optimal EstimationA. Gelb (ed.)The MIT/Draper Labs classic. Engineering-focused with practical examples. Often called "the Gelb book."
Introduction to Random Signals and Applied Kalman FilteringR. G. Brown, P. Y. C. HwangExcellent introductory text. Wiley, 4th ed.
Probabilistic RoboticsS. Thrun, W. Burgard, D. FoxThe definitive SLAM textbook. Covers EKF-SLAM, particle filters, graph-based SLAM. MIT Press, 2005.
State Estimation for RoboticsT. D. BarfootModern treatment of estimation on Lie groups (SO(3), SE(3)). Essential for error-state formulations. Cambridge, 2017. Free draft at utoronto.ca

Online Tutorials & Resources

ResourceDescriptionLink
kalmanfilter.netFree step-by-step tutorial with numerical examples. Best online introduction.kalmanfilter.net
Welch & Bishop KF PageUNC Chapel Hill's canonical Kalman filter resource page — links to papers, books, software.cs.unc.edu/~welch/kalman
Joan Solà — Quaternion Kinematics for the Error-State Kalman FilterThe essential reference for ESKF with quaternion rotations. Free technical report.arXiv:1711.02508
MATLAB Sensor Fusion ToolboxMathWorks documentation on linear and extended Kalman filters for sensor fusion.mathworks.com
Alan Zucconi — Kalman Filter SeriesVisual, intuitive 5-part tutorial with interactive demos.alanzucconi.com
The Kalman Filter (thekalmanfilter.com)Practical tutorial focused on radar tracking with step-by-step equations.thekalmanfilter.com

Open-Source Implementations

RepositoryDescriptionLink
FAST-LIO / FAST-LIO2HKU-MARS lab. C++/ROS. Iterated error-state Kalman filter with ikd-Tree. The current gold standard for LiDAR-inertial odometry.github.com/hku-mars/FAST_LIO
LIO-SAMMIT. C++/ROS. Factor-graph-based LiDAR-inertial SLAM with loop closure.github.com/TixiaoShan/LIO-SAM
DLIOUCLA. Lightweight LiDAR-inertial odometry with continuous-time trajectories.github.com/vectr-ucla/direct_lidar_inertial_odometry
Faster-LIOParallel sparse incremental voxels for faster map queries.github.com/gaoxiang12/faster-lio