티스토리 뷰
이 글에서는 칼만 필터 알고리즘에 대해서 간단하게 살펴보도록 하겠습니다.
이번 포스팅에서는 칼만 필터의 구현 방법이나 실습 예제 등이 첨부되어 있지 않아 실제로 바로 사용하기에는 어려울 수 있으나 그냥 '칼만 필터'가 이런 거구나~' 하는 개념만 잡고 가시길 바랍니다.
칼만 필터가 저주파 통과 필터(LPF)나 고주파 통과 필터(HPF) 같은 필터와 다른 점이 있다면, LPF와 HPF는 필터가 동작하기 전에 미리 가중치를 결정하고, 동작 중에 가중치 값을 변경시키지 못합니다.
그러나, 칼만 필터에 사용되는 가중치(칼만 이득이라고 합니다.)는 칼만 필터가 수행되면서 그 가중치 값이 알고리즘에 의해 지속적으로 변합니다.
칼만 필터는 측정값을 입력으로 받아, 칼만 필터 알고리즘에 의해 처리된 후 추정값을 출력으로 내놓는 구조이며 출력인 추정값을 다음 단계 계산에 다시 사용하게 되는 재귀적 알고리즘입니다.
칼만 필터 알고리즘은 아래 이미지와 같습니다.
각 변수에 대해 설명하자면
|
측정값 |
|
추정값(a posteriori state) |
|
의 오차 공분산 |
|
의 예측값(a priori state) |
의 예측값 |
또한, 사용되는 시스템 모델에 대해서 설명하자면
|
(이전 추정값)을 통해 추정값을 예측할 때 사용되는 행렬 |
|
을 측정값의 형태로 변환할 때 필요한 행렬
|
|
시스템 노이즈 |
|
측정값 노이즈 |
칼만 필터는 크게 두 가지의 단계로 나뉘어서 진행됩니다.
바로 예측 과정과 추정 과정이라고 하는데, 각 과정에 대한 내용은 밑에서 설명하도록 하겠습니다.
1. 예측 과정
[예측 과정 계산식]
첫번째 단계인 예측 과정에서는 이전 단계에서 계산한 추정값()을 사용하여 시스템 모델()과의 계산을 통해 새로운 추정값을 예측합니다.
이때, 예측한 값이 평균을 기준으로 어느 정도로 분포되어 있는지 이전 오차 공분산()을 사용하여 새로운 오차 공분산()도 함께 예측하게 됩니다.
예측 과정이 끝나게 되면, 칼만 이득을 계산하게 됩니다.
칼만 이득을 계산할 때는 예측 과정에서 계산한 오차 공분산의 예측값()과 측정값의 노이즈()를 사용합니다.
2. 추정 과정
[추정 과정 계산식]
추정 과정에서는 추정값과 오차 공분산을 최종적으로 계산하게 됩니다.
추정 과정에서 추정값을 계산할 때는 예측 과정에서 계산했던 (추정값의 예측값)과 입력으로 받은 (측정값)을 이용합니다.
추정값의 계산식은 예측 과정에서 구한 에 와 의 차이를 보상하여(더하여) 계산하게 됩니다.
이때, 칼만 이득이 사용되는데 바로 와 의 차이()의 결과에 영향을 미칩니다.
칼만 이득은 와 같은 추정값의 계산식에서 값을 조절하여 에 더해주게 됩니다.
3. 칼만 이득
이전에 칼만 필터는 LPF나 HPF와 다르게 가중치()가 계속 변한다고 했는데, 이 커지면 가 에 많은 영향을 미치게 되고, 이 작아지면 의 차이가 에 영향을 작게 미치게 됩니다.
이 변하게 되는 경우에 대해서 극단적으로 예를 들어 설명해보도록 하겠습니다.
[칼만 이득 계산식]
측정값의 노이즈()가 작아지면(0에 수렴하면) 칼만 이득 계산식에 의해 이 커지게 되어 의 계산에 가 많은 영향을 미치게 됩니다.
반대로, 오차 공분산의 예측값()이 작아지면(0에 수렴하면) 칼만 이득 계산식에 의해 이 작아지게 되어 이 대부분 영향을 미치게 되고, 은 매우 미미한 영향만을 미치게 됩니다.
음, 더욱이 이해하기 쉽게 설명하자면 이렇습니다.
(측정값)의 노이즈 이 작아 가 더 신뢰적이면 (추정값)의 계산에 을 더 믿고,
(오차 공분산의 예측값)이 작아 (추정값의 예측값)이 더 신뢰적이면 의 계산에 을 더 믿는다는 뜻입니다.
4. 정리
추정 과정에서 최종적으로 계산한 과 은 다시 칼만 필터 알고리즘이 수행될 때(next time에서) 예측값인 을 구하는 데 사용됩니다.
이것이 칼만 필터를 recursive 알고리즘이라고 부르는 이유입니다.
칼만 필터 알고리즘은 기본적으로 위에서 설명한 바와 같지만, 칼만 필터를 사용할 때 제일 중요한 것은 시스템 모델입니다.
시스템 모델이 실제 시스템과 최대한 비슷해야 최고의 효과를 얻을 수 있습니다.
시스템 모델은 칼만 필터를 수행하면서 칼만 이득처럼 변하는 값이 아니라 동작 전에 미리 설정하는 고정적인 값이므로 얼마나 최적의 시스템 모델을 설정했냐에 따라서 칼만 필터의 성능이 달라질 수 있습니다.
'드론 개발 > 필터' 카테고리의 다른 글
고도필터 구현 시퀀스 (0) | 2018.05.02 |
---|
- Total
- Today
- Yesterday
- 컴파일
- STM32
- 고도필터
- 초기화 리스트
- C++
- 로그
- 드론
- DCM
- c
- 오실로스코프
- 드론개발
- DMA
- compile
- PID
- teraterm
- 멤버 초기화 리스트
- UART
- 칼만필터
- computer_science
- 터미널
- 컴퓨터구조
- SPI
- pwm
- Effective C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |