[논문 리뷰] ORB-SLAM: A Versatile and Accurate Monocular SLAM System

2025. 6. 23. 01:13·논문리뷰

 

ORB-SLAM에 대해 알아보기 앞서, 먼저 SLAM에 대해서 알아보자

 

SLAM이란?

SLAM은 Simultaneous Localization and Mapping의 약자로, 우리말로는 "동시적 위치 추정 및 지도 작성"을 의미한다. 이름만 들으면 뭔가 있어 보이지만, 본질은 간단하다. 로봇이나 카메라가 움직이면서 자기 위치를 추정하고, 동시에 주변 환경의 지도를 그려나가는 기술이다. 

 

예를 들어, 우리가 길을 걸을 때는 눈으로 주변을 보고, 몸의 감각을 통해 지금 어디쯤 있는지 자연스럽게 파악할 수 있다. 하지만 로봇은 눈 대신 카메라나 센서에 의존해야 한다. 문제는 이 위치 추정이 생각보다 어렵다는 것이다. 로봇이 자신의 위치를 알기 위해서는 지도가 필요하고, 지도를 만들기 위해서는 현재 위치를 알아야 하는, 일종의 닭이 먼저냐 달걀이 먼저냐 같은 딜레마에 빠지게 된다.

 

이 어려운 문제를 풀기 위해 고안된 것이 바로 SLAM 알고리즘이다. SLAM은 센서 데이터를 바탕으로 위치와 지도를 동시에 추정하는, 로봇 내비게이션의 핵심 기술이다.

 

LiDAR vs. Visual SLAM

SLAM은 사용하는 센서에 따라 LiDAR 기반 SLAM과 Visual SLAM으로 나눌 수 있다. 

  • LiDAR SLAM: 라이더 센서로 주변 환경의 3차원 거리 데이터를 직접 수집하고, 이를 바탕으로 지도를 만들고 위치를 추정한다.
  • Visual SLAM: 일반 카메라로 촬영한 영상에서 특징점을 추출하여 이를 기반으로 지도를 구성하고, 카메라의 위치를 추정한다.

 

왜 Visual SLAM인가?

LiDAR SLAM은 거리 기반으로 정밀한 3D 정보를 수집하기 때문에, 일반 카메라 영상만을 사용하는 Visual SLAM보다 일반적으로 더 높은 정밀도를 보인다. 그럼에도 불구하고 Visual SLAM이 널리 사용되는 데에는 두 가지 중요한 이유가 있다.

  • LiDAR 센서에 비해 카메라는 비용이 저렴하고, 작고 가벼워 로봇이나 드론 같은 소형 기기에 탑재하기 용이하다.
  • 카메라 영상은 단순히 지도를 만드는 데 그치지 않고, 사물 인식, 객체 추적, 장면 분류 등 다양한 컴퓨터 비전 작업에 활용할 수 있어 활용 범위가 훨씬 넓다.

첫 번째 이유는 익숙할 수 있지만, 두 번째 이유를 보면 왜 테슬라처럼 카메라 기반 자율주행을 고집하는 회사들이 있는지도 조금은 이해가 갈 것이다.

 

ORB-SLAM

ORB-SLAM은 대표적인 Visual SLAM 시스템 중 하나로, 하나의 RGB 카메라만으로 높은 정확도의 실시간 SLAM을 구현하는 것이 특징이다.

 

ORB란 무엇인가?

ORB-SLAM의 핵심은 이름처럼 ORB 특징점(Oriented FAST and Rotated BRIEF)를 사용하는 데 있다. 이는 기존의 FAST와 BRIEF 알고리즘을 보완한 형태이다.

FAST

  • FAST(Features from Accelerated Segment Test)는 이미지 내에서 코너와 같은 특징점을 매우 빠르게 찾아내는 알고리즘이다. 하지만 위치만 찾을 뿐, 방향 정보는 고려하지 않는다.

BRIEF

  • BRIEF(Binary Robust Independent Elementary Features)는 해당 특징점 주변의 픽셀 패턴을 간단한 이진 벡터로 표현해 계산 효율이 높지만, 회전 변화에는 매우 취약하다.

예를 들어, 같은 사물을 찍은 사진이라도 이미지가 회전되어 있으면 FAST와 BRIEF는 그것을 전혀 다른 이미지로 인식할 수 있다. 이런 단점을 보완해 회전 불변성을 갖도록 만든 것이 ORB이다.

  • Oriented FAST: FAST 특징점에 기울기 방향을 부여해 회전 정보까지 포함시킨다.
  • Rotated BRIEF: 회전 정보를 바탕으로 BRIEF 기술자를 회전에 대해 보정된 형태로 생성한다.

결과적으로 ORB는 기존보다 훨씬 회전과 조명 변화에 강인하면서도, 빠른 계산 속도를 유지하는 효율적인 특징점 검출 및 기술자 생성 방법이다.

 

 

이 ORB 알고리즘은 OpenCV에서 간단한 코드로 실습해볼 수 있다.

import cv2

# 이미지 불러오기
img = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)

# ORB 객체 생성
orb = cv2.ORB_create()

# 키포인트 검출 + 기술자 생성
keypoints, descriptors = orb.detectAndCompute(img, None)

# 키포인트 시각화
img_with_kp = cv2.drawKeypoints(img, keypoints, None, color=(0,255,0), flags=0)

# 결과 출력
cv2.imshow("ORB Keypoints", img_with_kp)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

 

실행 예시

 

 

Why ORB?

ORB-SLAM이 수많은 특징점 알고리즘 중에서 ORB(Oriented FAST and Rotated BRIEF)를 선택한 데는 분명한 이유가 있다.
주요 장점은 다음 세 가지다:

  1. 빠른 계산 속도: ORB는 이진 기술자 기반이라 일반 CPU 환경에서도 실시간 처리가 가능하다.
  2. 회전 및 조명 변화에 강인함: 다양한 환경에서도 안정적인 특징점 추출이 가능하다.
  3. 단일 특징자 사용의 일관성: 모든 단계에서 ORB 하나만 사용하므로, 시스템이 단순하고 효율적이다. 이는 뒤의 전체 구조를 보면 더 잘 이해가 될 것이다.

 

 

ORB-SLAM의 전체 구조

ORB-SLAM의 전체 구조

 

ORB-SLAM은 Tracking, Local Mapping, Loop Closing의 세 모듈로 구성된다. 각 모듈은 병렬로 동작하며, 서로 유기적으로 연결되어 SLAM 전체 과정을 담당한다.

 

 

1. Tracking: 카메라 위치 추정

Tracking

 

Tracking 모듈은 ORB-SLAM의 핵심 모듈로, 매 프레임마다 카메라의 현재 위치(Pose)를 실시간으로 계산하는 역할을 한다.

  • ORB 특징점 추출: 현재 영상에서 ORB 특징점을 검출한다.
  • 매칭 및 위치 추정: 이전 프레임 또는 기존 맵과 특징점을 비교해 현재 카메라의 위치를 추정한다.
  • 재지역화(Relocalization): 추적에 실패한 경우, 과거의 키프레임 데이터를 활용해 다시 위치를 찾아낸다.
  • 키프레임 추가: 카메라 위치 변화가 충분히 크거나 추적이 불안정할 경우, 새로운 키프레임을 생성하여 지도 구축을 위한 입력으로 사용한다.

※ 여기서 키프레임(Keyframe)이란 전체 프레임 중에서 주요 장면을 대표할 수 있는 핵심 프레임을 의미하며, 맵 생성의 기준이 된다.

 

 

2. Local Mapping: 지역 지도 생성과 최적화

Local Mapping

Local Mapping 모듈은 새로 생성된 키프레임을 기반으로 해당 지역의 지도를 구성하고 정제한다.

  • 삼각측량(Triangulation): 여러 프레임에서 관측된 같은 특징점을 이용해 3D 맵 포인트를 생성한다.
  • 불필요한 포인트 제거: 중복되거나 정합이 약한 포인트를 제거해 지도의 품질과 효율을 높인다.
  • Local Bundle Adjustment: 해당 지역의 카메라 위치와 3D 포인트를 동시에 최적화하여 재투영 오차를 최소화한다.

이 과정은 SLAM의 핵심인 지도 정확도 향상과 위치 추정 안정성 확보에 큰 기여를 한다.

 

 

3. Loop Closing: 누적 오차 보정

Loop Closing

 

Loop Closing 모듈은 장시간 이동 중에 누적되는 위치 오차를 보정해 전체 맵의 일관성을 유지하는 역할을 한다.

  • 장면 유사도 탐색: 현재 키프레임과 과거 키프레임을 비교하여, 같은 장소를 다시 방문했는지(Loop)를 탐지한다.
  • Bag-of-Words(BoW) 모델 사용: ORB 특징점을 BoW 벡터로 표현한 뒤, 유사도를 계산해 장면 간의 관계를 판단한다.
  • 루프 검출 시 앞뒤 장면 간 정합을 수행하고, 포즈 그래프 최적화(Pose Graph Optimization)를 통해 전체 키프레임의 위치를 전역적으로 조정하여, 누적된 위치 오차를 효과적으로 줄인다.

 

Loop detect example

 

복잡하게 느껴질 수도 있지만, 쉽게 생각해보자.우리가 동네를 한 바퀴 돌고 동네의 지도를 만든다고 상상해 보자. 걷는 동안 우리는 실시간으로 주변을 둘러보며, 풍경과 거리의 구조를 머릿속에 그려가며 기억하게 된다. 그리고 다시 출발했던 장소로 돌아와 이미 본 풍경이 눈앞에 나타나면, 이제 전체 지도를 완성할 수 있다고 느끼게 된다.

 

사실 ORB-SLAM도 이와 똑같다.

다만 풍경을 눈으로 보는 대신, 카메라는 ORB 특징점이라는 방식으로 이미지를 받아들이고, SLAM의 각 모듈은 우리가 했던 작업을 그대로 나눠서 수행한다.

 

  • Tracking은 걷는 내내 현재 위치를 실시간으로 추적한다. (내가 지금 어디 있는지 알아야 하니까)
  • Local Mapping은 불필요한 정보는 걸러내고, 머릿속 지도를 더 정확하고 깔끔하게 만들어간다.
  • Loop Closing은 다시 출발 지점과 비슷한 풍경이 보일 때, “여기 전에 왔던 곳이야!”라고 인식하고, 전체 지도를 보정해 일관성을 높인다.

 

결국 SLAM은 사람이 머릿속으로 하는 공간 인식 방식을 컴퓨터가 따라 하도록 만든 것이다.

그리고 ORB는 카메라가 이미지를 빠르고 효율적으로 인식하기 위해 사용하는 특징점 추출 방식일 뿐이다.

 

 

 

 

위 이미지는 ORB-SLAM의 성능을 시각적으로 보여주는 결과이다. 논문에서는 KITTI 데이터셋의 Odometry 벤치마크 중 대표적인 세 개의 시퀀스(00, 05, 07)를 사용해 SLAM 시스템이 실제로 얼마나 정확하게 차량의 이동 경로를 추정하는지를 확인하였다.

 

중앙의 그래프를 보면, 빨간 점선은 실제 주행 경로(Ground Truth), 파란 선은 ORB-SLAM이 추정한 경로를 나타낸다. 두 궤적이 거의 완전히 겹치는 것을 보면, ORB-SLAM이 매우 정밀한 위치 추정을 수행하고 있음을 알 수 있다.

 

오른쪽 열은 여기에 BA(Bundle Adjustment) 최적화 기법을 20회 적용한 후의 결과로, 경로 정합도가 소폭 향상된 모습이다. BA는 전체 궤적에 걸친 전역적인 최적화를 수행하는 기법이며, 여기서는 자세히 다루지 않겠다.

 

결론적으로, ORB-SLAM은 별도의 후처리 없이도 우수한 성능을 보이며, 전역 최적화를 통해 그 정밀도를 더욱 향상시킬 수 있다는 점을 시각적으로 잘 보여주는 예시이다.

 

 

 

 

 

Bag-of-Words?

AI에 관심 있는 사람이라면, ORB-SLAM의 Loop Closing 설명을 읽다가 문득 의문이 들었을지도 모른다.

“Bag-of-Words(BoW)? 그거 자연어처리(NLP)에서 나오는 개념 아닌가?”

맞다. BoW는 원래 문서에서 단어의 출현 빈도를 세어 문서를 벡터로 표현하는 방식으로, 자연어처리 분야에서 자주 쓰인다.

 

그런데 ORB-SLAM은 이 BoW 개념을 시각적 특징점(ORB)에 그대로 적용한 것이다.

구체적으로는,

  • 이미지에서 검출된 ORB 특징점들을 "시각적 단어(visual word)"로 변환하고,
  • 하나의 이미지 전체를 BoW 벡터로 구성한 다음,
  • 벡터 간의 유사도 계산을 통해 현재 장면이 과거에 본 장소와 같은지 판단한다.

즉, 텍스트 대신 이미지, 단어 대신 특징점, 문서 유사도 대신 장면 유사도를 계산하는 셈이다.
NLP 개념을 컴퓨터 비전에 응용한 아주 흥미로운 사례라고 할 수 있다.

 

이런 방식은 빠르게 장면 유사도를 계산할 수 있다는 점에서 효율적이지만, 단점도 있다.

바로 환경이 갑자기 바뀌는 경우, 같은 장소라도 다른 장면으로 인식될 수 있다는 것이다.

예를 들어, 같은 장소를 다시 방문했더라도 그 사이 눈이 내려 바닥 풍경이 달라졌다면, 특징점의 분포가 크게 달라져 이전과는 전혀 다른 장면으로 인식될 수 있다.

 

이처럼 ORB-SLAM은 조명 변화, 계절 변화, 구조 변경 등 환경적 요인에 다소 민감한 특성이 있다.
따라서 논문에서는 범용 SLAM 시스템으로 제시되고 있지만, 실제 활용 사례를 보면 환경 변화가 적은 실내 환경에서 더 안정적인 성능을 보인다는 평가가 있다.

 

 

정리하면,

ORB-SLAM의 중요한 특징 중 하나는 세 개의 핵심 모듈인 Tracking, Local Mapping, Loop Closing이 병렬로 동작한다는 점이다.

  • Tracking 모듈은 카메라의 위치를 실시간으로 추적하고,
  • Local Mapping 모듈은 지도 데이터를 구성하고 최적화하며,
  • Loop Closing 모듈은 백그라운드에서 장소 인식 및 루프 탐지를 수행한다.

이처럼 역할을 분리해 병렬로 처리함으로써, ORB-SLAM은 실시간성과 정확성을 모두 만족시키는 구조를 갖는다.

 

 

혹시 로봇청소기가 어떻게 집 안의 좁은 곳을 돌아다니며 효율적으로 청소할 수 있는지 궁금했던 적이 없는가? 우리가 집의 구조를 따로 알려주지 않았음에도 불구하고, 로봇이 알아서 가장 효율적인 경로를 찾아 움직이는 이유는 바로 여기에 SLAM 알고리즘이 적용되어 있기 때문이다. 이처럼 SLAM은 자율주행 자동차, 증강현실(AR), 서빙 로봇, 로봇청소기 등 매우 다양한 분야에서 사용되며,인공지능 기반 자율 시스템의 핵심 구성 요소로 자리 잡고 있다.

 

여기까지 수식적인 내용보다는 개념 위주로 논문 리뷰를 해보았다. 이번에 소개한 ORB-SLAM은 카메라를 이용한 Visual SLAM 분야에서 가장 핵심적이고 영향력 있는 논문 중 하나로, SLAM을 공부하고자 하는 사람이라면 꼭 한 번은 공부해 볼 만한 시스템이다.

 

 

 

논문 링크: https://ieeexplore.ieee.org/document/7219438

 

ORB-SLAM: A Versatile and Accurate Monocular SLAM System

This paper presents ORB-SLAM, a feature-based monocular simultaneous localization and mapping (SLAM) system that operates in real time, in small and large indoor and outdoor environments. The system is robust to severe motion clutter, allows wide baseline

ieeexplore.ieee.org

 

 

공부하면서 정리한 글이기 때문에, 내용에 오류가 있거나 보완할 점이 있다면 언제든지 피드백 환영합니다!

 

'논문리뷰' 카테고리의 다른 글

[논문 리뷰] Feature Extraction using Spiking Convolutional Neural Networks  (1) 2026.03.08
[논문 리뷰] Distilling Step-by-Step! Outperforming Larger Language Models with Less Training Data and Smaller Model Sizes  (0) 2026.03.08
[논문 리뷰] Distilling the Knowledge in a Neural Network  (0) 2026.03.07
[논문 리뷰] TaskSense: A Translation-like Approach for Tasking Heterogeneous Sensor Systems with LLMs  (0) 2026.03.07
[논문 리뷰] INFINI-GRAM MINI: Exact n-gram Search at the Internet Scale with FM-Index  (0) 2025.11.30
'논문리뷰' 카테고리의 다른 글
  • [논문 리뷰] Distilling Step-by-Step! Outperforming Larger Language Models with Less Training Data and Smaller Model Sizes
  • [논문 리뷰] Distilling the Knowledge in a Neural Network
  • [논문 리뷰] TaskSense: A Translation-like Approach for Tasking Heterogeneous Sensor Systems with LLMs
  • [논문 리뷰] INFINI-GRAM MINI: Exact n-gram Search at the Internet Scale with FM-Index
gwlim3012
gwlim3012
공부한 내용 정리, 기록용 블로그
  • gwlim3012
    Stacking Intelligence
    gwlim3012
  • 전체
    오늘
    어제
    • 분류 전체보기 (30)
      • 공부 (21)
        • ML·DL (5)
        • 통계 (5)
        • CS (5)
        • 회로·반도체 (5)
        • 기타 (1)
      • 논문리뷰 (6)
      • 기타 (3)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gwlim3012
[논문 리뷰] ORB-SLAM: A Versatile and Accurate Monocular SLAM System
상단으로

티스토리툴바