ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 칼만필터란 무엇인가, 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, 측정 공간에 불확실하게 투영되는 시스템

    댓글

Designed by Tistory.