---
id: wiki-2026-0508-autonomous-vehicles
title: Autonomous Vehicles
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [자율주행, AV, self-driving, Tesla FSD, Waymo, robotaxi, SAE levels, end-to-end driving]
duplicate_of: none
source_trust_level: A
confidence_score: 0.92
verification_status: applied
tags: [autonomous-vehicles, robotics, perception, lidar, end-to-end, fsd, waymo, sae-levels, safety-critical]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: C++ / Python
  framework: ROS / Apollo / Autoware / NVIDIA DRIVE
---

# Autonomous Vehicles

## 📌 한 줄 통찰
> **"매 wheels 의 movable computer"**. 매 perception + localization + prediction + planning + control 의 5-stack. 매 modern: 매 end-to-end neural net 의 rule-based 의 superseed. 매 Tesla FSD v12 / Waymo / Mobileye / NVIDIA DRIVE 의 commercialization.

## 📖 핵심

### 매 SAE level
| Level | Description | 예 |
|---|---|---|
| 0 | No automation | manual |
| 1 | Driver assist (cruise) | adaptive cruise |
| 2 | Partial (steering + speed) | Tesla AP, GM Super Cruise |
| 3 | Conditional (eyes off in ODD) | Mercedes Drive Pilot, Honda Sensing |
| 4 | High (no driver in ODD) | Waymo, Cruise (suspended), Zoox |
| 5 | Full (any condition) | 매 not yet |

→ ODD = Operational Design Domain.

### 매 stack

#### 1. Sensors
- **Camera**: 매 cheap, 매 rich. Tesla 의 vision-only.
- **Radar**: 매 long-range, 매 weather-robust.
- **LiDAR**: 매 3D, 매 expensive. Waymo / Cruise 사용.
- **Ultrasonic**: 매 short-range parking.
- **IMU + GPS**: 매 ego-motion.
- **HD Map**: 매 lane / sign / topology.

#### 2. Perception
- 매 detection (3D bbox).
- 매 segmentation (BEV, lane).
- 매 tracking (multi-object).
- 매 sensor fusion (Kalman / DL).

#### 3. Localization
- 매 GPS + IMU + map matching.
- 매 SLAM (LiDAR / visual).
- 매 cm-level accuracy required.

#### 4. Prediction
- 매 surrounding agent 의 trajectory.
- 매 multimodal (multiple intent).
- 매 socially-aware.

#### 5. Planning
- 매 behavior (lane change, merge).
- 매 trajectory (geometry + time).
- 매 motion (control input).

#### 6. Control
- 매 steering + throttle + brake.
- 매 PID / MPC / NN.

### 매 paradigm

#### Modular (전통)
- 매 stack 의 separate.
- 매 explainable.
- 매 error 의 propagate.

#### End-to-End (Tesla FSD v12, Wayve)
- 매 video → 매 control.
- 매 single NN.
- ✅ 매 better edge case.
- ❌ 매 black box, 매 verification 어려움.

#### Hybrid (Waymo)
- 매 modular + 매 NN per stage.
- 매 verifiable.

### 매 challenge
1. **Long tail**: 매 rare event (animal, crash, construction).
2. **Adversarial weather** (snow, fog).
3. **Verification**: 매 billion mile 의 simulation.
4. **Liability**: 매 maker / driver / software.
5. **Trolley problem**: 매 ethical edge.
6. **HD map maintenance**.
7. **Edge case generalization**.

### Players (2026)
- **Tesla**: FSD v12, vision-only, end-to-end.
- **Waymo**: robotaxi (SF, LA, Phoenix).
- **Mobileye**: ADAS supplier.
- **Cruise**: suspended (2024 incident).
- **Zoox** (Amazon): purpose-built.
- **NVIDIA DRIVE**: platform (BYD, Jaguar, Mercedes).
- **Wayve / Comma**: end-to-end.

### 매 simulation
- **CARLA**: open-source.
- **NVIDIA DRIVE Sim** / **DriveWorks**.
- **Waymo Carcraft**.
- **Tesla simulation**: 매 HW + 매 photoreal.

## 💻 패턴

### Sensor fusion (Kalman)
```python
import numpy as np

class KalmanFilter:
    def __init__(self, F, H, Q, R, x0, P0):
        self.F, self.H, self.Q, self.R = F, H, Q, R  # transition, obs, proc noise, meas noise
        self.x, self.P = x0, P0
    
    def predict(self):
        self.x = self.F @ self.x
        self.P = self.F @ self.P @ self.F.T + self.Q
    
    def update(self, z):
        y = z - self.H @ self.x
        S = self.H @ self.P @ self.H.T + self.R
        K = self.P @ self.H.T @ np.linalg.inv(S)
        self.x = self.x + K @ y
        self.P = (np.eye(len(self.x)) - K @ self.H) @ self.P
```

### 3D detection (PyTorch + LiDAR)
```python
# 매 PointPillars / VoxelNet / CenterPoint style
import torch
class PointPillars(torch.nn.Module):
    def forward(self, points):
        # 매 1. voxelize
        pillars = self.voxelize(points, voxel_size=[0.16, 0.16, 4.0])
        # 매 2. PointNet 의 per-pillar feature
        features = self.pointnet(pillars)
        # 매 3. BEV pseudo-image
        bev = self.scatter(features)
        # 매 4. 2D backbone + detection head
        return self.detection_head(self.backbone(bev))
```

### Trajectory prediction (Transformer)
```python
class TrajectoryPredictor(nn.Module):
    """매 surrounding agent 의 multimodal trajectory."""
    def __init__(self):
        self.encoder = TransformerEncoder()
        self.decoder = MultimodalHead(n_modes=6)
    
    def forward(self, agent_history, map_features):
        ctx = self.encoder(agent_history, map_features)
        # 매 6 mode 의 trajectory + 매 confidence
        return self.decoder(ctx)  # 매 (B, 6, T, 2) + (B, 6)
```

### Path planner (RRT*)
```python
def rrt_star(start, goal, obstacles, max_iter=1000):
    nodes = [start]
    parent = {0: None}
    for _ in range(max_iter):
        rand = sample_random()
        nearest = min(range(len(nodes)), key=lambda i: dist(nodes[i], rand))
        new = steer(nodes[nearest], rand, step=1.0)
        if not collides(new, obstacles):
            nodes.append(new)
            parent[len(nodes)-1] = nearest
            if dist(new, goal) < 0.5:
                return reconstruct_path(nodes, parent, len(nodes)-1)
    return None
```

### Behavior planner (FSM)
```python
class BehaviorPlanner:
    def __init__(self):
        self.state = 'KEEP_LANE'
    
    def step(self, scene):
        if self.state == 'KEEP_LANE':
            if scene.front_too_slow and scene.left_lane_clear:
                self.state = 'PREP_LANE_CHANGE_LEFT'
        elif self.state == 'PREP_LANE_CHANGE_LEFT':
            if scene.left_gap_safe:
                self.state = 'LANE_CHANGE_LEFT'
            elif scene.front_clear:
                self.state = 'KEEP_LANE'
        # ...
        return self.state
```

### MPC (Model Predictive Control)
```python
import cvxpy as cp

def mpc_step(x_current, x_ref, horizon=10, dt=0.1):
    x = cp.Variable((horizon+1, 4))  # [x, y, v, ψ]
    u = cp.Variable((horizon, 2))     # [a, δ]
    
    cost = 0
    constraints = [x[0] == x_current]
    for t in range(horizon):
        cost += cp.sum_squares(x[t+1] - x_ref[t+1]) + 0.1 * cp.sum_squares(u[t])
        constraints += [x[t+1] == bicycle_model(x[t], u[t], dt)]
        constraints += [cp.abs(u[t, 1]) <= 0.5]  # steering limit
    
    cp.Problem(cp.Minimize(cost), constraints).solve()
    return u[0].value  # 매 first control 의 apply
```

## 🤔 결정 기준
| 상황 | Approach |
|---|---|
| ADAS L2 | Camera + radar + rule-based |
| Robotaxi | Sensor fusion + HD map (Waymo) |
| Mass market | Vision-only end-to-end (Tesla) |
| Truck (highway) | LiDAR + radar (long-range) |
| Simulation | CARLA + photoreal |
| Ethics edge case | Hardcoded principle + transparent log |

**기본값**: Modular for safety-critical. End-to-end for scale.

## 🔗 Graph
- 부모: [[Robotics]] · [[Computer Vision|Computer-Vision]]
- 변형: [[Tesla-FSD]] · [[Waymo]]
- 응용: [[SLAM]] · [[End-to-End-Driving]]
- Adjacent: [[Reinforcement-Learning]] · [[AI-Safety]]

## 🤖 LLM 활용
**언제**: 매 AV system architecture review. 매 ADAS feature design. 매 simulation scenario. 매 sensor fusion debug.
**언제 X**: 매 specific safety certification (ISO 26262 / SOTIF). 매 medical-grade real-time.

## ❌ 안티패턴
- **Single sensor**: 매 weather / occlusion 의 fail.
- **HD map only** (no perception): 매 stale.
- **No sim 의 verify**: 매 production 의 first encounter.
- **Edge case 의 ignore**: 매 long tail 의 fatal.
- **End-to-end 의 verify 의 X**: 매 unexplained behavior.
- **No graceful degradation**: 매 sensor fail = 매 crash.

## 🧪 검증 / 중복
- Verified (SAE J3016, Waymo / Tesla papers, ISO 26262).
- 신뢰도 A.
- Related: [[Tesla-FSD]] · [[Waymo]] · [[SLAM]] · [[End-to-End-Driving]] · [[AI-Safety]].

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — SAE level + stack + 매 Kalman / PointPillars / RRT / MPC code |
