-
칼만필터란 무엇인가, Python(파이썬) filterpy/kalman_filter 해석프로젝트/CounterUAV 2018. 1. 9. 05:56
칼만 필터는 측정된 데이터를 기반으로 통계적 예측을 하는 알고리즘이다. an optimal recursive data processing algorithm이라고 불린다.
잡음이 포함되어 있는 선형 역학계의 상태를 추적하는 재귀 필터로 해당 순간에만 측정한 결과만 사용한 것보다는 좀 더 정확한 결과를 기대할 수 있다.
크게 예측과 업데이트, 두 가지로 나눌 수 있다. 예측은 현재 상태 예측이고, 업데이트는 현재 상태에서 관측된 측정까지 포함한 값을 통해서 더 정확한 예측을 하는 것이다.
칼만 필터는 다양한 예측 분야에서 사용되고 있는데 LKF보다는 EKF, UKF등이 더 많이 사용된다.(실제 환경은 비선형이고 잡음도 가우시안(Gaussian)이 아닌 경우가 많기 때문)
*선형 역학계 : 통계학 용어로, 잠재 변수가 마르코프 연쇄에 연결되어있고 선형 관계가 주변 변수 사잉에 속해 있는 베이시안 모형의 일종이다.
* LKF : Linear Kalman Filter
* EKF : Extended Kalman Filter, 선형성 가정을 완화시켜 확장시킨 버전, 최적의 수행은 아니고 초기 추정이 틀릴경우 발산할 수 있음
* UKF : the Unscented Kalman Filter, 상태 천이와 관찰모델이 매우 비선형일 경우 사용됨
파이썬 칼만필터 코드 해석 https://github.com/rlabbe/filterpy/blob/master/filterpy/kalman/kalman_filter.py
-매개변수
dim_x : 상태 변수의 수로, 두 개체의 속도와 위치를 추적하고 있다면 4가 된다 (두 개체 * (속도 + 위치))
dim_z : 측정 입력(measurement input)의 수, 센서가 (x, y)위치를 제공한다면 2가 된다
dim_u : 제어 입력(control input)의 수
-속성
x : numpy.array(dim_x, 1), State estimate vector 상태 측정 벡터
P : numpy.array(dim_x, dim_x), Covariance matrix 공분산 행렬, 여러 변수와 관련된 공분산을 포함하는 정방형 행렬
R : numpy.array(dim_z, dim_z), Measurement noise matrix 측정 잡음 행렬
Q : numpy.array(dim_x, dim_x), Process noise matrix 프로세스 잡음 행렬
B : numpy.array(dim_x, dim_z), Control transition matrix, 제어 천이 행렬
F : numpy.array(), State transition matrix 상태 천이 행렬, 시간의 변화에 따른 상태의 변화를 야기시키는 행렬
H : numpy.array(dim_x, dim_x), Measurement function, 측정 기능
-읽기 속성
y : numpy.array, 갱신 단계의 나머지
K : numpy.array(dim_x, dim_z), 업데이트 단계의 칼만 게인
S : numpy.array, 측정 공간에 불확실하게 투영되는 시스템
'프로젝트 > CounterUAV' 카테고리의 다른 글
[파이썬] 함수 및 코드 정리(zeroMQ & FFT & KalmanFilter) (0) 2018.01.24 FFT(고속푸리에 변환)란 무엇인가 (2) 2018.01.09