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:
