LiDAR(Light Detection and Ranging)는 레이저 펄스를 방사해 반사된 빛의 귀환 시간으로 거리를 측정하는 원격 감지 기술이다. 자율주행차, 지도 제작, 공간 컴퓨팅에 핵심 센서다.
LiDAR vs 다른 센서 비교
| 센서 | 거리 정밀도 | 해상도 | 날씨 영향 | 비용 |
|---|
| LiDAR | ±2cm | 매우 높음 | 비/안개에 약함 | 높음 |
| RADAR | ±10cm | 낮음 | 강함 | 중간 |
| 카메라 | 추정(소프트웨어) | 매우 높음 | 빛 영향 | 낮음 |
| 초음파 | ±1mm | 낮음 | 강함 | 매우 낮음 |
LiDAR 유형
기계식 LiDAR:
- 회전 거울/센서 어셈블리
- 360° 수평 시야
- Velodyne HDL-64E: 64채널, 120m 범위
- 단점: 크기, 비용, 내구성
솔리드 스테이트 LiDAR:
- MEMS 거울 또는 OPA (광학 페이즈드 어레이)
- 소형, 저비용, 내구성
- 제한된 시야각 (일반적으로 120° 이하)
- Luminar Iris, Innoviz ProX
FMCW LiDAR (주파수 변조 연속파):
- 속도 정보 동시 획득 (도플러 효과)
- 간섭 저항성 높음
- Aeva, Silc Technologies
포인트 클라우드 처리
python
import open3d as o3d
import numpy as np
# 포인트 클라우드 로드
pcd = o3d.io.read_point_cloud("scan.pcd")
# 다운샘플링 (Voxel Grid)
voxel_down = pcd.voxel_down_sample(voxel_size=0.05)
# 법선 벡터 추정
voxel_down.estimate_normals(
search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
# DBSCAN 클러스터링 (물체 분리)
labels = np.array(voxel_down.cluster_dbscan(
eps=0.3, min_points=10, print_progress=True))
max_label = labels.max()
print(f"포인트 클라우드에서 {max_label+1}개 물체 감지")
# 평면 분할 (도로 감지)
plane_model, inliers = voxel_down.segment_plane(
distance_threshold=0.02, ransac_n=3, num_iterations=1000)
[a, b, c, d] = plane_model
print(f"도로 평면: {a:.2f}x + {b:.2f}y + {c:.2f}z + {d:.2f} = 0")
자율주행 LiDAR 파이프라인
원시 포인트 클라우드
↓ 그라운드 제거
↓ 물체 클러스터링
↓ 3D 바운딩 박스 생성
↓ 물체 분류 (PointNet, VoxelNet)
↓ 추적 (칼만 필터)
↓ 경로 계획 입력
관련 문서
- •[autonomous-systems|[자율주행 시스템]]
- •[[ar-vr-xr|AR/VR/XR 기술 개요]]
- •[spatial-computing|[공간 컴퓨팅]]