반응형
안녕하세요! ✨
앞서 Day 22에서는 Python으로 1D 칼만필터 구현을 해봤습니다.
오늘은 그 한계를 넘어, 비선형 시스템에서도 활용 가능한 확장 칼만필터(EKF: Extended Kalman Filter) 를 소개합니다.

🔍 왜 EKF가 필요한가?
- 기본 칼만필터(KF)는 선형 시스템에서만 최적의 성능을 발휘합니다.
- 하지만 실제 자율주행 환경은 대부분 비선형 시스템입니다.
- 차량의 이동 (x, y 좌표 변환)
- GPS 좌표 → 차량 위치 변환
- 레이더 측정(거리, 각도) → 차량 속도 추정
👉 이런 상황에서는 EKF(Extended Kalman Filter) 가 필요합니다.
⚙️ EKF 기본 아이디어
- KF 수식에서 선형 행렬(A, H) 대신, 비선형 함수 f(·), h(·) 를 사용합니다.
- 예측과 업데이트 과정에서 Jacobian(야코비안 행렬) 으로 선형 근사를 합니다.
🧮 EKF 단계별 수식
1. 예측 단계 (Prediction)
r
x(k|k-1) = f( x(k-1), u(k) )
P(k|k-1) = F(k-1) · P(k-1) · F(k-1)^T + Q
P(k|k-1) = F(k-1) · P(k-1) · F(k-1)^T + Q
- f(·) : 비선형 상태 전이 함수
- F(k-1) : f(·)의 Jacobian (x에 대해 선형화)
2. 업데이트 단계 (Update)
mathematica
K(k) = P(k|k-1) · H(k)^T · ( H(k) · P(k|k-1) · H(k)^T + R )^-1
x(k) = x(k|k-1) + K(k) · ( z(k) - h(x(k|k-1)) )
P(k) = ( I - K(k) · H(k) ) · P(k|k-1)
x(k) = x(k|k-1) + K(k) · ( z(k) - h(x(k|k-1)) )
P(k) = ( I - K(k) · H(k) ) · P(k|k-1)
- h(·) : 비선형 관측 함수
- H(k) : h(·)의 Jacobian (x에 대해 선형화)
🚘 자율주행에서 EKF 활용 사례
- GPS + IMU 융합
- GPS는 저주파(위치) 정보, IMU는 고주파(가속도) 정보 → EKF로 융합
- Radar Tracking
- 레이더가 극좌표(거리, 각도)를 제공 → 이를 직교좌표(x, y)로 변환 시 EKF 필요
- SLAM (Simultaneous Localization and Mapping)
- 로봇·차량이 동시에 위치 추정 + 지도 작성
📊 EKF의 한계
- 선형 근사(Jacobian) 때문에 큰 비선형에서는 오차 발생
- 연산량이 많아 실시간 적용 시 최적화 필요
- 이를 개선한 UKF(Unscented Kalman Filter) 도 존재
📌 정리
- EKF는 비선형 시스템에서 칼만필터를 확장한 기법
- 핵심: f(·), h(·) 같은 비선형 모델을 Jacobian으로 선형 근사
- 자율주행에서 GPS+IMU 융합, 레이더 추적, SLAM에 활용
반응형
🚀 다음 글 예고
다음 글에서는 [Day 24: EKF로 비선형 상태 추정 실습] 을 다룹니다.
실제 Python 코드와 ROS2 환경에서 EKF를 적용해 비선형 시스템 추정을 실습해보겠습니다.
✅ 오늘 글이 도움이 되셨다면 좋아요와 공유 부탁드립니다.
반응형
'자율주행' 카테고리의 다른 글
| 🔗 Day 25: 센서 융합 (LiDAR + IMU) 실습 (0) | 2025.09.21 |
|---|---|
| 🔄 Day 24: EKF로 비선형 상태 추정 실습 (0) | 2025.09.20 |
| 🐍 Day 22: Python으로 1D 칼만필터 구현 (0) | 2025.09.18 |
| 📐 Day 21: 기본 칼만필터 (선형 KF 수학적 유도) (0) | 2025.09.17 |
| 🤖 Day 20: ROS2에서 간단한 센서 데이터 융합 실습 (0) | 2025.09.16 |