ORB SLAM3 Review (3) : Local Mapping

YUNJI·2024년 6월 25일
post-thumbnail

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

Local Mapping

: Local Mapping Thread에서는 아래의 과정이 수행됩니다.

  1. KeyFrame insertion

  2. Recent Map Points culling

  3. New points creation

  4. IMU intialization

  5. Local KeyFrames culling

  6. IMU Scale Refinement

※ new keyframe을 K_i로 정의


1. KeyFrame insertion

  • K_i에 대한 노드를 covisibility graph에 추가하고, spanning tree를 업데이트한다.

    (a) keyframes (b) covisibility graph (c) spanning tree (d) essential graph
  • keyframe의 bags of words를 계산한다.

2. Recent Map Points culling

: Map points로 유지되기 위해서는 3개의 keyframe 동안 아래 조건을 만족해야 한다.

  • 해당 map point가 있다고 추측되는 frame의 25% 이상에서 추적되어야 한다.

  • map point가 생성된 후, 최소 3개 keyframes에서 관찰되어야 한다.

3. New points creation

  • K_i의 ORB feature와 covisibility graph K_c에 있는 ORB feature 간 triangulation을 통해 map point 위치를 추정

  • K_i의 feature 중 매치되지 않은 feature에 대해서는 동일한 bag of words에 속한 keyframes의 map point와 매칭

  • Local BA

    : K_i와 K_c, 그리고 K_i와 K_c에 존재하는 모든 map points를 최적화

    → outlier로 생각되는 map points는 제거


4. IMU intialization

: IMU 변수(속도, 중력 방향, IMU 편향)에 대한 좋은 초기값을 얻는 과정

  • visual-only MAP estimation

    : Monocular SLAM을 통해 pose 값(T_k)을 얻음

  • Intertial-only MAP estimation

    : Inertial 측정 값을 기반으로 사전에 정의된 모델을 사용하여 시스템의 초기 pose, 속도, 편향과 중력 방향을 추정

  • visual-inertial MAP estimation

    → inertial and visual 파라미터를 얻고 나면, reprojection error(우항)와 IMU residuals(좌항)를 cost로 joint visual-inertial optimization 수행

5. Local KeyFrames culling

: keyframe 내 90% 이상의 map points가 다른 3개 이상의 keyframe에서 보이면 해당 keyframe은 제거

6. IMU Scale Refinement

  • 느린 운동을 하고 있을 때, 충분한 센서 값이 제공되지 못하면서 IMU 초기화가 수렴하지 못한다.

  • 이 때, 초기화 변수에서 IMU 편향 값을 이전에 추정된 값으로 고정하고, 스케일과 중력 방향만 추정

    → 편향 값을 고정하면 노이즈 영향과 계산 복잡도 감소

0개의 댓글