대상: 자율주행 시스템에서 주변 객체의 미래 움직임(trajectory) 을 예측하는 과정을 이해하고 싶은 개발자
환경: ROS/ROS2 기반 자율주행 인식·예측 파이프라인 (Perception → Prediction → Planning)
1. 문제/주제 요약
자율주행 차량이 안전하게 주행하려면,
현재 주변의 객체(차량, 사람, 자전거 등)를 인식하는 것만으로는 부족합니다.
다음 몇 초 동안 이들이 어디로, 얼마나 빠르게 움직일지를 미리 알아야 합니다.
이 기능을 담당하는 것이 바로 Prediction(예측) 단계입니다.
Prediction은 인식 결과(위치, 속도, 방향 등)를 입력으로 받아,
“각 객체의 미래 궤적(trajectory)” 을 시간축으로 추정합니다.
2. Prediction 단계의 역할
자율주행 전체 파이프라인에서 Prediction은 다음 위치에 있습니다:
[Sensor Data]
↓
Perception (객체 인식)
↓
Prediction (미래 궤적 예측)
↓
Planning (경로 계획)
↓
Control (제어)
- Perception: 지금 어떤 객체가 어디 있는가?
- Prediction: 앞으로 어디로 갈 것인가?
- Planning: 그럼 나는 어디로 가야 안전한가?
즉, Prediction은 미래 시뮬레이터(Future Simulator) 역할을 합니다.
3. 입력과 출력
| 구분 | 설명 | 예시 |
|---|---|---|
| 입력 | Perception 결과 (객체 위치, 속도, 방향, 클래스 등) | /perception/tracked_objects |
| 출력 | 각 객체의 미래 궤적 (time-stamped position list) | /prediction/objects |
출력 예시:
object_id: 21
type: "car"
predicted_trajectories:
- probability: 0.7
trajectory: [[x: 20.1, y: 3.2, t:0.5], [x: 22.0, y: 3.4, t:1.0], [x: 25.0, y:3.8, t:2.0]]
- probability: 0.3
trajectory: [[x: 19.5, y: 4.5, t:0.5], [x: 20.0, y: 6.0, t:1.0]]
4. Prediction의 주요 접근 방식
Prediction에는 크게 물리 모델 기반과 행동 모델(Behavior) 기반 두 가지 접근이 있습니다.
(1) 물리 기반 모델 (Physics-based Prediction)
“현재 속도와 방향이 유지된다고 가정하고 미래 위치를 계산”
가장 단순하고 빠르며, 기본 예측에 사용됩니다.
- Constant Velocity (CV) 모델
x(t+Δt) = x(t) + vx * Δt y(t+Δt) = y(t) + vy * Δt - Constant Acceleration (CA) 모델
x(t+Δt) = x(t) + vx * Δt + 0.5 * ax * Δt² - Motion with Yaw Rate (CTR / CTRV)
차량의 회전(조향 각속도)을 고려한 모델
ROS2에서는 EKF/UKF 필터 내에서 내부적으로 이 모델을 사용합니다.
✅ 장점: 계산이 빠르고 안정적
⚠️ 단점: 차선 변경, 회전, 정지 등 행동 변화 예측 불가
(2) 행동(Behavior) 기반 모델
“객체가 현재 상황(차선, 신호, 주변 차량)을 고려해 어떤 행동을 할지 판단”
차량이나 보행자의 의도(intent) 를 추정한 뒤,
그 행동에 맞는 여러 궤적 후보를 생성합니다.
예시:
- 차량: 직진 / 좌회전 / 우회전 / 정지
- 보행자: 도로 진입 / 횡단 중단 / 대기
예시 구조
object_id: 42
possible_behaviors:
- type: "straight" (P=0.6)
- type: "left_turn" (P=0.3)
- type: "stop" (P=0.1)
이후 각 행동별로 궤적을 생성하고,
최종적으로 확률(weighted trajectory)을 합산합니다.
예측 엔진 내부에서는 차로 구조(HD Map) 와 신호등 상태를 함께 고려합니다.
(3) 학습(Deep Learning) 기반 모델
최근에는 시계열 데이터 기반의 DNN 모델이 Prediction의 주류로 떠오르고 있습니다.
| 모델 | 핵심 아이디어 | 특징 |
|---|---|---|
| LSTM / GRU | 과거 위치 시퀀스를 입력으로 미래 궤적 예측 | 보행자 궤적 예측에 적합 |
| Social-LSTM | 주변 객체 간 상호작용을 반영 | 군집 보행 예측 |
| Graph-based (GNN) | 객체 간 관계를 그래프로 표현 | 차량 간 상호 영향 반영 |
| Transformer / TrajectoryNet | Attention 기반 멀티모달 예측 | 여러 행동 후보를 동시에 추정 |
| VectorNet / MotionNet | 도로 맵 + 궤적을 벡터화 | 고정밀 경로 예측 (Autoware AI 적용 사례 있음) |
이 모델들은 ROS2 상에서 TensorRT 또는 ONNX 런타임을 통해 실시간 동작 가능합니다.
5. 예측 결과의 활용 (Planning 단계로의 연결)
예측된 객체 궤적은 경로 계획(Planning) 모듈로 전달되어 다음과 같이 활용됩니다:
1️⃣ 충돌 예측 (Collision Check)
- 내 차량의 예정 경로와 주변 객체의 예측 궤적이 겹치는가?
- 겹친다면
TTC < 3초→ 감속 또는 정지 판단
2️⃣ Behavior Planning (행동 결정)
- 앞차가 정지 예측 → 나도 감속 준비
- 보행자 진입 예측 → 횡단보도 접근 속도 제한
3️⃣ 경로 재계획 (Replanning)
- 예측된 궤적이 내 경로와 충돌 → 경로 우회 또는 차선 변경
6. ROS2 예시 흐름 (Autoware Universe 기준)
/perception/tracked_objects
↓
/prediction/obstacle_trajectory_predictor
↓
/prediction/objects
↓
/planning/behavior_path_planner
↓
/planning/trajectory
obstacle_trajectory_predictor: CV/CA/CTR 기반 예측 수행behavior_path_planner: 예측 결과를 기반으로 경로 생성 및 회피 판단
7. 추가 팁 / 자주 하는 실수
- 좌표계 불일치 → 예측 궤적이 실제 도로와 어긋남 (
mapvsbase_link) - 속도 노이즈 미보정 → CV 모델에서 궤적이 심하게 흔들림
- HD Map 연결 누락 → 차선 변경·회전 방향 예측 실패
- 보행자 예측 과소평가 → 정지 상태에서 돌발 진입 못 잡는 문제
🔍 Tip:
rviz2에서/prediction/objects토픽을 시각화하면
각 객체의 미래 궤적을 화살표나 점선으로 확인할 수 있습니다.
8. 정리
Prediction은 자율주행 시스템의 “미래 판단 뇌” 역할을 합니다.
핵심 개념은 다음과 같습니다:
- 현재 상태(State) 를 기반으로 미래 궤적을 추정한다.
- 물리 모델 + 행동 모델 + 학습 모델을 상황에 따라 조합한다.
- 예측 결과는 Planning 모듈에서 경로 생성 및 회피 판단에 직접 사용된다.
정확한 예측은 곧 안전한 주행 판단의 기반입니다.