기본참고 교재: Cyrill Stachniss 교수님의 Robot Mapping 강의
아주 오래전부터 공부하려고 했었던 Robot Mapping 강의를 들으면서 그 내용을 정리하여 기록해두고자 합니다. 이 강의는 robot mapping (SLAM)에 관한 SOTA system의 내용들 (Kalman filter, EKF, UKF, Particle filter, Graph-based Approach...) 을 다루고 있기 때문에 SLAM에 관한 기초를 공부하기에 아주 적합하리라 생각 됩니다.
이전글에 이어서 SLAM에 관해 수학적 설명과 함께 알아보도록 하겠습니다.
SLAM 문제의 기본 정의는 다음과 같다.
알고 있는 것:
1. 로봇으로 들어가는 제어 명령 (1m 앞으로 이동해라, 20도 오른쪽으로 돌아라.. 등등)
$u_{1:T}=\{u_1, u_2, u_3, . . . , u_T\}$
2. 센서로부터 측정되는 관측 값 (라이다로부터 관측되는 장애물 정보, 카메라 이미지 등등)
$z_{1:T}=\{z_1, z_2, z_3, . . . , z_T\}$
원하는 것:
1. 환경에 대한 지도, 주변 환경이 어떻게 생겼는가?
$m$
2. 로봇의 경로: 제어명령보다 1 index 많다. ($x_0$에서 $x_1$로 갈때 필요한 명령 $u_1$)
$x_{0:T}=\{x_0, x_1, x_2, . . . , x_T\}$
이때, 이 실제 환경(Real-world)에서 모든 데이터들은 오차를 포함하고 있다. 예를들어 아무리 정확한 명령과 제어기 일지라도 1m앞으로 이동하라고 했을 때 0.00001mm의 오차도 없이 1m를 정확히 이동할 순 없다. 실제 환경에서는 이 오차가 더욱 커지고 로봇이 점점 이동할 수록 오차는 쌓이게 된다. 때문에 SLAM 문제 (더 확장해서는 real-world 문제를 다루는 대부분의 robotics)에서는 확률적 접근법을 사용한다. 이러한 확률적 접근법또한 sensor의 모델링의 한계 및 noise가 가우시안 분포를 따른다는 가정을 하고 접근하긴 하지만, 그럼에도 불구하고 error가 없다고 생각하고 하는 것보다는 올바른 결과를 도출 해 준다.
SLAM 문제를 해결한다는 것은 로봇의 경로와, 주변 환경이 어떻게 생겼는지를 추정하는 것이다. 이를 수학적으로 표현하면 다음과 같다.
$p(x_{0:T}, m | z_{1:T}, u_{1:T})$
즉, 제어명령과 관측값이 있을 때, 로봇의 경로(위치)와 맵의 확률 분포를 알아내는 것.
이를 해결하기 위해 1. gaussian 분포를 가정하는 문제에서는 Kalman filter 접근법을 사용하고, 그외의 2. 다양한 분포에관해서는 Particle filter 접근법 그리고 마찬가지고 gaussian 분포를 가정하지만, 3. Kalman filter보다는 보다 general하게 사용할 수 있는 graph-based 접근법이 있다.
위 식에서처럼 시작부터 끝까지, discrete time간격으로 0부터 T까지의 맵과 경로를 추정하는 것을 Full-SLAM이라고 하는데 이 Full SLAM의 Graphical Model은 다음과 같다.
그림에서 화살표의 방향이 영향을 미치는 방향을 의미하는데 예를들면 $x_t$를 알기 위해선 $x_{t-1}$과 $u_t$로 부터 화살표가 오고 있으므로 이 둘의 값이 영향을 미치는 것을 알 수 있다. ($x_{t-1}$ and $u_t$ influences $x_t$) 즉, 이전위치 ($x_{t-1}$)로 부터 얼마만큼 이동했는지( $u_t$)에 따라서 현재위치가 결정된다. 또 관측되는 정보(observed)를 보면 $z_t$는 현재위치 $x_t$ 와 환경정보 $m$의 영향을 받는것을 알 수 있다.
이렇게 Full-SLAM은 0부터 T까지의 모든 정보를 가지고 과거부터 끝가지의 로봇의 위치와 맵을 추정하는 것을 의미하는데 한마디로 데이터 후처리 방식이라고 볼 수 있겠다. 하지만 로봇의 자율 항법을 위해서는 현재위치를 실시간으로 추정하는 것이 가장 중요하고 이렇게 현재 시점을 중심으로 두는 것을 Online SLAM이라고 한다.
$p(x_{t}, m | z_{1:t}, u_{1:t})$
즉 이전까지의 모든 명령과 센서 데이터를 가지고 현재 시점에서의 로봇의 위치와 환경정보를 추정하는 것을 말한다. 이러한 SLAM이 어려운 이유는 아래 그림에서 보는것과 같이 불확실성(uncertainty)이 계속 누적되기 때문이다.
처음 위치에서는 landmark에 대한 observation uncertainty만 존재 했었는데, 다음 위치로 이동하면서 pose uncertainty가 추가되고, 이러한 pose uncertainty를 가지고 있는 상태에서 landmark를 또 추정하다 보니 observation uncertainty가 더 커지고 이러한 uncertainty correlation이 누적 되기 때문이다. 이러한 불확실성을 해결하기 위해서 다양한 방법들이 고안되고 있고 ICRA와 같은 로봇 conference들에서는 SLAM session을 매우 중요시하게 다루고 있다.
SLAM문제를 푸는 방식은 앞에서도 말했듯이 Kalman filter, particle filter, graph-based의 3가지 방식으로 나눌 수 있는데 이 방식들 모두 motion model과 observation model 개념을 사용한다.
Motion model: 이전위치와 제어명령이 있을때 새로운 현재 위치는 어떻게 될것인지 예측하는 것
$p(x_t | x_{t-1},u_t)$
Observation model: 현재위치와 map을 알고 있을 때 랜드마크의 위치를 예측하는 것
$p(z_t | x_t , m)$
'SLAM' 카테고리의 다른 글
[SLAM-Course] Kalman Filter-06 (0) | 2020.06.24 |
---|---|
[SLAM-Course] Bayes Filter-05 (0) | 2020.06.23 |
[SLAM-Course] Bayes Filter-04 (0) | 2020.06.21 |
[SLAM-Course] Homogeneous Coordinates-03 (0) | 2020.06.20 |
[SLAM-Course] SLAM 이란? (Introduction to Robot Mapping)-01 (0) | 2020.06.18 |
댓글