Research/Robotics

kalman filter, extended kalman filter, unscented kalman filter...

shhyun 2018. 4. 22. 21:29

  kalman filter는 대부분 잘 알고 있고, 대단히 많은 내용들이 알려져 있기 때문에 핵심이 되는 내용 몇 가지 내용만 기록해두려 한다.  wiki 나 다른 자료들을 보면, kalman filter가 prediction과 update라는 두 개의 흐름 구조를 갖고 있는 것을 쉽게 알 수 있다. 대체 prediction 과 update 는 어떤 원리를 기본으로 두고 하게 되는 것인가? 


1. gaussian

  kalman filter 의 update 는 bayes rule 을 기본으로 product 의 성질을 갖고 있다. 또한, prediction 은 convolution 연산에 해당(사실상 덧셈)하며, total probability 을 계산한다. 사실 이렇게 말로 써놓으면 뭔 말인가 싶은데, 그림으로 가볍게 살펴보면 그렇게 어렵지 않다. (물론, 개념적인 부분만 한정해서 그렇다.)


  여기 그렇게 많이 보던 gaussian 이다.  평균 μ 와 편차 σ 를 따르는 gaussian 함수는 상기의 수식과 같이 정의된다. 다들 알고 있는 바와 같이 대부분의 자연 현상을 모델링 하는데 있어서 가장 많이 사용하는 함수로 알려져 있다. kalman filter 는 gaussian 을 다루는 filter 라고 할 수 있는데, 대체 prediction 과 update 는 gaussian 과 무슨 상관이란 말인가?


  prediction 과 update 중 우선 update 를 살펴보면, 엄밀히 말하면, measurement update 인데, 위의 그림과 같이 구성되어 있다. 풀어서 설명을 하자면 prior p(x) 는 이전에 알고 있는 사전 지식에 해당한다고 생각하면 되고, measurement p(z|x) 는 센서로부터 취득된 데이터라고 생각하면 된다. 그리고 updated results 는 이러한 취득된 데이터로부터 갱신해 나가게 되는 새로운 확률분포 x 에 해당하는데, p(x|z) 를 계산하는데 bayes rule이 적용된다. 아래의 μ' 과 σ' 은 수식적으로 계산하는 부분을 정리했을 뿐이다. 즉, update 부분은 어떤 센서로부터 측정된 데이터를 알고자 하는 사전지식에 업데이트하기 위해 확률 분포를 정의하는 부분에 해당한다.


  prediction 은 그럼 무엇일까? prediction 은 더 단순하고 간단한데, 이미 알고 있던 확률 분포에 다른 확률분포를 합산하여 새로운 값으로 갱신하는 역할을 한다. 즉, total probability 의 개념이 적용되며, convolution(addition) 연산이 내부적으로 사용된다. 

  정리하자면, 결국 kalman filter의 풀이 방식을 보면 bayes rule을 기본으로 활용하고, 측정된 값을 토대로 예측하기 위한 확률 분포를 정의하고, 기존에 있던 값을 의미하는 확률 분포에 더하여 새로운 확률 분포 값으로 갱신해준다고 할 수 있다.

  그리고 위의 지식을 바탕으로 다시 해석해보자면, kalman filter 는 system 의 model 을 정의 했을 때, 그 모델의 노이즈나 에러에 해당하는 term 이  gaussian distribution 을 가진다고 가정하고, 위에 기반한 방식으로 system 에 발생하는 노이즈나 에러를 최소화 하는 형태로 시스템을 update 할 수 있다는 것이다. 그로 인해서 우리가 센서자체가 갖고 있는 노이즈들을 핸들링 하고, 더 정교한 tracking/estimation 등이 가능하다는 것인데... 얼마나 놀라운 일인가? 여기까지 공감이 간다면 kalman filter 는 대강 감이 올 것 같다.

  그리고 extended kalman filter 나 unscented kalman filter 나 결국 다 kalman filter 이기 때문에 같은 구조를 가지고 있다. 그런데 대체 왜 다른 형태로 정의된 3가지 kalman filter 가 있는 것일까?


2. modelling

  결국 kalman filter 에서 extended kalman filter, 그리고 unscented kalman filter 에 이르기까지 새로운 형태의 kalman filter 가 만들어지게 된 이유는 이 모델링 때문이다. 우리가 state transition equation 과 measurement equation 을 정의할 때, 부득이하게 non-linear term 이 발생하고, 여기서 이것을 handling 하기 위해 미분하여 jacobian 을 핸들링하게 되면, extended kalman filter 가 정의된다.

  조금 더 자세히 말하자면, system 의 특성을 볼 때, 특정 구간에서 linearization 을 통해 문제를 해결할 수 있다면, non-linear function 을 taylor expansion 으로 풀어내고, 그 구간 내에서 jacobian 을 계산하여 핸들링 하면 extended kalman filter 가 된다. 즉, kalman filter 자체가 linear system 을 가정하고 만들어졌기 때문에, 이에 대한 non-linear extension 이 extended kalman filter 가 된다. 그러므로 extended 하는 방식에 있어서 수많은 modification 이 있는데, 대부분 system modelling 에 따라서 linearization 을 하는 방법들에 포커스가 맞춰져 있다.

  또한, 여기서 한발 더 나아가서 이도저도 다 귀찮으니, state transition model 에 이러한 term 을 모조리 때려박고, gaussian process 로 모든걸 처리하게 되면 unscented kalman filter 가 정의된다. unscented kalman filter 는 일부 값을 sampling 하여, 임의로 약간의 변동성을 추가하여 그 값들을 가지고 gaussian distribution 을 계산하게 되는데, 엄밀히 말해 완벽하게 시스템을 모사하는 것을 목표로 하지 않는다. 다만, jacobian 을 계산하는 과정이 필요 없고, 그로 인하여 시스템의 모델링이 단순해지는 장점이 있지만, 통상적으로는 연산량은 unscented kalman filter 가 조금 더 많은 것으로 알려져 있다. (sigma rule 이나 계산 하는 방식에 대해서는 wiki 를 참고 하는게 좋다.)


3. 정리

  사실 말로 주절주절 적어두어서 이걸 보고 다른 사람들도 kalman filter 를 완전히 이해할 수 있을지 애매하다. 개인적으로는 가장 중요한 직관적인 요소가 gaussian distribution 과 bayes rule 이 결합되었을 때, 어떻게 변화하는가에 대한 부분이라 그 부분에 포커스를 맞추어 정리해두었다. 물론, modelling 부분에 적어두었지만, 사실 kalman filter 류의 가장 key 는 model 이다. system 을 modelling 한 결과에 따라서 다른 종류의 filter 를 사용하게 되고, 대부분의 실세계 문제에는 extended kalman filter 가 제일 좋은 성능을 보여준다. 그러나 system modelling, 그리고 이것에 대한 미분식의 도출이 그렇게 쉽지 않기 때문에 다들 머리 싸매고 고생한다.

  직관적으로 우리가 kalman filter 를 볼 땐, 상기 그림과 같이 확률분포가 계속 업데이트 되어 점점 좁고 뾰족한 형태로 변해가야 정상이다. 그렇지 않다면 설계를 잘못한 탓일 확률이 높다. 그 바탕에는 저런 직관적인 요소가 있고, 그 background 에 있는 수학적 요소와 기타 보다 자세한 내용들은 다른 reference 를 참고하면 좋을 것 같다. 여기서 이야기 하고 싶은 것은 kalman filter 는 남들 이야기하는 바와 같이 system 의 error/noise 를 핸들링 하는데, 대체 어떤 식으로 변하는 지에 대한 직관적 이해 정도이다.