경희대학교 황효석 교수님의 2021-2 로봇 프로그래밍 수업을 듣고 공부한 내용입니다.
왼쪽 사진을 획득하고 오른쪽 사진을 획득하기 위해서 내가 얼마나 움직였는지 (pose: 움직임과 회전) 알기 위해서는 1. global 한 맵과 2. 카메라에 대한 intrinsic parameter 을 미리 갖고 있어야 한다.
이 두 가지를 갖고 있으면 내가 사진을 어디서 찍었는지 정확하게 알 수 있다. 따라서 이 두 사진을 통해서 내 pose 의 변화를 알 수 있다.
이 경우 1. 내 pose 의 변화와 2. 카메라의 intrinsic parameter 을 알고 있다면 이 두 사진을 통해서 map 을 추출할 수 있다.
카메라로 얻은 이미지는 픽셀 위의 좌표이다. 이 좌표를 실제 3차원상의 좌표로 바꾸어 주려면 intrinsic parameter 을 알아야 한다.
따라서 mapping 은 localization 과 반대로 내가 얼만큼 움직였는지에 관한 정보가 있으면 3차원 map 을 만들어 낼 수 있다는 것이다.
localization 은 정확한 map 이 있으면 내가 어디 있는지 알 수 있다는 것이다.
feature point 를 매칭하는 방식으로 우리는 영상에서 object 가 어디로 이동했는지 알아낼 수 있다.
Feature : salient and repeatable points or regions
feature point 는 두드러지고 반복적인 영역이나 점을 말한다.
어떤 object 가 나오는 이미지에서는 그 feature 가 항상 나와야 한다. (repeatable)
주변이랑 다른 점이 있어야 한다. (salient)
경희대학교 황효석 교수님의 2021-2 로봇 프로그래밍 수업을 듣고 공부한 내용입니다.
Simulatanously Localization And Mapping
로봇이 다른 전자장치와 다른 것은 스스로 이동한다는 것이다. 따라서 다른 디바이스에 비해 로봇만이 가질 수 있는 장점은 바로 mobility 이다. 따라서 mobility 의 측면에서 SLAM은 로봇에서 가장 중요한 문제이다.
SLAM 은 map 을 만드는 것이고 navigation 은 목적지까지 이동하는 것이다.
자율주행에 SLAM 이 핵심적인 기능이라고 말 할 수는 없는 이유는, 이 육지상에 지도가 없는 곳이 거의 없기 때문이다. 또한 지도는 한 번 만들어 놓으면 크게 바뀌지 않는다. 따라서 SLAM 은 실내에서 많이 쓰인다. 지도 상에는 건물 내부에 대한 정보는 표시되어 있지 않다. 또한 물 속 처럼 지형이 잘 지도로 드러나지 않는 곳에서도 쓰인다.
Given : 주어진 정보
Wanted : 우리가 알아내야 하는 것
어떤 것이 어디에 있을 지 확률로써 계산한다.
따라서 SLAM 이라는 것은 observation 과 map 을 알고 있을때 이동 경로에 대한 확률 분포를 알아내는 것이다.
이미 데이터를 다 갖고 있는 상태에서 그 데이터를 가지고 그걸 가지고 추후에 추정하는 방식.
= RealTime SLAM
이 두 가지 값이 주어졌을 때 map 을 만들어 내는 것을 SLAM 이라고 한다.
확률값을 계속 곱해 나가기 때문에 불확실성이 계속 누적되어서 어떤 것이 특정 장소에 존재할 확률분포가 점점 퍼지게 되기 때문이다.
내 위치가 불확실해지니 그 자리에서 내가 만든 랜드마크들의 불확실성도 더 커진다.
불확실성의 어려움을 해결하는 한 가지 방법.
한 바퀴 돌아서 원래 위치로 왔을 때 마지막 위치를 기준으로 만든 맵의 위치를 수정해준다.
Grid Map.
영역을 잘게 나눈 다음에 그 그리드마다 Classification 을 하는 것.
(회색은 unknown 이다.)
map이 완성되지 않은 곳을 로봇이 스스로 찾아가서 map 을 완성해 나가는 방식.
직접 조종해야 함.
P(x(t) | x(t-1), u(t))
가우시안 모델, 혹은 non-gassian model 로도 표현될 수 있다.