LiDAR measures distance using laser light.

  • A laser sends out a short light pulse.
  • It reflects off objects in the environment.
  • A photodetector measures the time of flight (how long the light takes to return).
  • Light travels extremely fast, resulting in very accurate range measurements

Each laser provides a point in space and sometimes may also provide an intensity. A full scan produces a 3D map of the surroundings.

LiDAR Types

Mechanical spinning LiDAR:

  • Rotates 360° continuously
  • Sends out many beams at different vertical angles
  • Creates a 2D or 3D point cloud
  • Common example: Velodyne VLP-16

Solid-State LiDAR (no moving parts)

  • Uses MEMS mirrors or phased light array
  • Smaller, cheaper, robust, but narrower FOV
  • Example: Intel RealSense L515

Robot Pose and LiDAR Data

At time , the robot receives a LiDAR scan , which consists of range measurements, , each with a corresponding bearing angle .

Each point of first needs to be coordinate transformed to in the LiDAR sensor frame:

Then, we can convert to in the global frame:

Beam Sensor Model

How do we get a posterior for the measurement, ? How likely is this LiDAR scan, assuming the robot is at pose looking at map ?

For each ray, we consider 3 main sources of noise:

  • Correct range with local measurement noise: nominal noise, etc. This would give a Gaussian centered at the expected range.
  • Sensor failure/max-range error: Missed data, light absorbing objects. This would give a distribution with a spike at max
  • Uniformly-distributed noise: Phantom readings, cross-talk, etc. This would give a uniform distribution obviously.

The posterior can be found as a weighted sum of these:

Assuming independence of each beam ( for each ), this would be a multiplication: