칼만 필터 노트
1386 단어 일상 기록
double KalmanFilterLossPr(double x) const {
#define KALMAN_Q
#define KALMAN_R
double R = KALMAN_R;
double Q = KALMAN_Q;
static double x_last;//
double x_mid = x_last;
double x_now;
static double p_last;// 0
double p_mid ;
double p_now;
double kg;
x_mid = x_last;
p_mid = p_last;
kg = p_mid / (p_mid + R);
x_now = x_mid + kg * (x - x_mid);
p_now = (1 - kg) * p_mid + Q;
p_last = p_now;
x_last = x_now;
return x_now;
}
2. 매개 변수 설명:
Q: 프로세스 소음은 작은 시스템일수록 수렴하기 쉽고 모델이 예측한 값에 대한 신뢰도가 높다.그러나 너무 작으면 발산하기 쉽다. 만약에 Q가 0이라면 우리는 예측치만 믿는다.Q값이 클수록 예측에 대한 신뢰도가 낮아지고 측정값에 대한 신뢰도가 높아진다.만약 Q값이 무궁무진하다면 우리는 측정값만 믿을 것이다.
R:소음을 측정하는데 너무 작고 너무 크면 반드시 적합하지 않다.R이 너무 크면 칼만 필터의 응답이 느려집니다. 새로 측정한 값에 대한 신뢰도가 떨어지기 때문입니다.작은 시스템일수록 수렴이 빠르지만 너무 작으면 진동이 일어나기 쉽다.
P: 오차 합방차 초기값은 우리가 현재 예측 상태에 대한 신뢰도를 나타낸다.그것이 작을수록 우리는 현재의 예측 상태를 믿게 된다.그것의 값은 초기 수렴 속도를 결정하는데, 일반적으로 비교적 작은 값을 설정하여 비교적 빠른 수렴 속도를 얻기 시작한다.칼만 필터가 교체됨에 따라 P의 값은 끊임없이 변할 것이다. 시스템이 안정된 상태에 들어간 후에 P값은 가장 작은 추정 방차 행렬로 수렴된다. 이때 칼만의 이득도 가장 좋기 때문에 이 값은 초기 수렴 속도에 영향을 줄 뿐이다.
3. 참고
《Kalman Filter For Dummies》
《How a Kalman filter works, in pictures》
《칼만 필터의 간단한 실현(Matlab & OC)》