Contents — find the section you need

로봇 청소기, 드론, 자율주행 자동차, 증강현실(AR) 안경은 모두 "지금 내 위치는 어디인가?"라는 질문에 답해야 한다는 공통된 요구 사항을 가지고 있습니다. GPS는 실내나 인구 밀집 지역에서는 제대로 작동하지 않으며, 애초에 지도를 항상 사용할 수 있는 것도 아닙니다. 비주얼 SLAM은 카메라 이미지(때로는 저렴한 보조 센서와 함께 사용)만을 이용하여 이 질문에 답하는 기술입니다. 이 글에서는 로봇이 자신의 위치를 잃어버리는 근본적인 원인부터 시작하여, 특징점 추적, 카메라 기하학의 수학적 원리, 비주얼 오도메트리와 SLAM의 차이점, 랜드마크 알고리즘의 계보, 그리고 마지막으로 실제 적용 사례에서 랜드마크 알고리즘을 선택하는 방법에 대해 살펴봅니다.

Intel RealSense D435 심도 카메라(평면 버전)Visual-SLAM 입력 카메라
Mobileye 차량 카메라차량 카메라 예시

이미지: Intel RealSense D435 심도 카메라 (Marc Auledas, CC BY-SA 4.0) / Car Mobileye 시스템의 창 카메라 (Ranbar, CC BY-SA 4.0), Wikimedia Commons. 다음은 예시 카메라 이미지이며, Visual-SLAM 하드웨어 구성에 필수적인 것은 아닙니다.

0. 이 글에서 다루는 내용

  • Visual-SLAM이란 무엇이며, 카메라만으로 자신의 위치를 추정할 수 있는 이유
  • Visual Odometry(VO)와 SLAM의 차이점
  • ORB-SLAM, LSD-SLAM, DSO, SVO, DROID-SLAM의 설계 특징
  • 특징 기반, 직접, 학습 기반 접근 방식의 차이점
  • Visual-SLAM의 한계점과 그 이유
  • 로봇, 드론, AR/VR, 자율주행차에 적합한 방법을 선택하는 방법

1. Visual-SLAM의 실제 작동 원리

한 문장으로 요약하면, Visual-SLAM은 카메라가 촬영한 이미지 시퀀스만을 이용하여 카메라의 공간 궤적(위치 추정)과 주변 환경의 3D 구조(지도 작성)를 동시에 추정합니다.

이름 자체(동시 위치 추정 및 지도 작성)에서 알 수 있듯이, Visual-SLAM은 핵심적인 기능을 수행합니다. 가장 중요한 것은 "동시성"이라는 단어입니다. 지도가 이미 알려져 있다면 자신의 위치를 찾는 것은 비교적 쉬운 문제일 것입니다. 위치가 정확하게 알려져 있다면 지도를 구축하는 것 또한 쉬울 것입니다. 하지만 Visual-SLAM은 이러한 이점을 누릴 수 없습니다. 지도를 구축하려면 자신의 위치를 알아야 하고, 위치를 알기 위해서는 지도가 필요합니다. 이러한 닭과 달걀의 관계처럼, 동일한 관측 데이터 스트림에서 동시에 이 두 가지를 해결해야 합니다.

입력은 카메라(단안, 스테레오 또는 RGB-D)에서 얻은 시계열 이미지이며, 출력은 두 가지입니다. 하나는 매 타임스텝마다 카메라의 6자유도 포즈(위치 3자유도, 방향 3자유도)이고, 다른 하나는 주변 환경을 나타내는 지도(희소한 특징점 집합 또는 조밀한 3D 형상)입니다. 청소하면서 방의 구조를 학습하는 로봇 청소기, GPS 신호가 닿지 않는 실내나 지하에서 안정적으로 호버링하는 드론, 오차 없이 가상 객체를 현실 세계에 겹쳐 보여주는 AR 헤드셋 등, 이 모든 경우에 Visual-SLAM이 활용됩니다.

2. 로봇은 왜 자신의 위치를 모르는 걸까요?

Visual-SLAM이 실제로 해결하는 문제를 이해하려면, 로봇이 왜 자신의 위치를 잃어버리는지 구체적으로 질문해 보는 것이 도움이 됩니다.

첫째, GPS가 없거나 신뢰할 수 없는 환경이 많습니다. 실내, 지하, 터널, 고층 빌딩 사이의 도심 협곡(다중 경로 반사로 인해 위치 오차가 커지는 곳), 수중, 심지어 위성군조차 없는 행성 등에서는 절대 위치를 직접 얻을 방법이 없습니다.

둘째, 지도 자체가 존재하지 않는 문제가 있습니다. 새로 지어진 구조물, 재난 현장, 미탐사 행성 표면 등에서는 미리 만들어진 지도 데이터가 항상 제공되는 것은 아닙니다. 지도가 없으면 "지도와 위치를 대조해 보는 것"조차 불가능합니다.

셋째, 그리고 가장 근본적인 이유는 원칙적으로라도 단일 센서 판독값으로는 절대 위치를 결정할 수 없다는 것입니다. 카메라는 현재 주변 상황만 보여줍니다. 이미지 하나만으로는 "거실 저 벽에서 2.3미터 떨어진 곳이야"라고 바로 알 수 없습니다. 특정 벽을 "그 벽"으로 인식하려면 이전에 그 벽을 본 적이 있어야 하고, 그때 자신의 위치를 기억해야 합니다. 다시 말해, 현재 관측값을 의미 있는 위치 정보로 변환하려면 과거 관측값과의 대응 관계가 필요합니다(현재 위치는 과거 위치에 따라 달라집니다). 그리고 바로 이 대응 관계를 제공하는 것이 지도입니다.

SLAM 문제의 핵심은 외부의 절대 위치 정보 없이 오직 관측 데이터만을 이용하여 "현재 보이는 것"과 "이전에 지도에 표시한 것" 사이의 대응 관계를 지속적이고 일관되게 구축하는 것입니다. 단 하나의 잘못된 대응 관계는 이후의 모든 추정에 오류를 전파합니다. 따라서 이러한 누적 오류를 억제하고 사후에 수정하는 것이 모든 시각 SLAM 알고리즘 설계의 핵심 과제입니다.

3. 카메라 이미지에서 무엇을 찾아야 할까요?

카메라의 원본 이미지는 밝기와 색상 등의 픽셀 값으로 이루어진 격자에 불과합니다. "내가 어떻게 움직였는지"를 파악하는 첫 번째 단계는 이 격자 안에서 추적 가능한 단서를 찾는 것입니다.

특징(Feature)이란 이미지에서 주변과 명확하게 구분되고 시점이 바뀌더라도 안정적으로 다시 감지될 수 있는 지점입니다. 모서리, 가장자리 교차점, 밝기 변화가 여러 방향으로 급격하게 나타나는 지점 등이 특징입니다. 주변과 구별되지 않는 균일한 파란 하늘은 특징이 될 수 없습니다.

특징 검출(Feature Detection)은 단일 이미지 내에서 특징 후보점을 찾습니다. ORB(Oriented FAST and Rotated BRIEF), SIFT, FAST 코너 검출기와 같은 알고리즘은 어떤 픽셀이 특징처럼 보이는지 판단하고, 각 픽셀 주변의 특징을 수치적으로 요약한 디스크립터(descriptor)를 계산합니다.

특징 추적(Feature Tracking)은 시간상으로 다음 프레임에서 이러한 특징들을 찾아 일치시킵니다. 크게 두 가지 접근 방식이 있습니다. 하나는 특징점의 유사성을 이용하여 검출된 특징들을 매칭하는 특징점 매칭(Feature Matching)이고, 다른 하나는 이전 프레임에서 특징점의 위치를 기준으로 다음 프레임에서 주변 영역을 탐색하는 광학 흐름(Optical Flow, 고전적으로는 Lucas-Kanade 방법 사용)입니다.

실제 세계의 동일한 점이 서로 다른 프레임에서 다른 위치에 나타나는 이러한 관계를 대응점(Correspondence)이라고 합니다. Visual-SLAM에서 거의 모든 기하학적 계산은 이러한 대응점 집합을 입력으로 사용합니다. 대응점이 하나도 없으면 카메라의 움직임에 대한 단서를 전혀 얻을 수 없습니다.

광학 흐름은 이미지의 각 점(또는 희소한 점 집합)이 프레임 간에 얼마나 멀리, 그리고 어떤 방향으로 이동했는지를 나타내는 벡터장입니다. 특징점 기반 추적은 가장 특징적인 점들만 추적하는 반면, 광학 흐름은 더 넓은 영역의 움직임 정보를 활용할 수 있지만 일반적으로 계산 비용이 더 높습니다.

4. 카메라 움직임 계산

대응점을 확보한 후에는 이를 기하학적으로 변환하여 카메라의 움직임을 추정할 수 있습니다. 이 계산의 기초는 에피폴라 기하학입니다.

에피폴라 기하학 다이어그램

그림 1 — 두 개의 카메라 시점 O_1와 O_2, 공간상의 한 점 X, 그리고 각 이미지 평면에 투영된 점 x_1, x_2. x_1이 주어졌을 때, 이에 대응하는 점 x_2은 항상 두 번째 이미지(에피폴라 선)의 한 직선 위에 놓이도록 제한됩니다.

그림: Epipolar 기하학 (Arne) (이미지 출처: Nordmann, CC BY-SA 3.0 / GFDL), Wikimedia Commons. 원본 SVG는 브라우저에서 안정적으로 표시되도록 흰색 배경의 PNG로 변환되었습니다.

공간상의 동일한 점 X을 서로 다른 두 시점에서 촬영할 때, 한 이미지의 해당 점 \mathbf{x}_2은 다른 이미지의 점 \mathbf{x}_1에 대해 이미지 내 어디에든 위치할 수 없으며, 반드시 하나의 직선(에피폴라 선) 위에 있어야 합니다. 이러한 기하학적 제약을 인코딩하는 행렬이 필수 행렬 E입니다. 카메라의 내부 매개변수가 알려져 있을 때, 정규화된 카메라 좌표계에서 대응하는 점들은 다음 조건을 만족합니다.

\mathbf{x}_2^{\top} E \, \mathbf{x}_1 = 0, \qquad E = [\mathbf{t}]_{\times} R

여기서 R과 \mathbf{t}는 카메라 1에서 카메라 2로의 회전 및 이동을 나타내고, [\mathbf{t}]_{\times}은 \mathbf{t}로부터 생성된 비대칭 행렬로, 외적을 행렬 곱셈으로 표현합니다. 이 식은 대응점 \mathbf{x}_1, \mathbf{x}_2과 카메라의 상대 회전 및 이동 사이에 항상 이 제약 조건이 성립함을 의미합니다. 필요한 대응점의 개수는 추정기에 따라 다릅니다. 보정된 Essential Matrix는 최소 5점의 대응점을 사용하는 반면, 선형 8점 추정은 최소 8개의 대응점을 사용합니다. 실제 데이터에는 이상치가 포함되어 있으므로, 실제 시스템에서는 더 많은 대응점을 수집하고 이를 RANSAC 또는 다른 강건한 추정기와 결합합니다. 내부 매개변수가 알려지지 않았거나 픽셀 좌표에서 직접 작업할 때, 내부 행렬 K를 포함하는 기본 행렬 F = K_2^{-\top} E K_1^{-1}가 동일한 역할을 합니다.

필수 행렬에서 복원된 변환 \mathbf{t}에는 실제 단위(예: 미터)가 없습니다. 두 이미지만으로는 카메라가 1미터 이동했는지 2미터 이동했는지 알 수 없습니다. 이러한 스케일 모호성은 특히 단안 구성과 같은 Visual-SLAM에 특정한 제약 조건이며, 5절에서 다시 다룹니다.

대응점의 실제 3D 위치, 즉 공간에서 점 X의 좌표를 계산하는 것을 삼각측량이라고 합니다. 각 시점에서 X로 향하는 두 광선을 연장하면, 이상적으로는 두 광선이 정확히 점 X에서 교차해야 합니다. 교차점을 찾는 것은 대응점의 3D 위치를 복원하는 방법입니다(실제로는 관측 노이즈 때문에 광선이 정확히 만나지 않으므로 최소제곱법을 사용하여 두 광선에 가장 가까운 점을 찾습니다).

이미 3D 위치가 알려진 랜드마크와 이미지 상의 해당 랜드마크 위치 사이에 대응점이 있다면, 카메라의 포즈를 직접 계산할 수 있습니다. 이것이 PnP(Perspective-n-Point) 문제입니다. 즉, n개의 3D 점과 이미지 상의 투영 위치가 주어졌을 때, 카메라의 위치와 방향을 구하는 것입니다. 이미 맵이 존재하는 경우, PnP는 각 프레임의 카메라 포즈를 계산하는 핵심 도구가 됩니다.

5. 비주얼 오도메트리

프레임마다 "대응점으로부터 카메라의 움직임 계산" 과정을 반복하는 것만으로도 카메라의 궤적을 추정할 수 있습니다. 이것이 비주얼 오도메트리(VO)입니다.

VO는 현재 프레임과 이전 프레임(또는 최근 몇 프레임) 사이의 상대적인 움직임만을 조합하여 카메라의 궤적을 구성합니다. 일반적으로 영구적인 지도를 유지하거나 이전에 방문한 위치를 인식하는 메커니즘이 없습니다. 마치 자동차의 주행 거리계처럼 "지금으로부터 얼마나 이동했는지"를 지속적으로 계산하는 방식입니다.

VO와 SLAM의 차이점은 바로 여기에 있습니다. 시스템이 지도를 유지하고 과거와의 일관성을 복구하는 메커니즘을 갖추고 있는지 여부입니다. VO는 가볍고 구현이 간단하지만, 각 프레임의 추정치가 항상 이전 프레임에 의존하기 때문에 작은 오차가 시간이 지남에 따라 무한히 누적됩니다. 이러한 누적 오차를 드리프트(Drift)라고 합니다. 로봇이 시작 지점으로 되돌아오는 경우, VO만으로는 "시작 지점으로 돌아왔다"는 것을 인식할 수 없습니다. 추정된 궤적은 시작 지점에서 벗어난 상태로 유지되며 결코 닫히지 않습니다.

특히 단안 VO에 특유한 또 다른 문제점은 4절에서 이미 다룬 스케일(Scale) 문제입니다. 단안 카메라로 촬영한 이미지만으로는 절대적인 실제 길이 단위를 복원할 수 없습니다. 이미지의 외관만으로는 "물체가 2미터 이동했더니 두 배로 커 보인다"와 "물체가 4미터 이동했더니 네 배로 커 보인다"를 구분할 수 없습니다. 스테레오 카메라(두 렌즈 사이의 기준 거리를 알고 있어 크기 기준점으로 사용할 수 있음), RGB-D 카메라(깊이 센서가 실제 거리를 직접 제공함), 또는 IMU(실제 크기의 가속도를 통해 크기를 추정할 수 있음)와의 조합을 사용하면 이러한 크기 모호성을 해결할 수 있습니다.

6. SLAM이 VO에 추가하는 기능

SLAM은 VO에 다음과 같은 추가 요소가 더해진 것으로 생각하면 이해하기 쉽습니다.

맵은 지금까지 관측된 모든 특징점의 3D 위치를 누적하여 표현한 것입니다(또는 밀집된 3D 형상). VO처럼 바로 이전 프레임과만 비교하는 대신, 이제 시스템은 맵에 누적된 모든 요소와 비교할 수 있습니다.

랜드마크는 해당 맵의 개별 요소이며, 일반적으로 3D 위치를 가진 특징점입니다. 새로운 프레임이 도착할 때마다 해당 프레임에 보이는 랜드마크와 비교하여 카메라 포즈를 추정함으로써, 시스템은 이전 프레임뿐만 아니라 로봇의 이동 기록을 통해 구축된 전체 지도와 일관성 있게 포즈를 유지할 수 있습니다.

루프 클로저(Loop Closure)는 SLAM이 VO(Visual Orientation)에 비해 갖는 가장 중요한 장점입니다. 로봇이 이전에 방문했던 장소로 돌아오면 이미지 유사성을 이용하여 이를 감지하고, "현재 위치"와 "처음 방문했을 때의 위치"를 연결하는 새로운 제약 조건을 지도에 추가합니다. 이 제약 조건을 추가함으로써 시스템은 전체 루프를 따라 누적된 드리프트를 재분배하고 보정할 수 있습니다.

이러한 보정의 결과가 바로 전역 일관성(Global Consistency)입니다. 루프 클로저 이전에는 누적된 오차로 인해 실제로는 동일한 물리적 위치여야 하는 두 지점이 지도상에서 약간 다른 위치로 기록되는 문제가 발생했습니다. 루프 클로저 보정은 이러한 불일치를 감지하고 전체 지도를 자체적으로 일관된 형태로 재구성합니다. 바로 이 루프 클로저 메커니즘 덕분에 SLAM은 단순히 "움직임 기록"이 아닌 "일관성 있는 지도"를 제공할 수 있는 것입니다.

7. 비주얼 SLAM의 기본 구조

이러한 요소들을 종합해 보면, 모든 주요 최신 비주얼 SLAM 시스템이 공통적으로 사용하는 파이프라인을 큰 틀에서 확인할 수 있습니다.

Diagram 1 · Use the button to switch views
The basic Visual-SLAM pipeline The flow from camera images through feature tracking, pose estimation, local mapping, loop closure, and optimization to a pose and map output. Camera Feature / Direct Tracking Pose Estimation Local Mapping Loop Closing Pose + Map Optimization (Bundle Adj. / Pose Graph)

8. 주요 알고리즘

Visual-SLAM의 역사는 명시적으로 설계된 부분과 학습에 맡겨진 부분의 비율이라는 한 축을 따라가면 가장 쉽게 이해할 수 있습니다.

PTAM(Parallel Tracking and Mapping, Klein & Murray, 2007)은 추적(자세 추정)과 매핑(지도 구축)을 별도의 병렬 스레드로 실행하는 선구적인 시스템입니다. 추적은 매 프레임마다 빠르게 실행되는 반면, 계산 비용이 많이 드는 매핑을 위한 번들 조정은 여유 시간이 있는 백그라운드 스레드에서 실행됩니다. 추적과 매핑을 분리하는 이 아이디어는 이후 많은 Visual-SLAM 시스템에 계승되었습니다.

ORB-SLAM(Mur-Artal, Montiel & Tardós, 2015)은 ORB 특징을 기반으로 구축되었으며, 세 개의 스레드 구조(추적, 로컬 매핑, 루프 클로징)와 위치 인식(Bag-of-Words를 통한 과거 프레임과의 매칭)을 결합하여 실용적인 단안 카메라 성능을 달성했습니다. ORB-SLAM2(Mur-Artal & Tardós, 2017)는 단안 카메라를 넘어 스테레오 및 RGB-D 카메라까지 프레임워크를 확장했습니다. ORB-SLAM3(Campos, Elvira, Gómez Rodríguez, Montiel & Tardós, 2021)는 IMU(Visual-Inertial SLAM)와의 긴밀한 연동 및 다중 맵 SLAM을 추가하여 여러 맵을 유지하고 필요에 따라 병합할 수 있도록 했으며, 현재까지도 특징 기반 SLAM의 사실상 표준 구현으로 남아 있습니다.

LSD-SLAM(Large-Scale Direct monocular SLAM, Engel, Schöps & Cremers, 2014)은 직접 방식의 획기적인 사례로, 대규모 환경에서 특징점 검출 단계 없이 이미지 밝기를 이용하여 카메라 자세를 직접 추정할 수 있음을 보여줍니다. 특징점 추출 과정을 생략함으로써 특징이 희소한 경우에도 정보를 활용할 수 있습니다.

DSO(Direct Sparse Odometry, Engel, Koltun & Cremers, 2016년 최초 발표, 2018년 출판)는 직접 방식을 유지하지만, LSD-SLAM이 생성하는 반밀도 추정 방식 대신 희소한 점 집합에 걸쳐 측광 오차를 최소화하여 정확성과 계산 효율성을 모두 달성합니다.

SVO(Fast Semi-Direct Monocular Visual Odometry, Forster, Pizzoli & Scaramuzza, 2014)는 특징점 탐지와 직접 방식을 반직접 방식으로 결합하여 탐지된 특징점 주변의 패치 영역에서 밝기를 추적함으로써 높은 프레임 속도에서 빠른 작동을 구현합니다. 드론과 같이 자원이 제한된 플랫폼을 고려하여 설계되었습니다.

DROID-SLAM(Teed & Deng, 2021)은 명시적인 특징 추출 및 매칭 단계를 딥러닝으로 완전히 대체하여 상관 볼륨, 순환 업데이트 연산자, 미분 가능한 번들 조정 레이어를 통해 카메라 포즈와 픽셀 단위 깊이를 추정합니다. 이는 대표적인 학습 기반 접근 방식입니다(내부 메커니즘에 대한 자세한 내용은 Visual-SLAM Trends에서 확인할 수 있습니다).

9. 특징 기반 vs. 직접 vs. 학습 기반

간단히 말해, 이러한 알고리즘들은 세 가지 설계 철학 중 하나에 속합니다.

측면 특징 기반(예: ORB-SLAM3) 직접(예: DSO/LSD-SLAM) 학습 기반(예: DROID-SLAM)
원리 특징을 감지하고 설명하며, 대응점 간의 기하학적 관계를 기반으로 자세를 계산합니다. 특징 추출을 완전히 건너뛰고 이미지 밝기를 직접 최소화하여 자세를 찾습니다. 신경망이 특징 추출, 대응점 찾기, 자세/깊이 추정을 대체하도록 학습합니다.
정확도 특징이 풍부한 경우 정확도가 높지만, 희소한 맵을 생성하는 경향이 있습니다. 밝기 그라디언트가 있는 모든 곳에서 작동하며, 준밀도에서 밀집된 맵을 생성할 수 있습니다. 텍스처가 부족한 환경에서도 비교적 안정적이며, 밀집된 깊이 정보를 쉽게 얻을 수 있습니다.
계산 비용 중간 (특징 추출, 디스크립터, 매칭) 구현 방식에 따라 다르지만 일반적으로 가볍습니다 (특히 DSO는 효율성을 최적화합니다). 높음 (추론에만 수 GB에서 십여 GB 이상의 GPU 메모리가 필요한 경우가 많습니다).
견고성 텍스처가 부족한 환경이나 동적 객체가 있는 경우 취약하지만, 조명 변화에는 비교적 강합니다. 밝기 변화(자동 노출, 조명)에 민감합니다. 학습 데이터 범위 내에서는 강력하지만, 학습되지 않은 환경에 대한 일반화는 제한적일 수 있습니다.
구현 난이도 성숙한 오픈 소스 구현체가 많아 쉽게 도입할 수 있습니다. 수학적 계산(밝기 선형화)은 다소 복잡합니다. 사전 학습된 모델을 사용하는 것은 쉽지만, 재학습이나 내부 튜닝에는 더 많은 전문 지식이 필요합니다.

특징 기반 방식은 임베디드 시스템 배포 사례를 포함하여 가장 오랜 사용 기록을 보유하고 있습니다. 직접 방식은 텍스처가 부족한 환경에서 더 나은 성능을 보입니다. 학습 기반 방식은 빠르게 발전하고 있지만 더 많은 연산 능력을 요구합니다. 이것이 대략 2026년 기준 현재 기술 환경입니다.

10. 백엔드

Visual-SLAM의 정확도를 최종적으로 결정하는 것은 프런트엔드(특징 추출, 추적, 자세 추정)뿐만 아니라, 축적된 모든 관측값을 자체 일관성 있는 형태로 다듬는 백엔드입니다.

번들 조정은 카메라 자세와 랜드마크의 3D 위치를 동시에 최적화하여 모든 관측값과 최대한 일관성을 유지하도록 합니다. 이는 전체 재투영 오차, 즉 카메라 포즈 (R_j, \mathbf{t}_j)를 통해 이미지에 투영된 랜드마크 \mathbf{X}_i과 해당 특징점이 실제로 관측된 위치 \mathbf{u}_{ij} 사이의 차이를 최소화합니다.

\{R_j, \mathbf{t}_j\}^{*}, \{\mathbf{X}_i\}^{*} = \arg\min_{\{R_j, \mathbf{t}_j\}, \{\mathbf{X}_i\}} \sum_{i,j} \left\| \pi\left( R_j \mathbf{X}_i + \mathbf{t}_j \right) - \mathbf{u}_{ij} \right\|^2

\pi(\cdot)는 카메라의 내부 매개변수를 기반으로 3D 점에서 이미지 평면으로의 투영 함수입니다. 모든 프레임과 모든 랜드마크를 동시에 최적화하는 전역 번들 조정(Global Bundle Adjustment)은 매우 정확하지만 계산 비용이 많이 듭니다. 실제로는 계산량을 관리하기 위해 가장 최근 몇 프레임에만 적용되는 지역 번들 조정(Local Bundle Adjustment)과 함께 사용되는 경우가 많습니다.

루프 클로저가 감지되면 포즈 그래프 최적화(Pose Graph optimization)가 적용됩니다. 모든 랜드마크를 포함하는 번들 조정과 달리 포즈 그래프 최적화는 각 타임스텝에서의 카메라 포즈만을 노드로 처리하고, 엣지를 통해 프레임 간의 상대 포즈 제약 조건을 인코딩하여 포즈만을 빠르게 최적화합니다. 루프 클로저에 의해 추가된 새로운 제약 조건은 누적된 드리프트를 전체 루프에 걸쳐 재분배합니다.

이 두 가지 문제는 모두 비선형 최적화 프레임워크 내에서 해결됩니다. 투영 함수 \pi(\cdot)과 포즈에서의 회전 합성 과정은 본질적으로 비선형적이기 때문에 Gauss-Newton 및 Levenberg-Marquardt와 같은 반복법이 사용되며, Visual-SLAM 구현에서는 g2o 및 Ceres Solver와 같은 라이브러리가 널리 사용됩니다.

11. Visual-SLAM의 한계점

Visual-SLAM은 수동 센서(카메라)에 의존하기 때문에 몇 가지 상황에서 정확도가 체계적으로 저하됩니다.

  • 어두운 환경: 빛이 부족하면 이미지의 신호 대 잡음비가 저하되어 특징점 검출과 직접 방식이 의존하는 밝기 기울기 계산이 불안정해집니다. 적외선 조명 RGB-D 카메라는 어느 정도 보완할 수 있지만, 야간 야외에서는 효과가 제한적입니다.

  • 낮은 텍스처: 흰 벽, 평평한 바닥, 유리 표면 등 밝기 변화가 적어 특징을 찾을 수 없거나, 직접 최소화 방법이 문제가 되어 지역 최소값에 빠지기 쉬운 환경.

  • 빠른 움직임: 카메라의 빠른 움직임이나 회전은 프레임 간의 대응점을 찾는 데 필요한 검색 범위를 넓히고, 모션 블러(아래 참조)와 결합되면 추적이 쉽게 실패합니다. 이러한 약점을 보완하는 일반적인 방법은 IMU(VIO)를 사용하는 것입니다.

  • 동적 객체: 움직이는 보행자나 자동차의 특징을 정적인 환경에 속한 것처럼 처리하면 카메라 자체의 움직임 추정에 오류가 발생합니다. 이를 위해서는 동적 객체를 감지하고 제외하는 전처리 과정이나, 동적 객체를 명시적으로 모델링하는 확장 기능이 필요합니다.

  • 모션 블러: 노출 시간 동안 카메라나 피사체의 움직임으로 인해 발생하는 흐림 현상으로, 특징 디스크립터를 불안정하게 만들고 매칭 정확도를 저하시킵니다. 글로벌 셔터 카메라나 노출 시간이 짧은 밝은 환경에서는 이러한 영향이 줄어듭니다.

이 모든 문제에는 공통점이 있습니다. 바로 카메라가 충분한 시각 정보를 얻지 못한다는 것입니다. LiDAR와 같은 능동 거리 측정 센서(LiDAR-SLAM 기술 동향 참조)는 원칙적으로 이러한 약점을 대부분 해결하지만, 자체적인 약점도 가지고 있습니다(섹션 2 참조). 단일 센서로는 모든 상황에 충분하지 않으며, 바로 이러한 상호 보완성 때문에 센서 융합(센서 융합 입문 참조)이 중요합니다.

12. 실제 적용 방법 선택

Visual-SLAM 접근 방식을 선택하는 것은 사용할 수 있는 센서의 종류, 가용 컴퓨팅 자원, 그리고 애플리케이션에서 요구하는 정확도와 실시간 성능에 따라 크게 달라집니다.

  • 로봇(실내 서비스 로봇, 청소 로봇): 저가형 카메라 구성에 제약이 있는 경우가 많으며, 이러한 환경에서는 특징 기반 ORB-SLAM 계열 방식이나 RGB-D 카메라를 이용한 고밀도 매핑이 실용적인 선택입니다. 복도형 구조나 텍스처가 부족한 환경에서는 LiDAR와의 조합을 고려해 볼 만합니다.

  • 드론: 연산 능력과 탑재량에 대한 엄격한 제약으로 인해 SVO와 같은 경량 반직접 방식이나 IMU와 긴밀하게 결합된 VIO 구성이 선호됩니다.

  • AR/VR: 실시간 성능과 낮은 지연 시간이 최우선 과제이며, 헤드셋에 내장된 IMU와 결합된 시각-관성(Visual-Inertial, VIO) 구성이 사실상의 표준이 되었습니다. 특히 AR에서는 전역 일관성(Global Consistency)이 가상 객체의 드리프트 여부를 직접적으로 결정하므로 루프 클로저 정확도 또한 매우 중요합니다.

  • 자율 주행: 독립형 Visual-SLAM으로는 거의 사용되지 않습니다. 카메라 기반 시각 정보는 일반적으로 LiDAR, 레이더, GNSS와 함께 다중 센서 융합 시스템에 통합됩니다(센서 융합 입문 참조).

  • 실내 vs. 실외: 실내에서는 조명 변화가 완만하고 구조물이 많아 특징 기반 방식이 잘 작동하는 경향이 있습니다. 실외에서는 조명 변화, 동적인 객체, 그리고 광활한 규모로 인해 어려움이 발생하므로 루프 클로저의 견고성이 훨씬 더 중요해집니다.

2026년 기준 대략적인 결정 축은 다음과 같습니다. 컴퓨팅 자원이 풍부하고 최고 정확도가 목표라면 학습 기반 방식을, 검증된 실적과 낮은 자원 사용량이 가장 중요하다면 특징 기반 방식을, 질감이 부족한 환경에서의 복원력이 필수적이라면 직접 방식을 선택하십시오. 최신 연구 방향(3D 가우시안 스플래팅/NeRF를 이용한 지도 표현 재구성, 피드포워드 3D 파운데이션 모델 등)은 Visual-SLAM Trends에서 확인할 수 있습니다.

구현 전 5가지 점검 사항

알고리즘 이름만으로 선택하면 현장에서 발생하는 오류를 진단하기 어렵습니다. 구현 전에 다음 5가지 항목을 기록할 수 있는지 확인하십시오. 추적에 실패할 경우 센서 문제와 추정기 문제를 구분할 수 있습니다.

점검 사항 준비 정보 누락 시 발생하는 문제
캘리브레이션 내부 특성(K), 렌즈 왜곡, 해당되는 경우 스테레오 기준선 재투영 오류가 포즈 오류처럼 보이고 스케일을 평가할 수 없음
시간 동기화 프레임 타임스탬프, 카메라-IMU 오프셋, 누락된 프레임 빠른 움직임 시 이미지와 관성 데이터는 서로 다른 자세를 나타냅니다.
셔터 및 노출 글로벌/롤링 셔터, 노출 시간 및 자동 노출 설정 모션 블러 또는 기하학적 왜곡이 알고리즘 오류로 오인될 수 있습니다.
동적 객체 마스크 사용 여부, 움직이는 객체의 비율 및 거부된 대응점 수 보행자 또는 차량이 정적 지도에 흡수될 수 있습니다.
평가 로그 정답 데이터, ATE/RPE, 추적 손실 시간 및 루프 감지 결과 "움직였다"는 정보만으로는 정확도, 드리프트 또는 복구 능력을 비교하기에 충분하지 않습니다.

이 표를 먼저 작성하면 특징 기반 방식에서 직접 또는 학습 기반 방식으로 전환할 때 변경해야 하는 부분과 고정할 수 있는 부분을 쉽게 구분할 수 있습니다. Visual-SLAM은 알고리즘 자체보다는 카메라, 타이밍, 전처리, 최적화 및 평가를 포함한 시스템 전체로서 선택해야 합니다.

13. 요약

Visual-SLAM은 카메라 이미지만을 이용하여 대응점을 추적하고, 에피폴라 기하학 및 PnP를 통해 카메라의 움직임을 복원하며, 맵 생성 및 루프 클로저를 통해 누적된 오차를 지속적으로 보정하여 동시 위치 추정 및 지도 작성을 달성합니다. 세 가지 설계 철학, 즉 특징 기반(ORB-SLAM 계열), 직접 방식(DSO/LSD-SLAM), 학습 기반(DROID-SLAM)은 각각 다른 장단점을 가지고 있으며, 특징을 명시적으로 처리하는지, 밝기를 직접 사용하는지, 학습에 얼마나 많은 부분을 위임하는지 등의 축을 따라 쉽게 이해할 수 있습니다. 어떤 방식을 선택할지는 사용 가능한 센서, 컴퓨팅 자원, 필요한 정확도 및 실시간 성능을 고려하여 애플리케이션별로 결정해야 합니다.

14. 참고 문헌

위에서 논의된 대표적인 방법과 2면 기하학에 대한 주요 논문 및 연구 페이지를 구현 및 추가 학습을 위한 출발점으로 제공합니다. 논문의 주장과 특정 제품 또는 데이터셋에서의 성능을 혼동하지 않으려면, 링크된 텍스트와 실험 조건을 함께 읽어보세요.

이해도 점검
매력적인 지도가 정확한 위치 추정을 가능하게 하는가?

궤적 오차와 별도로 지도의 외관을 평가합니다. 축척, 정렬, 지역 오차 및 장기적인 드리프트를 확인합니다.

What to read next

Review the background루프 클로저 기본 가이드 — 루프 구간에서 SLAM 시스템의 드리프트 현상을 한 번에 해결하는 방법Continue the series단안식 깊이 추정 - 상대적 순서에서 미터법 거리까지Explore another aspect of this field이미지 밝기·휘도 Lab — 노출, 감마, 클리핑 비교