ORB SLAM3 Review (1) : Overview

YUNJI·2024년 4월 27일

※ ORB SLAM과 ORB SLAM3 논문의 내용을 분석하였으며,
혹시 잘못된 부분이 있다면 지적해주시면 감사하겠습니다 🤗

SLAM(Simultaneous localization and mapping)

  • A goal of visual SLAM
    : use the sensors on-board a mobile agent to

    1) build a map of the environment

    2) compute in real time the pose of the agent in that map

    : 카메라를 사용하는 Visual SLAM의 목적은 로봇에 대해 주변 환경에 대한 맵을 그리고 해당 맵에서 로봇의 위치를 실시간으로 추정하는 것이다.

  • ORB SLAM vs ORB SLAM2 vs ORB SLAM3

    : ORB SLAM → monocular slam

    : ORB SLAM2 → stereo, RGB-D slam (기존 단안 카메라에서 Stereo camera, RGB-Detph camera의 활용이 가능해졌다.)

    : ORB SLAM3 → visual-inertial slam (IMU와의 fusion이 가능해졌다.)

  • ORB SLAM2

    • Stereo 카메라의 이점

      • Stereo 카메라는 epipolar line을 baseline과 동일하게 만드는 rectification 작업을 수행

      • 좌, 우 이미지 feature가 동일한 선상에 그려지면서 feature matching의 효율이 올라감

    • epipolar plane system

      : O와 O'에 각각 카메라가 위치하고, 동일한 점인 P 추정에 있어 feature matching의 효율이 향상된다.

    • RGB-D

      • 왼쪽 이미지에서 ORB feature를 추출

      • Depth 이미지로부터 depth 추출 후 landmark 생성

      • 가상의 우측 카메라를 생성하고, map point를 투영해 2D feature를 만듦

        : 이를 통해 Stereo Camera를 활용할 때와 동일한 알고리즘을 적용할 수 있다.


  • Main novelties of ORB-SLAM3

    1) A monocular and stereo visual–inertial SLAM system

    2) Improved-recall place recognition

    : 기존 SLAM → 3개의 연속 keyframe에서 매칭되는지 확인 → geometric consistency 확인

    ※ geometric consistency : pose, 3D position 추정 결과 검증

    : ORB-SLAM3 → geometric consistency 확인 → 3개의 covisible keyframe에서 매칭되는지 확인

    3) ORB-SLAM Atlas

    • Atlas
      : multimap 시스템 표현자

    : disconnected map을 여러 개 만들고, 모든 과정에 활용할 수 있음

    : 다른 시간에서 만들어진 map을 합칠 수 있음

    • active map

      • tracking thread에서 들어오는 frame의 위치를 추정하고, 계속해서 최적화시킴

      • local mapping thread에서 새로운 keyframe을 추가하여 성장시킴

    • non-active map

      • keyframes를 통해 DBoW2 database을 만들고 relocalization, loop closing, map merging에 사용

    4) An abstract camera representation

    : pin-hole and fish-eye models 모두 적용 가능


A. Visual SLAM

  • ORB-SLAM

    • 방향성과 회전 불변성을 갖는 ORB → short-term, mid-term DA

    • tracking과 mapping을 위해 covisibility graph 구축

    • DBoW2를 활용해 BoW 사용 → loop closing, relocalization → long-term DA

B. Visual-Inertial SLAM

: visual-Inertial sensors → poor texture, motion blur, occlusion(가려짐)에 robust + mono cam에서 IMU를 활용하여 makes scale

: ORB-SLAM-VI 기반에서 MAP estimation based fast initialization method 제안

  • Maximum-a-posteriori (MAP) estimation

    • 실험적인 관찰을 통해 얻은 지식 + 사전에 알고 있는 정보를 기반으로 사후 데이터를 가장 잘 표현하는 확률 추정

    • Motion model : Proprioceptive sensing(odometry)의 수식

    • Observation model : Exteroceptive sensing(Camera, LiDAR)의 수식, landmark의 위치를 추정할 수 있게 함

      ※ 센서 데이터는 관측 후에 나타나는 사후 데이터

    • 최대 사후 확률 추정 : 과거 데이터 확률 분포, 최적의 파라미터 값 등이 어떻게 되어야 현재 데이터가 가장 잘 표현되는지에 대한 최대 사후 확률을 구하는 문제

    • motion model과 observation model의 확률 분포를 찾고 그 확률 분포를 정확하게 표현하는 state 값을 찾는 것이 목표

    • motion model의 에러치^2 + observation model의 에러치^2 를 최소화하는 파라미터를 구함 (= joint optimization)

C. Multimap SLAM

: ORB SLAM3의 Atlas system → DBoW2를 기반으로

1) 새로운 place recognition 기술

2) local BA 기반 map merging


System Overview

: ORB-SLAM3 = ORB-SLAM2 + ORB-SLAM-VI

1) Atlas : disconnected map set으로 구성된 multimap representation

  • active map

    • tracking thread에서 들어오는 frame의 위치를 추정하고, 계속해서 최적화시킴

    • local mapping thread에서 새로운 keyframe을 추가하여 성장시킴

  • non-active map

    • keyframes를 통해 유일한 DBoW2 database을 만들고 relocalization, loop closing, map merging에 사용

2) Tracking thread

  • 센서 정보 처리

  • active map 기준 현재 프레임의 pose를 실시간으로 계산

  • reprojection error 최소화

  • 현재 frame을 keyframe으로 넣을지 판단

  • visual-inertial mode에서는 최적화 cost에 inertial residuals(관성 잔차)를 포함시켜서 본체 속도와 IMU 편향을 추정

  • tracking을 놓치면, Atlas map 에서 현재 프레임을 relocalize

  • 일정 시간이 지나면 active map은 non-active map으로 넘어가고 새로운 active map이 initialize됨

3) Local mapping thread

  • active map에 keyframes와 map points 추가 혹은 제거

  • Local BA(현재 프레임과 가까운 최근 N개 keyframe을 이용)를 통한 map 보정

  • inertial case에서, MAP estimation을 통해 IMU 파라미터 초기화 및 보정

4) Loop and map merging thread

  • active map과 Atlas 전체에서 공통 지역(A라고 하자)을 검출

  • A 지역이 active map 내에서 검출되면 loop correction 수행

  • A 지역이 Atlas 내 disconnected map 중 하나에서 검출되면, active map과 merge

  • loop correction 이후, 독립 스레드에서 full BA로 맵 보정 (실시간 성능에 영향 X)


Camera Model

: 기존의 SLAM이 Pin-hole 카메라 모델을 주로 사용했으나, 이번 ORB SLAM3에서는 fish eye model이 추가

: fish eye model은 180도 이상의 Field of View 를 가져 정규화가 불가능하고 이미지 영역마다 reprojection error가 다르기 때문에 Pin-hole 카메라와 동일하게 처리할 수 없음

A. Relocalization

: projection rays를 입력으로 사용하는 maximum likelihood perspective-n-point algorithm 사용

: 기존 solvePnP 방법 → ORB feature와 3D world map point 정보를 활용해 카메라 위치 추정

: maximum likelihood perspective n point algorithm → 최대 우도(확률) 원리를 사용, 2D-3D 포인트 사이의 카메라 위치를 추정하고 추정한 위치를 재투영하여 재투영 오차를 기반으로 최대 우도를 계산해 최적화하는 과정을 거친다.

B. Nonrectified Stereo SLAM

: 대부분의 스테레오 카메라에도 정규화를 사용하나, 스테레오 fisheye 카메라는 정규화를 적용하면 잘리는 부분이 많으므로 사용이 어려움

: 스테레오 카메라를 둘 사이 일정한 변환 관계가 유지되며, 동일한 영역을 보고 있는 두 개의 단안 카메라로 가정

→ 이러한 가정을 기반으로 BA 최적화에서 맵 규모를 효과적으로 추정하고, 실제 크기의 랜드마크를 triangulate 할 수 있음


Visual-Inertial SLAM

A. Fundamentals

  • estimated state in visual SLAM → current camera pose

  • estimated state in visual-inertial SLAM → {body pose, velocity, gyroscope biases, accelerometer biases}

    • 자이로스코프 : 3차원 공간에서의 회전각에 대한 값을 측정하는 장치
    • 가속도계(accelerometer) : 구조물의 운동 가속을 측정하는 장치
  • estimated state 내 변수들을 활용하여 IMU의 잔차를 정의

    → IMU 잔차(좌항)와 reprojection error(우항)를 활용하여 visual-inertial 최적화 문제를 아래와 같이 정의할 수 있다.

B. IMU intialization

1) monocular SLAM에서 매우 정확한 initial map을 제공하지만, scale을 알 수 없음

  • visual SLAM의 초기맵은 IMU initialization을 돕고, IMU는 visual SLAM의 scale 문제를 해결한다.

2) scale은 BA 대신 최적화 변수로 둘 때 더 빠르게 수렴

3) IMU initialization동안 센서의 불확실성은 무시

  • 센서 불확실성을 고려하기 위해서 IMU initialization을 MAP estimation problem으로 생각하고 아래 3 단계로 나눈다.

    1) Vision-only MAP estimation

    : pure monocular SLAM을 2초동안 진행하고 4Hz의 keyframe을 추가한다. 이 기간(2초) 후에 최대 10개의 카메라 pose와 몇백개의 points를 BA를 통해 얻는다. 이 값들은 body reference로 변환되어 trajectory를 얻을 수 있다.

    2) Inertial-only MAP estimation

    Inertial 측정값과 T_k에 대한 keyframe을 통해 MAP estimation 수행 → IMU 변수(속도, 중력 방향, IMU 편향) 초기값을 얻음

    3) Visual-Inertial MAP estimation

D. Robustness to Tracking Loss

1) Short-term lost

: IMU를 통해 body pose를 얻고, map points를 pose 기반으로 투영하여 large image window에서 매칭을 찾는다.

: 매칭된 결과는 visual-inertial optimization된다.

2) Long-term lost

: 새로운 visual-inertial map이 생성되고 active map이 된다.


Map Merging & Loop Closing

1) Atlas 내 keyframes와 새 keyframe을 지속적으로 matching → 매칭되면 loop closure 수행

2) 새 keyframe과 matching map 간 상대적 pose를 추정 → local window라고 정의

  • local window에서 mid-term data association을 수행함으로써 loop closing and map merging 정확도 향상

※ SLAM 주요 용어

  • KeyFrame

    : 두 frame 사이의 상대적 포즈를 추정할 때 주변 환경의 기하학적 특성을 잘 묘사할 수 있는 feature가 풍부한 frame

  • Bag of Words (BoW)

    : feature 정보를 k-means clustering 기법으로 분류해서 여러 개의 visual vocabulary로 만들고 이미지를 이 vocab으로 표현하는 방식

    : visual vocabulary는 사전에 offline에서 만들어진다.

  • Bundle Adjustment

    → BA의 목표는 camera pose와 3D position 최적화이다.

    : 3D point를 카메라 포즈 기반으로 투영하고, 실제 2D point와의 reprojection error를 계산한다.

    : least squares optimization을 수행 → 2D reprojection error의 제곱이 최소 값을 갖는 pose와 3D position 해를 구한다.

    (이 때, noise 분포가 gaussian 분포를 따른다는 가정을 한다 → MLE 문제로 수렴)

    (MLE 문제는 정답이 통계적으로 optimal 함을 수식적으로 보장)

0개의 댓글