[SLAM] Introduction to SLAM
본 글은
SLAM 한국어 강의
https://www.youtube.com/c/SLAMKR
Cyrill Stachniss 교수님
https://www.youtube.com/playlist?list=PLgnQpQtFTOGQrZ4O5QzbIHgl3b1JHimN_
강의를 듣고 개인적으로 정리한 글입니다.
SLAM이란?
SLAM이란 Simultaneous Localization and Mapping의 약자로 동시에 Localization과 Mapping을 동시에 처리하는 기술입니다.
Localization이란 '공간 속에서 로봇이 어떤 위치에 있는지를 파악하는 것'입니다.
Mapping이란 '주변 환경에 대한 지도를 제작하는 것'을 말합니다.
1)Robot motion
motor안 인코딩 센서가 측정함
ex) 이전 위치에 대하여 앞으로 5m 움직임 / 뒤로 2m 움직임
2) Landmarks
sensor가 인지
Real-life에서는 robot motion에서의 추정과 sensor의 노이즈가 존재함
이때 SLAM을 이용할 수 있는 이유는
로봇이 맵을 한바퀴 돌고 나서 다시 관측 시작지점으로 돌아온 경우 지금까지의 경로에 대한 error를 수정할 수 있기 때문이다 => loop closure
SLAM
◆ Offline SLAM
한바퀴 먼저 돌고 모은 정보들을 바탕으로 map 제작 -> real-time에서 구동 불가능
더욱 정확한 map 제작 가능
◆ Online SLAM
Real-time에서 구동 가능
SLAM에서는
Given
- The robot's controls : 로봇이 어떻게 움직였는지
- Observations : 로봇에서 sensor에서 읽어들인 값
Wanted
- Map of the environment : 주변 환경의 맵 제작
- Path of the robot : 로봇이 어떤 경로로 움직였는지
로봇이 움직일 때 환경에서 어느 위치에 있는지 정확히 파악하는 것은 불가능!
(because robot motion과 sensor가 측정한 값에 noise가 있기 때문)
따라서 위치를 정확히 특정하는 대신 확률 분포를 통해 어느 위치에 있을 지 추정하는 방법을 채택
Graph-based SLAM
또한 Online SLAM에서는 실시간으로 경로 정보를 update하여야 하므로
위 수식에 따라 확률정보를 구하게 된다.
SLAM이 어려운 이유
- 고려해야 할 너무 많은 uncertainties가 존재한다.
ex)
위에 보이는 빨간 타원은 로봇이 있을 수 있는 위치의 범위를 나타낸 것이다.
로봇이 2개의 landmark를 보았다고 하였을 때 왼쪽 두개인지, 오른쪽 두개인지 100% 확신할 수 없다는 것이다.