무엇인가? (로봇, 자율주행, SLAM 알고리즘) [수학] 카르만 필터(Kalman Filter)란

자율주행(Autonomous Driving)에는 기계(Mobility)가 이동하면서 스스로 장애물을 파악하고 피하고 최적의 경로를 찾아가는 기능이 필요하다.

즉 주행 중 변수 감지와 주행 제어를 해야 한다.

이를 위해서는 정확한 지도(Map)가 필요하다.

즉 센서와 데이터를 통한 매핑(Mapping)이 필요한데 이때 필요한 작업이 바로 Localization이다.

Localization이란 위치 측정(측위)을 말한다.* localize : ~의 위치를 특정한다.

문제는 어떤 맵이 주어졌을 때 로봇에 장착된 센서(초음파, 라이다, 카메라 등)를 이용해 로봇이 맵의 어느 위치에 있는지를 확률 기반의 방법으로 예측한다는 것이다.

모든 관측치(Observation)는 오차(Error)를 가지고 있으며 이는 기술의 발전을 통해 줄일 수는 있지만 완전히 없애는 것은 불가능하다.

인간은 지도를 확인하고 새로운 길을 찾을 때 교회가 어디에 있고 공원이 어디에 있으며 등 주변에 있는 건물과 같은 데이터를 이용하여 비교, 분석하여 자신의 위치를 대략적으로 파악한다.

인간에게는 이런 문제를 해결할 능력이 있지만 로봇은 불가능하다.

이때 바로 카르만필터(Kalman Filter)를 사용할 수 있다.

참고로 카르만 필터는 최소 제곱법(최소 제곱법, LSM, Least Square Method)을 사용한다.

카르만필터의 기본 개념은 과거와 현재 값을 기준으로 재귀적 연산을 통해 최적값을 추적하는 것이다.

여기서 필터는 측정 데이터에 포함된 불확실성(Noise)을 필터링함으로써 대상에서 얻을 수 있는 데이터가 완벽하지 않기 때문에 부족한 성질을 보충한다고 보면 될 것 같다.

즉 측정 데이터나 신호는 반드시 잡음을 수반하는데 여기서 원하는 신호나 정보를 골라내는 알고리즘으로 보면 된다.

어디까지나 확률에 근거한 예측 시스템이므로, 이것의 대상은 정규 분포(가우시안 분포)를 가지는 대상이 된다.

카르만필터는 1960년대 초 루돌프 카르만(1930~2016)이 개발한 알고리즘으로 NASA의 아폴로 프로젝트에서 내비게이션 개발 시 사용됐다.

잡음(Noise)이 포함된 측정값을 토대로 선형역학계의 상태를 추정하는 재귀 필터(Recursive Filter)다.

즉, 오차(외란)를 갖는 관측치로부터 시스템의 상태를 추정하거나 제어하기 위한 알고리즘이다.

상태 관측기의 최적 버전이라고 한다.

카르만필터는 컴퓨터 비전, 로봇공학, 레이더 등 다양한 분야에서 사용된다.현재는 GPS, 일기예측, 주식예측 등 널리 쓰인다.

카르만 필터 알고리즘은 다음 두 가지 가정이 갖추어질 경우 사용할 수 있다.

  • 모션 모델과 측정 모델이 선형적(Linear)인 경우 – 모션 모델과 측정 모델이 가우시안 분포(Gaussian Distribution)를 따르는 경우

이러한 가정으로 인해 발생하는 단점이 있지만 확장 컬만이 필터(EKF, Extended Kalman FIlter)의 기반이 되는 알고리즘이므로 알아두면 좋다.

즉, 카르만 필터는 물체의 측정치에 확률적인 오차가 포함되어,

또한 물체의 특정 시점에서의 상태가 이전 시점 상태와 선형적인 관계를 가지고 있을 경우 적용이 가능하다.

예를 들어 레이더 추적의 경우 특정 물체의 위치, 속도, 가속도 등을 측정할 수 있는데 이 측정치에 오차가 포함돼 있을 수 있다.

이 경우 연속적으로 측정하는 값을 칼날만 필터를 이용하여 해당 물체의 위치를 추정할 수 있다.

추정 이론(Estimation Theory)은 통계학과 신호 처리의 한 분야이며, 측정 또는 관찰된 자료에 기초하여 모집단을 대표하는 값(모수, parameter)을 추정하는 것을 다룬다.

우리는 필요한 데이터의 전수조사를 할 수 없기 때문에 모수를 추정하게 되고 추정 기법 중 하나가 바로 칼만 필터인 것이다.

추정(Estimation)은 입력된 자료가 불완전하거나 불확실하더라도 사용할 수 있는 계산된 결과의 근사치를 말한다.

즉 통계적 방법과 인과관계를 기반으로 예측하는 것을 의미한다.

사물의 위치와 속도를 정확히 파악하는 것은 어렵다.대신 실제 속도와 위치가 어느 범위 내에 속한다는 것 정도는 예측(Prediction)할 수 있다.

카르만 필터에서는 위치와 속도의 두 변수를 랜덤 가우시안 분포라고 가정한다.

카르만필터의 동작원리는 위와 같지만 다음 위치를 확률적으로 예측하고 실제 측정한 값을 통해 예측치와 얼마나 비슷한지 확인한 뒤 보정과 추정을 한다.

그리고 이렇게 보정된 값으로 다시 다음 위치를 예측하고 다시 새로 측정된 값으로 다시 추정한다.

카르만필터는 기존 필터와 달리 이 예측과 추정이라는 두 과정을 반복하게 된다.

일반적인 알고리즘은 초기값을 포함하여 기존의 데이터를 가지고 있지 않으면 그 데이터를 분석함으로써 보다 정확하게 다음을 예측할 수 없는데, 이런 점에서는 메모리의 부담이 따를 수밖에 없다.

그러나 카르만필터는 단순히 직전 추정치와 예측치만 기억하면 된다.어쨌든 추정치와 예측치는 새로 변경되므로 기존 데이터는 보관할 필요가 없다.

이처럼 직전값을 다시 활용하는 필터를 재귀 필터라고 하는데, 재귀 필터의 막대한 장점 때문에 메모리 부담에서 자유로울 수 있다.

다만 비교할 만한 사례나 신뢰성 있는 확실한 데이터가 없기 때문에 신뢰도 높은 결과를 얻기 위해서는 어느 정도 데이터가 쌓이기까지의 시간이 필요하고 초기에는 상대적으로 불안정하다는 특징이 있다.

다만 재귀 필터의 효율이 그런 단점을 극복하고도 남기 위해 채택되는 것이다.

칼만 필터는 기본적으로 시스템이 선형이라는 가정하에 설계됐기 때문에 비선형 시스템에 적용하면 오차가 오히려 커지거나 발산되는 특성을 갖고 있다.

반면 실제 응용에 있어서는 시스템도 비선형적이고 잡음도 가우시안 분포를 따르지 않는 경우가 많으므로 확장 컬만 필터(Extended Kalman Filter)를 가장 많이 사용한다.

또한 이것이 발전하여 무향 나이프만 필터(UKF, Unscented Kalman Filter)가 등장하게 된다.여기서 무향(Unscented)은 실제 필터와는 별 상관이 없는 이름이다.

실제 확장도만과 무향도만 모두 비선형 시스템 분야에서 사용되지만

확장도만은 계산 시간으로 이득을 볼 수 있고, 무향도만은 정확도 면에서 이득을 볼 수 있기 때문에 보통 두 가지를 모두 적용해 보고 성능을 비교해 적용한다.

즉 카르만필터는 LPF에 통계적 기법을 더한 알고리즘이라고 이해하면 쉽다.

반대로 LPF와 카르만필터의 차이는 LPF에서는 a가 정수로 고정되어 있지만 카르만필터에서는 들어오는 입력값과 기존 시스템 모델링, 통계적 추정을 통해 가중치(Weight)를 유동적으로 조절하는 데 차이가 있다.

추가적으로 추정 확률 분포를 가우시안으로서 특정하지 않는 필터가 있는데 미세한 입자(파티클)를 통해 계산한다고 해서 파티클 필터(Particle Filter)라고 한다.

파티클 필터도 뛰어난 성능을 보여 다양한 환경에 적용할 수 있다는 장점이 있지만 연산량이 많아 내장 환경에서는 사용이 어렵다는 단점이 있다.

[참고 자료] 교육뿐만 아니라 산업계에서도 칼날만 필터와 같은 대표적인 상태 추정 이론 응용 사례가 증가했다. 카르만 필터의 유용성이 산업계에서도 널리 인식됐기 때문일 것이다. 대상이 되는 시계열이나 시스템의 동적 모델, 관측 데이터를 모두 활용한 칼날만 필터를 이용함으로써 관측 데이터에 포함되는 잡음을 제거할 뿐만 아니라 실제로 측정할 수 없는 물리량(상태량)을 추정할 수 있게 된다. 이는 하드웨어 센서를 추가하지 않고도 다른 양을 측정할 수 있어 소프트 센서라고 불리기도 한다. 한편 센서 여러 특징을 잘 이용함으로써 어떤 양을 추정하는… magazine.hellot.net 이번 시간에는 로봇 위치 localization에서 자주 사용되는 Kalmanfilter에 대해 알아보도록 하겠습니다. Localization 문제는 어떤 환경맵이 주어졌을 때 로봇에 장착된 센서(카메라, 라이더, 초음파, 휠엔코더 등)를… medium.com 카르만 필터 kalmanfilter 루프만 카르만이 1960년대 초에 개발한 필터로 컴퓨터 비전, 로봇, 로켓, 위성, 미사일, …blog.naver.comgaussian 37’s bloggaussian37.github.io

error: Content is protected !!