[SLAM] 18. Loop Closure

happy_quokka·2023년 11월 27일
0

SLAM

목록 보기
19/28

Loop Closure

  • graph-based SLAM에서 그래프에 loop가 발생했을 때, loop에 해당하는 camera pose와 landmark들을 최적화시켜주는 기술
  • 보통 loop detection -> loop fusion -> optimization 단계로 진행
  • 여기서는 loop detection에 대해 알아본다
  • loop fusion : C++ 기술로 data association만 해주는 부분
  • optimization : BA(Bundle Adjustment)와 과정 동일

loop detection

  • 내가 지금 보고 있는 장소가 와본적이 있는 장소인지 알아내는 문제
  • SLAM이 돌아가면서 keyframe들에 대한 정보를 데이터베이스에 저장을 하는데 실시간으로 보고 있는 이미지를 이 데이터베이스에 쿼리함으로써 비슷한 결과가 있을 경우 리턴
  • 이러한 문제를 Image retrieval 문제라고 한다
  • SLAM에서 요구하는 place recognition(loop detection)에 사용되는 기술

image retrieval

  • 푸는 방법 2가지
    • 이미지 전체 비교
    • global vector 생성 후 비교

이미지 전체 비교

  • 정확도도 좋지 않고 속도, 메모리 효율성도 좋지 않아 잘 사용하지 않는 방법

global vector 생성 후 비교

  • 여러 local feature들의 정보를 취합하여 이미지 전체의 feature 즉, global feature를 만들어서 비교하는 방식
  • ORB (Oriented and Rotated BRIEF, 특징점 검출 알고리즘) feature를 사용하는 많은 VSLAM들은 DBoW2 라이브러리 또는 FBoW 라이브러리 사용
  • 이는 ORB feature들의 정보를 k-means clustering 기법으로 분류해서 여러개의 visual vocabulary를 만들고 이미지를 이 vocabulary로 표현하는 방식
  • 이러한 방식을 Bag-of-visual-words 또는 BoW Vector방식이라고 부른다
  • 최근에는 이와 같은 기능의 성능을 높이기 위해서 딥러닝 기법이 적용되고 있는데, NetVLAD와 같이 다양한 조명이나 환경변화에도 강인한 방식들도 사용되고 있다
  • BoW vector를 사용하는 부분을 사실상 DBoW2 라이브러리가 기준으로 잡혀있고 직접 구현하는 경우가 없다
  • DBoW2 라이브러리를 사용해서 loop detection 기술을 익힐수 있다

0개의 댓글