Skip to the content
FixTheRobot Explore Robotics / UAV / Module 4 / M4-T9

UAV Systems Engineering · Module 4

M4-T9: Visual-LiDAR-Inertial Odometry

Camera gives texture and constraints in the directions where LiDAR is blind; LiDAR gives metric depth where the camera is blind: each repairs the other.

  • Lesson 9 of 15
  • SLAM and Autonomous Localization
  • Research-level
  • About 5 minutes to read

A vehicle that must survive both a dark featureless corridor and a bright geometrically bare field needs more than one exteroceptive sensor. This lesson sets out why camera, LiDAR and IMU are combined, how the combinations are structured, and what must be calibrated.

Learning objectives

After this lesson, you should be able to:

  • Explain the complementary strengths and failure modes of camera and LiDAR.
  • Describe loosely and tightly coupled LiDAR-visual-inertial architectures.
  • Show with an information-matrix example how vision constrains a LiDAR-degenerate direction.
  • List the calibration and synchronisation requirements.

Conceptual explanation

LiDAR provides accurate metric geometry independent of light but can be degenerate in structureless geometry (lesson M2-T13); a camera provides dense texture and constraints along directions that LiDAR cannot see, but needs light and texture and has no direct scale. A visual-LiDAR-inertial system uses the IMU as the common backbone: prediction, deskewing and a shared state; the exteroceptive sensors provide corrections. Examples: LVI-SAM (factor graph, two subsystems that assist each other), R3LIVE and FAST-LIVO2 (filter-based, direct).

Visual-LiDAR-inertial odometryThe IMU propagates the state. LiDAR scans give geometric constraints that fix scale and most directions. Camera images give photometric or feature constraints that fix directions that LiDAR leaves degenerate. Each subsystem monitors its own health and the fusion weights them accordingly.IMUpropagationLiDARgeometry, metricCameratexture, directionFusionfilter or graphHealthdegeneracy, trackingcomplementary information: use whichever constrains each direction
LiDAR, camera and IMU in one estimator.
Complementary conditions
ConditionLiDARCameraCombined
Dark corridorgood (walls) but degenerate along the axisblindLiDAR constrains across, IMU bridges along
Textured corridor with lightdegenerate along the axisgood along the axis (texture)camera constrains the LiDAR-degenerate direction
Open field, brightdegenerate (flat ground)good if texture existscamera constrains horizontal motion
Fog, dustnoisy returnsblindLiDAR with filtering, radar (lesson M2-T15)
Animation through four environments: an open field, a lit corridor, a dark corridor and a dusty hall. For each, small icons show whether the camera, the LiDAR and the IMU are informative, and an uncertainty ellipse for the fused position shows the result. In the lit corridor the camera supplies the missing information along the corridor where the LiDAR is degenerate; in the dark corridor both are weak and the ellipse stretches along the corridor; in dust the camera continues when the LiDAR is noisy.
Complementary failure modes: the camera fails in the dark or without texture, the LiDAR is degenerate in long corridors and noisy in dust, the IMU drifts alone. Each sensor adds an information matrix; the fused covariance is the inverse of the sum. Illustrative information matrices (plan view); the dark corridor is the worst case where only the IMU covers the corridor axis. (Looping, about 6 seconds; drawn and computed for this course with illustrative values.)

Engineering intuition

Information is a matrix: each sensor adds a positive semi-definite contribution; a direction is well constrained if the sum has a large eigenvalue there. LiDAR may contribute nothing along the corridor; a camera looking at textured walls contributes along it. The fusion is therefore not an average but an addition of information in complementary directions. The practical rules: make sure the camera and LiDAR agree in time and extrinsics, and monitor each sensor’s own health so the fused weights follow reality (lesson M2-T16).

Mathematical formulation

Information (Fisher) form: with measurement Jacobians JLJ_{L} (LiDAR) and JCJ_{C} (camera) and noise covariances RLR_{L} and RCR_{C}, the information about the state is the sum:

Information addition
I=JL⊤RL−1JL+JC⊤RC−1JC\mathbf I = \mathbf J_L^{\top}\mathbf R_L^{-1}\mathbf J_L + \mathbf J_C^{\top}\mathbf R_C^{-1}\mathbf J_C
covariance=I−1,degenerate direction: an eigenvalue of I≈0\text{covariance} = \mathbf I^{-1}, \qquad \text{degenerate direction: an eigenvalue of } \mathbf I \approx 0

FAST-LIVO2 (Zheng et al.) estimates with an error-state iterated Kalman filter in which the LiDAR point-to-plane update and the image photometric update are applied sequentially within the same iterated framework, with a unified voxel map whose planes also provide the depth for the photometric patches. Photometric methods additionally need exposure (brightness) handling. LVI-SAM runs a visual-inertial and a LiDAR-inertial system, each using the other’s output for initialisation and scale, with a joint factor-graph smoother.

JLJ_{L}, JCJ_{C}
LiDAR and camera measurement Jacobians with respect to the state.
RLR_{L}, RCR_{C}
noise covariances.

Architecture and data flow

Requirements: synchronised camera, LiDAR and IMU clocks (lesson M7-T8); calibrated camera intrinsics and camera–LiDAR–IMU extrinsics (lesson M7-T16); per-point LiDAR timestamps; exposure handling for photometric methods. Output: odometry with covariance and health for each sensor. Compute: a LiDAR-visual system is the heaviest of the estimators in this track; budget it (lesson M7-T12).

Real-world UAV applications

  • GNSS-denied flight across mixed indoor and outdoor environments.
  • The perception core of Capstone 4.
  • Coloured maps and visual–geometric reconstruction.
  • Redundant odometry with diverse failure modes (lesson M2-T16).

Implementation example

This runs as shown: the translational information matrix of a corridor LiDAR (degenerate along the axis) is added to the information from a camera that observes along-axis motion with a given accuracy. The along-axis standard deviation falls from effectively unbounded to the camera’s level, while the other directions stay LiDAR-accurate.

import numpy as np
rng = np.random.default_rng(0)
# LiDAR in a corridor along x: surface normals are only along y and z, so the x direction carries no information
normals = np.vstack([np.tile([0, 1.0, 0], (300, 1)), np.tile([0, 0, 1.0], (300, 1))]) + 0.01 * rng.standard_normal((600, 3)) * np.array([0, 1.0, 1.0])
normals /= np.linalg.norm(normals, axis=1, keepdims=True)
sigma_L = 0.03
I_lidar = normals.T @ normals / sigma_L ** 2

# camera: tracks texture on the walls; observes motion along the corridor with about 5 cm accuracy per frame and little across
I_cam = np.diag([1 / 0.05 ** 2, 1 / 0.5 ** 2, 1 / 0.5 ** 2])



cov_lidar = np.linalg.inv(I_lidar + 1e-9 * np.eye(3)); cov_both = np.linalg.inv(I_lidar + I_cam)
s_l, s_b = np.sqrt(np.diag(cov_lidar)), np.sqrt(np.diag(cov_both))
print("std (x along, y, z) LiDAR only :", np.round(s_l, 3)); print("std (x along, y, z) LiDAR + cam:", np.round(s_b, 4))
assert s_l[0] > 1000 * s_l[1]                                      # LiDAR alone: the along-corridor direction is unconstrained (huge standard deviation)
assert s_b[0] < 0.06 and s_b[1] < s_l[1] and abs(s_b[0] - 0.05) < 0.01   # the camera pins the along direction to about its own accuracy
assert s_b[1] < 0.03 and s_b[2] < 0.03                            # the other directions remain LiDAR-accurate
Information from a camera fills the direction LiDAR cannot constrain.

Common engineering mistakes

Fusing both with equal weight regardless of health

A blind camera in the dark or a degenerate LiDAR must be down-weighted automatically.

Camera–LiDAR extrinsics from a rough guess

Photometric methods are especially sensitive to them.

Ignoring exposure changes

Photometric residuals are biased by brightness changes.

Treating the system as redundant when failures are correlated

Darkness and dust can defeat both together; add radar.

Underestimating compute

It is the most expensive estimator: measure it on the target.

Failure modes

Failure modes, symptoms and causes
Failure modeHow it shows upLikely cause
Sensor conflictOdometry jumps when one sensor degradesNo health-based weighting
Photometric failureDrift when lighting changesExposure not modelled
Calibration errorSystematic drift or smeared mapExtrinsics or time offset wrong
Common-mode failureBoth sensors fail togetherDust, fog or darkness plus geometric degeneracy

Debugging approach

  1. Plot the information eigenvalues for each sensor in time.
  2. Verify camera–LiDAR extrinsics by projecting the point cloud on the image.
  3. Run ablations: LIO only, VIO only, both.
  4. Check exposure compensation on a lighting-change sequence.

Practical exercises

  1. Compute the information matrix for a camera that looks at a wall ahead and one that looks down.
  2. Evaluate an ablation: LIO only versus LIVO on a public dataset with a corridor.
  3. List the extra calibration needed beyond LIO.
  4. Decide whether to add radar to your design for a dust-prone environment.

Interview questions

Write an answer in your own words, then reveal the model answer. Nothing is sent anywhere.

Question 1

Why combine camera and LiDAR?

Model answer

Their failure modes are complementary: LiDAR is geometric and light-independent but can be degenerate, cameras are texture-based and fill degenerate directions but need light.

Question 2

How does information addition explain the benefit?

Model answer

Each sensor adds a positive semi-definite information matrix; a direction unconstrained by LiDAR can be constrained by the camera, so the sum has no small eigenvalue.

Question 3

What is the main extra calibration burden?

Model answer

Camera–LiDAR–IMU extrinsics and time offsets, and for photometric methods, camera exposure.

References and further reading

Primary papers, official documentation and standards. Each claim above that is specific to a tool or version points here.

What’s next

Mark this lesson

Saved in this browser and synced to your account when you are signed in.

Next lesson

M4-T10: FAST-LIVO2

Describe FAST-LIVO2's direct LiDAR-inertial-visual odometry, what it estimates and its assumptions.