markov localization

udacity self driving car의 localization 부분을 통해 학습한 내용을 정리한 페이지 입니다.

개요

localization은 자기위치를 아는 것을 말합니다. 자기 자신의 위치를 알기 위해선 여러 데이터들을 통하여 위치를 추정합니다. 사실 로봇이 계획한대로 이상적으로 움직인다면 localization이 어렵지 않을 수 있으나 어떤 일이던 오차가 생기고 원하는대로 작동하지 않을 수 있습니다. 이러한 어려움 때문에 localization을 통해 자신의 위치를 확률로 나타내게 됩니다. 현재 받아온 데이터들이 정확하지 않을 수 있으니까요. 그렇기 때문에 localization에서 통계학이 사용됩니다.

베이즈 정리

베이즈 정리는 두 확률변수에서 사전 확률과 사후 확률 사이의 관계를 나타내는 정리입니다. 그러니까…….. 결과가 관측된 후의 확률(사후확률)과 결과가 관측되기 전(사전확률)의 관계입니다. 통계학에서 어려운 개념은 아니므로 자세한 설명은 넘기고 localization에서 보면 다음과 같이 표현할 수 있습니다.

\[\begin{aligned} p(지역|관측) = \frac{p(관측|지역)* p(지역)}{p(관측)} \end{aligned}\]
Note

p(지역)의 경우 해당 지역에 있을 확률을 의미하고 p(관측)의 경우 해당 관측이 이뤄질 확률을 의미합니다.

총 확률의 법칙과 마르코프 연쇄

문제는 관측 데이터가 엄청나게 많다는 것에 있습니다. 차량으로 이동을 하며 위치를 추정할 때 센서 데이터, 이동 데이터(odometry) 그리고 지도 데이터를 사용하여 위치 주정을 하게 됩니다. 그러나 센서 데이터, 이동 데이터는 시간이 갈수록 축적되는 데이터인 탓에 처리에 많은 계산이 필요하게 됩니다. 이러한 과정을 총 확률의 법칙과 마르코프 연쇄를 통해 단순화를 시켜줍니다.

Tip

지도데이터도 시간에 따라 변화하고 축적되는 데이터가 될 수 있습니다. 지도를 제작하고 갱신하면서 위치 추정을 하는 경우를 slam이라고 합니다.

p(관측)을 생각해 봅시다. 관측된 데이터를 확률로 나타낸다는 것에 혼란이 올수 있습니다. 이를 총 확률의 법칙으로 구하는 것 입니다. 어떤 공간에서 해당 관측이 이뤄질 확률과 그 공간에 있을 확률을 모두 더하는것입니다. 이렇게 p(관측)(앞으로 정규화 상수라고 하겠습니다.)를 구하도록 합니다. 그럼에도 여전히 데이터가 많습니다.

이를 해결하기 위해 직관적으로 생각해 봅시다. 위치 = X, 시간 = T , 센서 데이터 = Z, 이동 데이터 = U라고 하겠습니다.

오랜 시간을 움직여 센서와 이동 데이터 Z와 U가 1,2,3,…,T까지 쌓여 있습니다. 이때 위치 X를 추정하기 위해선 지금까지 쌓인 데이터를 모두 계산하여야 합니다. 이때 이미 우리는 초기 위치에서 T-1일때의 위치를 추정하였다고 생각해봅시다. 그럼 이전 위치 데이터 또한 현재 위치를 고려할 때 유용한 정보이므로 위치 X를 추정할때 이전 위치 데이터를 사용하도록 하겠습니다.

그럼 T-1일때의 Z와 U는 이전 위치에서 이미 고려되었으므로 굳이 계산할 필요가 없어집니다. 즉, 현재 위치를 파악하기 위해선 X 의 식은 {X(이전),Z,U}을 변수로 가지므로 재귀함수 형태로 단순화가 됩니다.

위에 쓴 글들은 대략적인 개념만 적어 놓았습니다. localization 모델링을 재귀함수로 단순화 하는 수학적 증명은 생략하도록 하겠습니다. 아직 공부를 하면서 부족한 부분이 많아 정확한 이해를 한 후 추가하도록 하겠습니다.

오차

앞서 localization의 위치는 확률로 나타내어 진다고 하였습니다. 이동, 관측 모두 오차가 발생합니다. 이러한 오차는 가우시안 분포(정규 분포)를 따라 나타나게 됩니다.