제가 작성하는 질문 모음들은 장형기 엔지니어님이 작성해준 것이고 그것의 답을 제 마음대로 쓴 것입니다.
자신이 지나갔던 장소에 다시 들르게 되었을 때 이 정보를 바탕으로 지금까지 움직였던 경로를 보정하는 작업입니다.
Loop Closure의 경우 Graph SLAM의 factor로 loop closing이 감지되면 이 장소와 같았던 장소 위치를 맞춰서 새롭게 보정해주면 지금까지 생겼던 drift를 제거해줄 수 있습니다.
다음 그림을 살펴보겠습니다.
별을 loop가 detection된 지점이라고 하였을 때 drift로 인해 slam은 다른 장소로 인식하고 있습니다.
이 때 loop closure를 이용하여 최적화를 해주면 왼쪽의 그림과 같이 완성된 loop를 만들 수 있는 것입니다.
보통 loop closing을 detection하기 위해서는 place recognition 기법들을 사용합니다.
Scan-context 처럼 place recognition 기법을 사용하여 같은 곳을 탐지하거나
g-icp의 오차값이 일정 이하가 되면 같은 곳이라고 인지하기도 합니다.
다양한 방식을 통해 지금 있는 장소가 이전에 왔던 장소라는 것을 알아차리고(Place recognition)
최적화를 하는 것이 loop closure 입니다.
loop closure는 SLAM이 진행되는 동안 계속 돌아가며 loop가 detection될 때마다 loop closure factor를 넣어 최적화를 진행하기 때문에 loop가 완성 됐다고 프로그램이 끝나거나 하지는 않습니다.
slam의 핵심 요소인 loop closing을 알아보았습니다.
옛날에 SLAM과 odometry and mapping 기법의 차이가 loop closing이다. 아니다 이런 말들도 많았는데
그만큼 slam의 핵심 기술이라고 생각하시면 될 것 같습니다.