2019년 3월 6일 수요일

칼만필터 예제

1. 기본코드
public class Kalman {
    private static final double Q = 0.00001;
    private static final double R = 0.001;

    private double P = 1;
    private double X = 0;
    private double K;


    public Kalman(double value) {
        X = value;
    }

    // 계산
    private void measurementUpdate() {
        K = (P + Q) / (P + Q + R);
        P = R * (P + Q) / (P + Q + R);
    }

    // 현재값을 받아 계산된 공식을 적용하고 반환한다
    public double update(double measurement) {
        measurementUpdate();
        X = X + (measurement - X) * K;
        return X;
    }

}

- 상수 Q와 R의 이해가 필요
- 주 사용처 : 센서(온도, 습도, 자기장, 가속도계), RSSI 시그널 등의 오차 계산
- 칼만필터 위키백과 :
https://ko.wikipedia.org/wiki/%EC%B9%BC%EB%A7%8C_%ED%95%84%ED%84%B0

댓글 없음:

댓글 쓰기