orb slam

David8·2023년 1월 17일
0

ORB SLAM(Oriented FAST and Rotated BRIEF)

  1. ORB SLAM
    1. 정의
      1. feature-based slam
      2. ORB 특징점 검출방식 사용
        1. FAST 알고리즘, BRIEF 알고리즘, 해리스 코너 알고리즘 결합한 알고리즘
    2. 장점
      1. 3개의 thread를 활용하여 속도가 빠름 --> 많은 연구들이 orb-slam 기반으로 이루어지고 있음
      2. 실시간 데이터 처리 용이

ORB slam 구조

  1. 3개의 thread를 활용 --> 속도 빠름
    1. 프로세스(process): 단순히 실행 중인 프로그램
    2. 스레드(thread): 프로세스 내에서 실제로 작업을 수행하는 주체
      1. 모든 프로세스에는 한 개 이상의 스레드 존재하여 작업을 수행
      2. 멀티스레드 프로세스: 두개 이상의 스레드를 가지는 프로세스
  2. 3 Thread
    1. Trackig thread
      1. 지도에서 현재 위치 찾음 --> 기존의 지도정보와 ORB Feature를 활용하여 현재 위치 추정
    2. local mapping
      1. 각각의 keyFrame 정보를 지도에 mapping(2d point --> 3d point)
    3. loop closing
      1. 영상정보를 통해 지도 만들다보면 drift 현상 발생(위치 어긋남)
      2. Slam으로 만들어진 지도 정보를 통해 현재 위치 교정

3 thread

Tracking Thread

  1. tracking thread
    1. tracking
      1. 정의
        1. 비디오 영상에서 특정 대상의 위치 변화 추적
        2. 비디오는 일련의 영상 프레임으로 구성 --> 인접한 영상 프레임 사이에는 유사성이 존재 ==> 이러한 유사성을 이용하여 특정 대상의 위치 변화 추적
    2. orb slam에서 tracking
      1. 영상에서 특징점을 추출하여 key frame을 생성하고, 카메라의 위치를 추정하는 과정
        1. orb-slam에서는 물체 추적보다는 카메라 위치를 추정
          1. 물체는 가만히 있고 카메라(ex. 자동차)가 움직임
        2. key frame: 유의미한 특징점을 많이 가지는 frame(지도를 만드는데 중요한 정보를 담고 있는 frame)
    3. 과정
      1. orb 추출
        1. 정의
          1. input 영상 전처리 과정
          2. orb feature descriptor 이용하여 영상 내 특징점 검출
      2. Map Initialization
        1. 정의
          1. 이전 Frame과 현재 Frame간의 Feature Matching을 통해 3D Point 생성

            왼쪽 사진 초록색 부분이 한 Frame의 Feature들이고, 오른쪽 빨간 점들이 3D Map Point들임

      3. pose estimation(or relocalisation)
        1. 정의
          1. 카메라의 위치 추정하는 단계
        2. 상황별 접근 방법
          1. tracking이 잘되는 경우
            1. 이전 frame을 통한 위치 추정
            2. constant velocity motion model 이용하여 카메라 위치 추정(등속도로 움직인다는 가정) --> pose optimization(위치 추정)
          2. tracking이 lost된 경우(global relocalizaion)
            1. back of words를 활용하여 현재 영상과 가장 유사한 key frame 찾음 --> tracking 회복
            2. 찾은 key frame을 바탕으로 solvePnP를 이용하여 카메라 위치 추정 --> pose optimization
      4. track local map
        1. 사전에 생성한 지도 정보를 투영 --> 더 정확한 카메라 pose 추정
      5. new keyframe decision
        1. 특정 4가지 조건 모두 충족시 key frame으로 결정
          1. 특징점이 어느정도 이상 되어야함
          2. 직전 frame과 유사하다면 현재 frame을 key frame으로 지정할 이유가 없음 --> 이전 frame과 유사성 비교

Local Mapping Thread

  1. local mapping thread
    1. 정의
      1. 중복되는 key frame과 tracking 후에 생성된 map point들을 최적화
      2. 새로 들어오는 key frame을 아래의 순서로 처리하는 과정
    2. 과정
      1. keyframe 삽입
        1. tracking thread에서 새로운 key frame이 생성되면 해당 bag of words 계산
        2. 이를 바탕으로 새로운 key frame과 원본 영상 프레임의 map point 비교
        3. covisibility graph를 update함
          1. covisibility graph
            1. 정의
              1. 두 대 이상의 시점에서 겹치는 부분의 개수를 표현한 것
            2. 특징
              1. 각 카메라의 영사 정보를 사용하고 상관관계를 파악하여 실제와 최대한 비슷하게 지도를 만들 수 있음
      2. recent map point 선별
        1. tracking 과정 후 생긴 map point와 새로 삽입된 key frame을 비교하여 bad point 제거
          1. low visibility, not trackable 점
      3. new points 생성
        1. 앞에서 수정된 covisibility graph를 이용하여 현재 프레임과 연결되어 있는 프레임들을 찾음
        2. 찾은 프레임과 현재 프레임의 map point쌍을 이용하여 triangulate함
        3. triangulate 과정 후 생긴 프레임의 map point 생성
          1. triangulation(삼각 측량법): 두 이미지 평면 사이의 기하학적 관계가 주어지고, 두 이미지 평면상의 매칭쌍 p1, p2가 주어지면 이로 부터 원래의 3d 공간좌표 p를 결정할 수 있다는 것을 의미
        4. Map point들 중 현재 프레임과 covisibility graph상에서 연결되어 있는 map point들만 project 시킴
        5. 그 후, covisibility graph를 다시 update함
      4. local ba
        1. map point 개수를 최적화 하는 과정
        2. 현재 key frame과 covisibility 관계에 있는 key frame을 찾음
        3. 각 프레임들을 비교하여 같은 곳을 표시하는 map point 연결하고, 그러지 못한 map point는 outliers로 판단하여 제거
      5. local keyframe 선별
        1. 다음과 같은 제약을 두어 key frame 개수 제한함
        2. 다른 3개의 프레임에서 map point가 90% 이상 겹치는 key frame들은 버림
          1. key frame이 너무 많으면 relocalization과 BA의 효과가 적어짐

Loop Closing Thread

  1. loop closing thread
    1. 정의
      1. 이전에 방문한 적 있는 공간인지를 확인 --> 방문했던 공간이라고 판단되면 이전에 생성된 지도와 통합
    2. 특징
      1. 에러가 누적되면 사전의 방문된 공간이 다른 위치로 나옴
      2. place recognition을 통해 이전의 방문했던 공간인지 확인
    3. Place recognition
      1. bag of words 방법 사용
      2. 종류
        1. visual vocabulary
          1. 많은 이미지들로부터 feature 추출 후, descriotor 모으고 descriptor들을 몇개씩 묶음 --> clustering 한 가운데 값을 vocabulary라고 함
        2. recognition database
          1. keyframe 생성 시, visual vocabulary를 사용해 keyframe에 대한 이미지 특징을 표현한 data를 만들어 저장
    4. loop detection
      1. 현재 keyframe에서 나온 visual vocabulary를 후보군 안에 모든 data와 비교하여 진행(recognition database를 후보군으로)
      2. 동일한 장소라고 판단되는 일정한 기준을 만족하면 지도 통합

Map data

  1. 정의
    1. orb slam으로 부터 생성되는 데이터 중 하나
      1. orb slam으로 부터 2가지 데이터가 생성 됨
      1. place recognition
      2. map data
  2. 종류
    1. map point
      1. 정의
        1. frame에서 검출된 feature들을 3d로 지도에 mapping한 point
        2. 각 map point(pi)가 가지는 world 좌표계 상의 pi의 위치
    2. key frames
      1. 지도 생성시 특징이 될만한 위치를 나타내는 frame(유의미한 feature 다수 보유)
    3. covisibilty graph
      1. 정의
        1. key frame간의 map point 공유관계를 나타낸 graph(spanning tree)
   

0개의 댓글