티스토리 뷰

IT

칼만 필터

out of coding 2018. 1. 8. 15:04

아 오늘 너무 졸리네요.

그래서 글을 하나 적어볼까 합니다.


이전에 프로젝트를 할때 cocos2d-x를 이용하여서 게임을 만든적이 있는데요.

센서를 이리저리 움직여서 공을 빼내는 게임이었드랬죠. ㅎ

이것을 만들기 위해서 센서를 이리저리 움직이니 너무 값들이 펑펑 튀어서, 이것을 개선하기 위해서 찾다 보니 알게 된것이 칼만 필터입니다.


칼만 필터?

노이즈를 어느 정도 효과적으로 없애주는 필터를 말한다.

역시 나는 말을 잘 못하기 때문에 위키를 링크해드립니다. ㅎㅎㅎ

https://ko.wikipedia.org/wiki/%EC%B9%BC%EB%A7%8C_%ED%95%84%ED%84%B0


실제로 이것을 사용하여서 프로젝트에 크나큰 효과를 본것이 사실입니다.

처음에 실제로는 일단 접하게 된것이 안드로이드 소스입니다. aka. Java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class KalmanFilter {
    private double Q = 0.00001
    private double R = 0.001;
    private double X = 0, P = 1, K;
    
    // 생성자에는 초기값을 넣어주어야 한다. 이전에 수치가 없으면 아무 의미가 없으므로
    KalmanFilter(double initValue) {
        X = initValue;
    }
 
    // 현재값을 받아 계산된 공식을 적용하고 반환한다
    public double update(double measurement) {
        measurementUpdate();
 
        X = X + (measurement - X) * K;
 
        return X;
    }
 
    // 이전의 값들을 공식을 이용하여 계산한다.
    private void measurementUpdate() {
        K = (P + Q) / (P + Q + R);
        P = R * (P + Q) / (R + P + Q);
    }
}
cs


그냥 클래스만 가지고 값을 연속적으로 받아와서 사용할 경우에, 그냥 사용하면 됩니다.

아주 쉽죠? ㅎㅎ

'IT' 카테고리의 다른 글

CLI?  (0) 2019.07.10
Android Phone. 외장 SD카드를 내부 저장소 용량에 추가하기  (0) 2018.06.30
MVC, MVP, MVVM  (0) 2017.10.12
전처리, 컴파일, 링킹, 빌드, 증분빌드, dll, lib  (0) 2017.09.01
아스키 코드표  (0) 2015.11.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함