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

: Tracking Thread에서는
Extract ORB / IMU integration
Initial Pose Estimation from last frame, Relocalization or Map creation
Track Local Map
New KeyFrame Decision 과정이 수행된다.
ORB (Oriented FAST and Rotated BRIEF)
→ 생성, 매칭 속도가 빠르며, 여러 각도에서 봐도 정확한 값을 가진다.
FAST

: feature extractor로, 하나의 p 점을 기준으로 원 모양으로 주변 16개 픽셀에 대한 밝기 값을 비교하여 corner 여부를 판단한다. threshold 이상으로 밝거나 어두운 픽셀이 n개 이상 존재하면 코너로 판단한다. 빠른 연산을 위해 위 아래 쌍 하나와 왼쪽 오른쪽 쌍 하나, 총 4개의 점을 먼저 비교해 빠르게 후보를 줄여나가는 것이 특징이다.
Oriented FAST


: FAST는 방향 정보가 없으므로, 밝기와 거리 값을 이용해 모멘텀을 구한 뒤 모멘텀을 기반으로 방향성을 계산한다.
BRIEF

: feature descriptor로, keypoint 주변 정보를 담고 있다. keypoint 기준 랜덤한 두 점을 잡아 밝기 값을 비교하고 이진 값으로 표현한다. 이진화함으로써 hamming distance를 통해 descriptor 간 빠른 비교가 가능하다.
[참조] https://alida.tistory.com/64
: 2개의 이미지 keyframe 사이에는 수십 개의 IMU 데이터가 존재하는데, 여러 개의 IMU 데이터를 하나의 factor로 변환하여 연산량을 줄이는 방법이다.
1. 등속 motion model을 가정하고 guided search 수행 → correspondence 생성
guided search
: 이전 프레임에서 특징점 위치와 등속 모델이라는 가정을 활용하여 검색 범위를 줄이고 매칭을 위해 비교해야 할 특징점 후보를 줄인다.
2. 찾은 특징점 간 상관관계를 기반으로 SolvePnP 수행 → pose 추정
solvePnP
→ 기존 map points(3D world points)와 ORB feature(2D points), camera intrinsic matrix를 활용
→ 월드에서의 카메라 좌표(Xc, Yc, Zc)를 알 수 있음
3. 추정한 pose로 ORB feature triangulation → 3D point 위치 추정

4. reprojection error + IMU residuals를 cost로 포즈 최적화 (BA)

: frame → bag of words → database에 쿼리 → 같은 bag 내에서 가장 유사한 keyframe을 찾음 → 찾은 keyframe 기반 solvePnP 수행 → 카메라 위치 추정 → 최적화
automatic map initialization
1) 초기 2개 frame에서 ORB feature 추출 → feature 매칭
2-1) Homography 계산
2-2) Fundamental matrix 계산 → Essential matrix로 변환
→ 2)의 결과로 R | t 얻을 수 있음
3) Full BA
4) Heuristic standard 로 평가해 둘 중 스코어가 더 높은 모델 선택
: 일정 시간이 지나면 active map은 non-active map으로 넘어가고 새로운 active map이 initialize됨
: 사전에 생성된 local map이 있는 경우, 더 많은 상관관계를 만들어 최적화하기 위한 과정
사전에 생성된 local map을 frame에 투영
: 현재 map points를 가진 keyframe K1과 covisibility graph에서 연결된 keyframe K2에 존재하는 모든 map points를 frame에 투영
: 현재 keyframe의 BoW를 구하고, 데이터베이스로부터 가장 유사한 keyframe을 불러와 map points를 frame에 투영
pose optimization 수행
투영된 map points와 frame 상의 ORB feature들과 매칭하여 상관관계를 만듦
상관관계를 기반으로 SolvePnP 수행해 pose estimation
추정한 pose에 대해 reprojection error와 IMU residual를 cost로 최적화 수행
아래 4개 조건을 모두 만족하는 경우, 새 Keyframe으로 추가한다.
마지막 global relocalization 이 후, 20 frame 이상 지나야 한다.
local mapping thread가 쉬고 있거나, 마지막 keyframe insertion 이 후 20 frame 이상이 지나야 한다.
현재 frame에서 50개 이상의 포인트가 추적되고 있어야 한다.
현재 frame이 참고하고 있는 frame(K_ref) 기준 새로운 map points가 10% 이상 존재해야 한다