본문 바로가기
시스템

1.3. SLAM의 주요 구성 요소

by 프레스러쉬 2025. 4. 2.

SLAM(Simultaneous Localization and Mapping)은 단순히 한 가지 기술이 아닙니다. 다양한 기능이 모여 서로 긴밀하게 작동하는 복합 시스템입니다. 이 장에서는 SLAM을 구성하는 핵심 요소들을 하나씩 살펴보겠습니다. 이 구성 요소들의 역할을 정확히 이해하는 것은 SLAM 시스템을 구현하거나 분석하는 데 반드시 필요한 기초입니다.


🔹 1. 센서 입력 (Sensor Input)

SLAM의 시작점은 센서로부터의 데이터 입력입니다. SLAM 시스템은 주변 환경을 인식하고 해석하기 위해 여러 가지 센서를 사용합니다. 각 센서는 서로 다른 정보를 제공하며, 이 정보를 융합(Fusion)하여 보다 정확한 위치 추정과 지도 생성을 가능하게 합니다.

주요 센서 종류와 역할:

센서 종류 설명

카메라 (RGB, Stereo, RGB-D) 환경의 시각적 정보를 캡처. Visual SLAM의 핵심 센서
IMU (Inertial Measurement Unit) 가속도, 각속도 측정 → 움직임 방향 및 속도 추정
LiDAR (Light Detection and Ranging) 주변 환경과의 거리를 정밀하게 측정하여 3D 포인트 클라우드 생성
초음파/적외선 센서 가까운 거리 측정에 유용하나 정밀도는 낮음

📌 센서는 많을수록 좋지만, 비용·연산량·통신 처리 등을 고려해 적절히 선택해야 함.


🔹 2. 특징 추출 및 매칭 (Feature Extraction & Matching)

센서로부터 입력된 원시 데이터(raw data)는 그 자체로는 의미가 없습니다. 이를 분석하기 위해 SLAM 시스템은 먼저 영상이나 거리 데이터에서 의미 있는 특징(Feature)을 추출하고, 이를 **다른 프레임과 비교(매칭)**합니다.

예시:

  • 영상의 모서리, 선분, 패턴 등의 지점
  • LiDAR 포인트 클라우드에서의 급격한 거리 변화 지점

대표 알고리즘:

  • ORB (Oriented FAST and Rotated BRIEF)
  • SIFT, SURF, FAST, AKAZE 등

특징 추출과 매칭의 정확도는 SLAM 전체 성능에 큰 영향을 줍니다. 잘못된 매칭은 잘못된 위치 추정으로 이어지며, 이는 결국 지도의 품질도 나빠지게 만듭니다.


🔹 3. 자기 위치 추정 (Pose Estimation)

SLAM의 핵심 중 하나는 바로 **"내가 지금 어디에 있는가?"**를 파악하는 것입니다. 이를 위해 SLAM 시스템은 이전 프레임과 현재 프레임 사이의 **카메라나 센서의 움직임(변환 행렬)**을 계산합니다.

  • Pose = 위치(x, y, z) + 방향(roll, pitch, yaw)
  • 변환 행렬로 표현: 4x4 Homogeneous Transformation Matrix

주요 방법:

  • Visual Odometry (VO)
  • IMU 데이터를 이용한 Dead Reckoning
  • PnP (Perspective-n-Point) 알고리즘

이 과정을 통해 현재 위치를 추정하고, 점차 로봇의 전체 경로를 추적할 수 있습니다.


🔹 4. 지도 작성 및 업데이트 (Mapping)

현재 위치가 추정되면, SLAM 시스템은 그 위치를 기준으로 센서로부터 얻은 주변 환경 정보를 지도에 반영합니다.

지도(Map)의 유형:

  • 2D Grid Map: 간단한 평면 지도, 로봇청소기 등에 적합
  • 3D Point Cloud: 정밀한 공간 표현, 드론/AR 등에 사용
  • Dense Map vs Sparse Map: 자세한 표현 vs 특징점만 저장

지도는 매 프레임마다 점차 확장되며, 새로운 구조물이나 객체가 발견되면 업데이트됩니다.


🔹 5. 루프 클로저 감지 (Loop Closure)

SLAM 시스템은 오랜 시간 움직이다 보면 **누적 오차(Drift)**가 생깁니다. 작은 오차들이 쌓이면 지도의 왜곡이나 위치 추정 오류로 이어집니다. 이를 보정하는 기술이 바로 **Loop Closure(루프 클로저)**입니다.

Loop Closure란?

  • 로봇이 예전에 지나갔던 장소를 다시 방문했을 때 이를 인식하고,
  • 이전에 기록된 지도와 현재의 데이터를 비교해 위치와 지도를 다시 정렬하는 과정입니다.

예시:

  • 복도를 한 바퀴 돌고 원래 위치로 돌아왔을 때, 시스템이 "여긴 전에 왔던 곳이야!"라고 인식함.

Loop Closure는 **전역적인 지도 정합(Global Consistency)**을 유지하는 데 매우 중요합니다.


🔁 전체 구성 흐름 요약

📊 그림 1-1. SLAM의 전체 파이프라인 흐름도

[센서 입력]
     ↓
[특징 추출 및 매칭]
     ↓
[자기 위치 추정]
     ↓
[지도 작성]
     ↓
[루프 클로저 감지]
     ↺ (지도/위치 보정)

이러한 순환 구조는 SLAM의 실시간 동작을 가능하게 하며, 반복적으로 정확도가 향상되는 특징이 있습니다.


🧠 보충 개념: Backend vs Frontend

SLAM 시스템은 보통 FrontendBackend로 나뉘어 구성됩니다.

영역 역할

Frontend 센서 데이터 입력, 특징 추출, 위치 추정 등 실시간 처리
Backend 지도 최적화, 루프 클로저, 전체 경로 계산 등 고수준 계산

✅ 정리

SLAM은 다음과 같은 다섯 가지 주요 구성 요소를 기반으로 작동합니다:

  1. 센서 입력 – 환경 정보를 받아들이는 눈과 귀
  2. 특징 추출/매칭 – 환경 속에서 의미 있는 포인트를 찾아내는 뇌의 시각 처리
  3. 자기 위치 추정 – "나는 어디에 있지?"에 대한 계산
  4. 지도 작성 – "주변은 어떻게 생겼지?"를 그리는 지도 제작자
  5. 루프 클로저 – 시간이 지나도 일관성을 유지하는 자가보정 시스템

이 다섯 단계가 원활히 작동할 때, SLAM은 비로소 안정적인 자율 이동과 공간 인식을 가능하게 합니다. 다음 장에서는 이러한 구성 요소들이 실제로 어떻게 구현되는지, 간단한 코드와 예제를 통해 살펴보겠습니다.