ORB-SLAM

Summary

  • 🧩 λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œ μ‹€μ‹œκ°„μœΌλ‘œ μž‘λ™ν•˜λŠ” λ‹¨μ•ˆ SLAM μ‹œμŠ€ν…œ
  • πŸ”‘ λͺ¨λ“  SLAM μž‘μ—…μ— λ™μΌν•œ ORB νŠΉμ§• μ‚¬μš© β†’ νš¨μœ¨μ„±κ³Ό μ‹ λ’°μ„± ν–₯상
  • πŸ“Š 27 개 μ‹œν€€μŠ€ ν‰κ°€μ—μ„œ 타 기술 λŒ€λΉ„ λ›°μ–΄λ‚œ μ„±λŠ₯ μž…μ¦

Related Notes


1. ORB-SLAM κ°œμš”

ORB-SLAM 은 μΉ΄λ©”λΌλ§ŒμœΌλ‘œ SLAM 을 μˆ˜ν–‰ν•˜λŠ” μ‹œμŠ€ν…œμ΄λ‹€. λ ˆμ΄μ € μ„Όμ„œ 없이 μ‹€μ‹œκ°„ λ™μž‘ν•œλ‹€.

1.1 μ„ ν–‰ μ—°κ΅¬μ˜ ν•œκ³„

  • PTAM 의 단점:
    • Loop Closing λΆ€μ‘±
    • μ‹œκ° 차단 쑰절 λŠ₯λ ₯ λΆ€μ‘±
    • μ‚¬λžŒμ˜ κ°œμž… ν•„μš”μ„±

1.2 ORB-SLAM 의 κΈ°μ—¬

  • λͺ¨λ“  task(tracking, mapping, relocalization, loop closing) 에 같은 ORB features μ‚¬μš©
    • 효율, κ°„νŽΈ, μ‹ λ’°μ„± ν–₯상
    • GPU 없이 Real-time μˆ˜ν–‰
  • Covisibility graph1 둜 local area 에 집쀑 β†’ 큰 ν™˜κ²½μ—μ„œλ„ 효율적
  • Essential Graph(pose graph) μ΅œμ ν™”λ‘œ μ‹€μ‹œκ°„ loop closing
  • μ‹€μ‹œκ°„ relocalization β†’ tracking μ‹€νŒ¨ μ‹œ 회볡 κ°€λŠ₯
  • μ΄ˆκΈ°ν™” 절차 μžλ™ν™”
  • Keyframe culling β†’ Map 크기 μ œμ–΄, Lifelong 운영 κ°€λŠ₯

2. ORB-SLAM μ‹œμŠ€ν…œ ꡬ쑰

image

ORB-SLAM 은 3 개의 병렬 μŠ€λ ˆλ“œλ‘œ κ΅¬μ„±λœλ‹€:

2.1 Tracking (좔적 μŠ€λ ˆλ“œ)

  • μ—­ν• : μ‹€μ‹œκ°„ 카메라 μœ„μΉ˜ νŒŒμ•…
  • 속도: 맀우 빠름 (30fps)
  • 처리 κ³Όμ •:
    1. ORB νŠΉμ§•μ  μΆ”μΆœ
    2. 이전 ν”„λ ˆμž„/지도와 λ§€μΉ­
    3. PnP + RANSAC 으둜 포즈 μΆ”μ •
    4. ν‚€ν”„λ ˆμž„ μ„ μ • 및 전달

2.2 Local Mapping (지도 μ œμž‘ μŠ€λ ˆλ“œ)

  • μ—­ν• : 지도 μΆ”κ°€ 및 정ꡐ화
  • 속도: 쀑간 (ν‚€ν”„λ ˆμž„λ§ˆλ‹€)
  • 처리 κ³Όμ •:
    1. μ‚Όκ°μΈ‘λŸ‰μœΌλ‘œ μƒˆ 맡포인트 생성
    2. Local Bundle Adjustment
    3. 쀑볡 ν‚€ν”„λ ˆμž„ 제거 (Culling)

2.3 Loop Closing (루프 폐쇄 μŠ€λ ˆλ“œ)

  • μ—­ν• : 재방문 감지 및 였차 μˆ˜μ •
  • 속도: 느림 (가끔씩)
  • 처리 κ³Όμ •:
    1. DBoW2 둜 μž₯μ†Œ μž¬μΈμ‹
    2. κΈ°ν•˜ν•™μ  검증
    3. Pose Graph Optimization
    4. Full Bundle Adjustment

3. ORB Feature (Oriented FAST and Rotated BRIEF)

ORB λž€?

SIFT, SURF 의 λŒ€μ•ˆμœΌλ‘œ, FAST 와 BRIEF λ₯Ό μœ΅ν•©ν•˜μ—¬ νšŒμ „ 및 μŠ€μΌ€μΌ λΆˆλ³€μ„±μ„ μΆ”κ°€ν•œ νŠΉμ§•μ  κ²€μΆœ 및 기술 방법이닀.

ORB = Oriented FAST + Rotated BRIEF

3.1 ORB νŠΉμ§•μ  μΆ”μΆœ νŒŒμ΄ν”„λΌμΈ

λ‹¨κ³„μ•Œκ³ λ¦¬μ¦˜ν•˜λŠ” 일
νŠΉμ§•μ  탐지FASTμ½”λ„ˆ μœ„μΉ˜ 만 찾음. λ°©ν–₯ μ—†μŒ
λ°©ν–₯ 계산Intensity Centroid각 νŠΉμ§•μ μ˜ λ°©ν–₯ 계산
기술자 생성Rotated BRIEFλ°©ν–₯ 둜 νšŒμ „λœ BRIEF 계산

3.2 Oriented FAST - λ°©ν–₯이 μžˆλŠ” μ½”λ„ˆ κ²€μΆœ

FAST λŠ” λΉ λ₯΄μ§€λ§Œ νšŒμ „ λΆˆλ³€μ„±μ΄ μ—†λ‹€ (λ°©ν–₯ 정보 μ—†μŒ). ORB λŠ” Intensity Centroid (밝기 λ¬΄κ²Œμ€‘μ‹¬) λ°©λ²•μœΌλ‘œ λ°©ν–₯을 μΆ”κ°€ν•œλ‹€.

λ¬΄κ²Œμ€‘μ‹¬μ΄λž€?

물리적 직관

μ •μ‚¬κ°ν˜• μ’…μ΄μ˜ 밀도가 κ· μΌν•˜λ©΄ λ¬΄κ²Œμ€‘μ‹¬μ€ μ •ν™•νžˆ κ°€μš΄λ°λ‹€. ν•˜μ§€λ§Œ 였λ₯Έμͺ½μ— 납을 뢙이면 λ¬΄κ²Œμ€‘μ‹¬μ΄ 였λ₯Έμͺ½μœΌλ‘œ μ΄λ™ν•œλ‹€.

이미지도 λ™μΌν•˜λ‹€. ν”½μ…€μ˜ **밝기 (intensity)**λ₯Ό μ§ˆλŸ‰μœΌλ‘œ μƒκ°ν•˜λ©΄, 밝은 μͺ½μœΌλ‘œ λ¬΄κ²Œμ€‘μ‹¬μ΄ 당겨진닀.

이미지 λͺ¨λ©˜νŠΈ (Moment) ν‘œκΈ°λ²•:

  • β†’ 전체 밝기의 ν•© (= 전체 μ§ˆλŸ‰)
  • β†’ x λ°©ν–₯ 1 μ°¨ λͺ¨λ©˜νŠΈ
  • β†’ y λ°©ν–₯ 1 μ°¨ λͺ¨λ©˜νŠΈ

λ¬΄κ²Œμ€‘μ‹¬ μ’Œν‘œ:

μ™œ λ¬΄κ²Œμ€‘μ‹¬ λ°©ν–₯을 μ“°λŠ”κ°€?

νŠΉμ§•μ  μ£Όλ³€ 패치의 밝기 λΆ„ν¬λŠ” κ·Έ νŠΉμ§•μ μ˜ κ³ μœ ν•œ νŠΉμ„±μ΄λ‹€. 예λ₯Ό λ“€μ–΄ β€˜L’ λͺ¨μ–‘ μ½”λ„ˆμ—μ„œ ν•œμͺ½μ€ 밝고 (λ²½λ©΄) λ‹€λ₯Έ μͺ½μ€ μ–΄λ‘‘λ‹€ (그림자). 이 밝기 뢄포 λ•Œλ¬Έμ— λ¬΄κ²Œμ€‘μ‹¬μ΄ νŠΉμ • λ°©ν–₯으둜 치우치고, 이것이 νŠΉμ§•μ μ˜ λ°©ν–₯이 λœλ‹€.

νšŒμ „ λΆˆλ³€μ„± 확보: 카메라가 30 도 νšŒμ „ν•˜λ©΄ νŒ¨μΉ˜λ„ 30 도 νšŒμ „ β†’ λ¬΄κ²Œμ€‘μ‹¬ λ°©ν–₯도 30 도 νšŒμ „. λ”°λΌμ„œ 이 λ°©ν–₯을 κΈ°μ€€μœΌλ‘œ 기술자λ₯Ό λ§Œλ“€λ©΄ νšŒμ „ν•΄λ„ 같은 κΈ°μˆ μžκ°€ λ‚˜μ˜¨λ‹€.

λ°©ν–₯ 계산

νŠΉμ§•μ  μœ„μΉ˜ μ—μ„œ λ¬΄κ²Œμ€‘μ‹¬ 둜 ν–₯ν•˜λŠ” λ²‘ν„°μ˜ λ°©ν–₯각:

( 이 약뢄됨)

3.3 Rotated BRIEF - νšŒμ „ λΆˆλ³€ 기술자

BRIEF λŠ” λΉ λ₯΄μ§€λ§Œ νšŒμ „μ— μ•½ν•˜λ‹€ (ν”½μ…€ 쌍 μœ„μΉ˜κ°€ κ³ μ •). ORB λŠ” νŠΉμ§•μ  λ°©ν–₯ 만큼 ν”½μ…€ 쌍 μœ„μΉ˜λ₯Ό νšŒμ „μ‹œμΌœ 이λ₯Ό ν•΄κ²°ν•œλ‹€:

미리 μ •ν•΄μ§„ 256 개 ν”½μ…€ 쌍 νŒ¨ν„΄μ„ 만큼 νšŒμ „ β†’ νšŒμ „λœ μœ„μΉ˜μ—μ„œ 밝기 비ꡐ β†’ 256-bit 기술자 생성

3.4 이미지 ν”ΌλΌλ―Έλ“œ - μŠ€μΌ€μΌ λΆˆλ³€μ„±

원본 이미지λ₯Ό 점점 μΆ•μ†Œν•œ 8 단계 ν”ΌλΌλ―Έλ“œ 생성:

Level 0: 원본 (640Γ—480)
Level 1: 0.83λ°° (531Γ—398)
...
Level 7: 0.28λ°° (179Γ—134)

3.5 νŠΉμ§•μ  μ•Œκ³ λ¦¬μ¦˜ 비ꡐ

νŠΉμ„±SIFTSURFORB
νšŒμ „ λΆˆλ³€βœ…βœ…βœ…
μŠ€μΌ€μΌ λΆˆλ³€βœ…βœ…βœ… (ν”ΌλΌλ―Έλ“œ)
μ†λ„λŠλ¦Όμ€‘κ°„λΉ λ¦„
기술자 크기512 λ°”μ΄νŠΈ256 λ°”μ΄νŠΈ32 λ°”μ΄νŠΈ
λΌμ΄μ„ μŠ€νŠΉν—ˆνŠΉν—ˆλ¬΄λ£Œ

4. Tracking 상세

4.1 ORB νŠΉμ§•μ  μΆ”μΆœ

λ§€ ν”„λ ˆμž„λ§ˆλ‹€:

  1. 8 단계 이미지 ν”ΌλΌλ―Έλ“œ 생성
  2. 각 λ ˆλ²¨μ—μ„œ FAST μ½”λ„ˆ 탐지
  3. Harris corner response 둜 선별
  4. λ°©ν–₯ 계산 (Intensity Centroid)
  5. Rotated BRIEF 기술자 생성

ν”„λ ˆμž„λ‹Ή 1000~2000 개 νŠΉμ§•μ  μΆ”μΆœ

4.2 νŠΉμ§•μ  λ§€μΉ­

  • 해밍 거리가 κ°€μž₯ μž‘μ€ 것 = λ§€μΉ­
  • 졜고/2 λ“± λ§€μΉ­ 차이가 μž‘μœΌλ©΄ 버림 (Ratio test)

4.3 카메라 포즈 μΆ”μ • (PnP)

2D-3D λŒ€μ‘ κ΄€κ³„λ‘œ 카메라 μœ„μΉ˜/λ°©ν–₯ μ°ΎκΈ°:

  • : 카메라 λ‚΄λΆ€ νŒŒλΌλ―Έν„° (μ•Œκ³  있음)
  • , : νšŒμ „/이동 (ꡬ해야 함)

4.4 RANSAC 으둜 μ΄μƒμΉ˜ 제거

  1. λžœλ€ν•˜κ²Œ 4 개 λ§€μΉ­ 선택
  2. 포즈 계산 β†’ λͺ¨λ“  λ§€μΉ­ 검증
  3. 반볡 ν›„ κ°€μž₯ 많이 λ§žλŠ” 포즈 선택

4.5 ν‚€ν”„λ ˆμž„ μ„ μ • κΈ°μ€€

  • 이전 ν‚€ν”„λ ˆμž„μ—μ„œ μΆ©λΆ„νžˆ 이동?
  • μƒˆλ‘œμš΄ μ˜μ—­μ΄ 많이 λ³΄μ΄λŠ”κ°€?
  • νŠΉμ§•μ μ΄ μΆ©λΆ„ν•œκ°€?

5. Local Mapping 상세

5.1 μ‚Όκ°μΈ‘λŸ‰ (Triangulation)

두 카메라 광선이 λ§Œλ‚˜λŠ” 지점 = 3D 점 μœ„μΉ˜

5.2 Bundle Adjustment

카메라듀과 3D 점듀을 λ™μ‹œμ— μ‘°μ •ν•˜μ—¬ 재투영 였차 μ΅œμ†Œν™”:

Levenberg-Marquardt μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μ΅œμ ν™”

5.3 ν‚€ν”„λ ˆμž„ Culling

맡포인트의 90% 이상이 λ‹€λ₯Έ ν‚€ν”„λ ˆμž„ 3 개 μ΄μƒμ—μ„œ 보이면 β†’ μ€‘λ³΅μ΄λ―€λ‘œ 제거


6. Loop Closing 상세

6.1 λ“œλ¦¬ν”„νŠΈ 문제

였차 λˆ„μ : 100m 이동 μ‹œ ~1m 였차

6.2 DBoW2 둜 μž₯μ†Œ μž¬μΈμ‹

Bag of Words (BoW) 방식:

  1. ORB κΈ°μˆ μžλ“€μ„ κ·Έλ£Ήν™” β†’ Visual Vocabulary
  2. 이미지λ₯Ό BoW λ²‘ν„°λ‘œ ν‘œν˜„
  3. μœ μ‚¬ν•œ BoW 벑터 = μœ μ‚¬ν•œ μž₯μ†Œ

6.3 Pose Graph Optimization


7. 핡심 μš”μ•½

ORB νŠΉμ§•μ 

  • Oriented FAST: μ½”λ„ˆ 탐지 + λ°©ν–₯ (intensity centroid)
  • Rotated BRIEF: 256-bit 이진 기술자, λ°©ν–₯ 보정됨
  • 8-scale ν”ΌλΌλ―Έλ“œλ‘œ μŠ€μΌ€μΌ λΆˆλ³€μ„±

3 개 μŠ€λ ˆλ“œ

  • Tracking: ORB μΆ”μΆœ β†’ λ§€μΉ­ β†’ PnP+RANSAC
  • Local Mapping: μ‚Όκ°μΈ‘λŸ‰ + Local BA + Culling
  • Loop Closing: BoW μž₯μ†Œ 인식 β†’ Pose Graph Optimization

Reference

Original

Additional


Footnotes

  1. Map point 와 keyframes λ₯Ό μ—°κ²°ν•œ κ·Έλž˜ν”„. λ…Έλ“œλŠ” keyframes λ₯Ό λ‚˜νƒ€λ‚΄κ³  μ—£μ§€λŠ” 두 keyframes 이 같은 point λ₯Ό κ΄€μΈ‘ν•˜κ³  μžˆμŒμ„ λ‚˜νƒ€λƒ„. ↩