What is LiDAR?
LiDAR (Light Detection and Ranging) is a remote sensing method that uses light in the form of a pulsed laser to measure ranges (variable distances) to the Earth. These light pulses—combined with other data recorded by the airborne system—generate precise, three-dimensional information about the shape of the Earth and its surface characteristics.
Key Capabilities
- Precise distance measurement (±2cm)
- Day and night operation (active source)
- Direct 3D Point Cloud generation
- Long range detection (200m+)
Common Applications
- Autonomous Vehicles (Self-driving cars)
- SLAM (Simultaneous Localization & Mapping)
- Topographical Surveying
- Industrial Automation & Safety
Mechanical Spinning LiDAR
The classic "spinning bucket" LiDAR that rotates a laser array to capture a 360° view of the environment.
⚙️ Working Principle
A physically rotating assembly spins laser Emitters and detectors at high speed (5-20Hz). By measuring the Time of Flight (ToF) for lasers to return, it builds a 360° 3D point cloud.
Specifications
✓ Advantages
- Full 360° view
- Proven technology
- Long range
- High point density
✗ Disadvantages
- Moving parts (wear & tear)
- Bulky
- Expensive
- High power consumption
Solid-State LiDAR (MEMS/FMCW)
Compact LiDAR with no macroscopic moving parts, using mirrors or optical phased arrays to steer the beam.
⚙️ Working Principle
MEMS mirrors oscillate to steer the laser beam, or Optical Phased Arrays (OPA) use wave interference to steer light electronically. FMCW (Frequency Modulated Continuous Wave) variants can also detect velocity (Doppler effect).
Specifications
✓ Advantages
- Robust (no big moving parts)
- Compact
- Cheaper at scale
- Velocity data (FMCW)
✗ Disadvantages
- Limited Field of View (not 360°)
- Lower point density than high-end mechanical
- Temperature sensitivity
Flash LiDAR
Captures an entire 3D scene in a single light pulse, similar to how a camera takes a photo.
⚙️ Working Principle
A diffuse laser pulse illuminates the entire scene at once. A 2D array of SPAD (Single Photon Avalanche Diode) detectors measures the time-of-flight for every pixel simultaneously.
Specifications
✓ Advantages
- Instant capture (no motion distortion)
- High vibration resistance
- Compact
- High frame rate
✗ Disadvantages
- Shorter range (power limited)
- Lower signal-to-noise ratio
- Interference issues
Scanning LiDAR (Galvo/Prism)
Uses galvanometers or rotating prisms to scan the laser beam in unique patterns (e.g., flower pattern).
⚙️ Working Principle
Two prisms rotate at different speeds to create a non-repetitive scanning pattern. Over time, the coverage of the scene increases, allowing near 100% coverage if the sensor or scene is static.
Specifications
✓ Advantages
- Very long range
- High coverage over time
- Cost-effective
- Reliable
✗ Disadvantages
- Non-uniform sampling instant-to-instant
- Requires accumulation for full detail
Coaxial LiDAR Systems
Laser beam is emitted and received along the same optical axis, often used in single-point measurement or industrial scanning.
⚙️ Working Principle
The transmitted beam and received reflection share the same optical path using a beamsplitter. This ensures no shadowing effects ("parallax error") closer to the sensor.
Specifications
✓ Advantages
- No shadow effects
- High precision
- Compact optical head
✗ Disadvantages
- Often point-based or slower scanning
- Specialized use cases
LiDAR Type Comparison
| Type | Range | Field of View | Durability | Cost | Typical Use |
|---|---|---|---|---|---|
| Mechanical Spinning | 100m+ | 360° x 40° | Medium | High ($$$-$$$$) | Autonomous Cars |
| MEMS Solid-State | 50-200m | 120° x 30° | High | Medium ($$) | Drones / ADAS |
| Flash LiDAR | < 50m | Wide Area | Very High | Medium ($$) | Short-range Safety |
| Scanning (Prism) | 200m+ | 70° Circular | High | Low-Medium ($) | Economy Mapping |
| 2D Laser Scanner | 10-30m | 270° (Planar) | High | Low ($) | Indoor AGVs |
LiDAR Selector Tool
Where will your robot operate?
import open3d as o3d
import numpy as np
# Load a Point Cloud from a LiDAR scan file (PCD format)
pcd = o3d.io.read_point_cloud("scan_01.pcd")
print(f"Loaded {len(pcd.points)} points.")
# Pre-processing: Downsample the cloud using Voxel Grid Filter
# This reduces data size while preserving shape, commonly done for real-time processing
voxel_size = 0.05 # 5cm voxels
downpcd = pcd.voxel_down_sample(voxel_size=voxel_size)
# Segmentation: Remove ground plane (RANSAC algorithm)
plane_model, inliers = downpcd.segment_plane(distance_threshold=0.02,
ransac_n=3,
num_iterations=1000)
[a, b, c, d] = plane_model
print(f"Ground Plane Equation: {a:.2f}x + {b:.2f}y + {c:.2f}z + {d:.2f} = 0")
inlier_cloud = downpcd.select_by_index(inliers) # The Ground
outlier_cloud = downpcd.select_by_index(inliers, invert=True) # The Obstacles
# Visualization
inlier_cloud.paint_uniform_color([0.6, 0.6, 0.6]) # Gray Ground
outlier_cloud.paint_uniform_color([1, 0, 0]) # Red Obstacles
o3d.visualization.draw_geometries([inlier_cloud, outlier_cloud])