자율주행 시스템은 인간의 개입 없이 차량이 스스로 인식, 판단, 제어를 수행하는 기술이다. SAE 기준 0~5단계로 자율화 수준을 분류한다.
SAE 자율주행 레벨
| 레벨 | 이름 | 제어 주체 | 예시 |
|---|
| 0 | 비자동화 | 인간 100% | 일반 차량 |
| 1 | 운전자 지원 | 주로 인간 | 크루즈 컨트롤 |
| 2 | 부분 자동화 | 인간 감독 필수 | 테슬라 오토파일럿 |
| 3 | 조건부 자동화 | 시스템 (특정 조건) | 메르세데스 Drive Pilot |
| 4 | 고도 자동화 | 시스템 (지오펜스 내) | 웨이모 로보택시 |
| 5 | 완전 자동화 | 시스템 100% | 미실현 |
자율주행 소프트웨어 아키텍처
센서 입력
┌─────────────────────────────────┐
│ LiDAR │ Camera │ RADAR │ GPS │
└─────────────────────────────────┘
↓ 센서 융합
┌─────────────────────────────────┐
│ 인식 (Perception) │
│ 물체 탐지 | 차선 감지 | 지도 매칭 │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ 예측 (Prediction) │
│ 다른 차량/보행자 경로 예측 │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ 계획 (Planning) │
│ 경로 계획 | 행동 계획 | 모션 계획 │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ 제어 (Control) │
│ 조향 | 가속 | 제동 제어 신호 │
└─────────────────────────────────┘
인식 모델 (YOLOv8 + LiDAR 융합)
python
from ultralytics import YOLO
import numpy as np
# 카메라 기반 물체 탐지
model = YOLO('yolov8n.pt')
def detect_and_fuse(image, lidar_points):
# 1. 카메라 물체 탐지
results = model(image)[0]
detections = []
for box in results.boxes:
cls = int(box.cls[0])
conf = float(box.conf[0])
x1, y1, x2, y2 = box.xyxy[0].tolist()
# 2. LiDAR 포인트와 2D 박스 매핑 (투영)
projected = project_lidar_to_image(lidar_points, camera_matrix)
mask = ((projected[:, 0] > x1) & (projected[:, 0] < x2) &
(projected[:, 1] > y1) & (projected[:, 1] < y2))
depth_points = lidar_points[mask]
if len(depth_points) > 0:
distance = np.median(depth_points[:, 0]) # X축 거리
detections.append({'class': cls, 'conf': conf,
'bbox': (x1,y1,x2,y2), 'distance': distance})
return detections
HD 맵과 로컬라이제이션
HD 맵 (High-Definition Map):
- 정밀도: ±5cm (일반 GPS는 ±3m)
- 내용: 차선, 신호등, 표지판, 도로 경계
- 포맷: OpenDRIVE, NDS, Lanelet2
로컬라이제이션:
- GNSS + IMU 융합 (기본)
- LiDAR 지도 매칭 (NDT, ICP)
- 카메라 시각적 위치 추정
관련 문서
- •[lidar|[LiDAR]]
- •[[digital-twin|디지털 트윈]]
- •[[edge-ai|엣지 AI]]