본 글은 국내 신동원, 장형기님께서 배포해주신 "SLAM의 이해와 구현"이라는 자료를 기반으로 요약하였음을 밝힙니다.

 

01. SLAM 이란?

SLAM이란 동시적 위치추정 및 맵핑을 의미한다. 아주 쉽게 말해 Localization은 내가 어디에 있지를 알아내는 것이고 Mapping은 내 주변에 뭐가 있는지를 알아내는 것이다. 이 두 문제를 동시에 풀고자하는 방법이 SLAM이다.

 

02. SLAM 응용분야

SLAM 활용

  • 모바일 로보틱스 (Mobile Robotics)
  • 자율주행 (Autonomous Driving)

로봇 관련 회사

  • 소프트뱅크(Softbank) - 페퍼로봇
  • 테미(Temi) - 테미로봇
  • 테슬라 - 옵티머스

 

03. SLAM 알고리즘 종류

1900년대

  • 베이즈 필터 기반: Prior + Likelihood = Posterior를 계산.
    • 확장칼만필터 SLAM (EKF SLAM)
  • 파티클 필터 기반
    • Fast SLAM

 

2000년대

  • 그래프 최적화 기반
    • 그래프 노드: 로봇 위치
    • 그래프 엣지: 회전 & 이동
  • 특징점 기반: 카메라 궤적 추적 및 맵핑 수행
    • ORB-SLAM

 

  • 밝기 기반 (Intensity-based)
    • LSD-SLAM

 

04. SLAM 알고리즘 파이프라인

프론트엔드(Frontend)

  1. 카메라 or 라이다 센서 데이터 수집 + 전처리(노이즈 제거)

  2. 2.1 Visual Odometry (시각적 주행 거리 측정)

    - 센서의 상대적인 움직임을 예측

    2.2 루프 폐쇄 검출 (Loop closure detection)

    - 현재 센서 위치가 이전 방문 위치인지 판단
    - 비연속적 데이터로 상대적인 움직임 예측

백엔드(Backend)

  1. 백엔드 최적화
    • 프론트엔드에서 얻은 센서 위치와 주변 환경 정보를 이용해 불확실성 제거하고 일관성 있는 지도 만들기 위한 최적화 과정 수행
    • 현재 센서의 자세와 주변 환경의 랜드마크 정보를 그래프 노드로 표현 후 노드 사이의 제약조건을 그래프 엣지로 표현해 모든 그래프 사이의 제약조건을 최소화 하는 형태로 센서의 자세와 랜드마크 위치를 최적화
  2. 지도 표현
    • 최적화 정보를 기반으로 시나리오에 적합한 환경지도를 생성

 

Visual Odometry란? (시각적 주행 거리 측정)

정의: 인접 이미지 사이의 센서 움직임을 예측해 회전과 이동 파라미터를 계산하는 알고리즘

한계점: Visual Odometry만 사용해 연속적인 센서 궤적을 예측하면 누적된 표류 오차(Drift Erorr) 때문에 실제 궤적과 차이를 보임

보완방법: 루프 폐쇄 검출과 백엔드 최적화 과정이 반드시 필요함

 

루프 폐쇄 검출 (Loop Closure Detection)이란?

  • 정의: 현재 센서 위치가 이전에 방문한 곳인지 판단하는 알고리즘
  • 방법: 현재 센서 입력과 이전 센서 입력 사이의 유사성을 고려
  • 효과: 아래와 같이 Visual Odometry에 의해 표류오차가 누적된 빨간 선에서 루프 폐쇄 검출 알고리즘을 통해 같은 위치임을 판단해 전체 궤적을 초록선에 가까이 보정할 수 있음

  • 동작원리: 센서 입력 사이 유사성은 크게 이미지 간 유사성이나 기하학적 유사성을 고려함
    • 이미지 간 유사성은 같은 장소에서 촬영한 사진임에도 불구하고 다른 시간, 날씨, 조명, 시점과 같은 다양한 요인에 의해 시각적으로 큰 차이가 나는 영상이 나올 수 있음. 하지만 이러한 다양한 변화 요인들에도 불구하고 강건하게 같은 장소임을 판단하는 알고리즘이 루프 폐쇄 검출 알고리즘
    • 기하학적 유사성은 라이다 센서와 같은 3차원 공간에 대한 형상 정보를 수집할 때 사용할 수 있음

 

백엔드 최적화 (Backend optimization)란?

  • 정의: 노이즈가 많은 데이터로부터 전체 시스템의 상태를 정확하게 추정(State estimation) 방법
  • 분류: 필터 기반, 비선형 최적화 기반
    • 필터 기반
      • 베이즈 필터: 사전확률 + 가능도를 융합해 사후확률을 업데이트해 센서의 자세 또는 랜드마크의 위치를 업데이트 하는 방법
        • 칼만 필터
        • 파티클 필터
    • 비선형 최적화 기반
      • 정의
        • 센서 자세와 랜드마크 사이에 비선형적 관측 모델이나 연속적인 센서 사이의 비선형적 움직임 모델이 주어졌을 때 이러한 비선형 모델에 의해 만들어지는 제약조건을 최소화시키는 방향으로 센서의 자세와 랜드마크를 업데이트하는 방법
      • 종류
        • 번들 조정(Bundle adjustment)
        • 그래프 최적화(Graph optimization)

Map representation이란?

정의: SLAM 파이프라인의 마지막 단계로 최적화된 센서 자세와 랜드마크 자세를 이용해 환경 맵을 만드는 과정

고려: 환경 지도는 응용 시나리오에 따라 다르게 구현될 필요가 있음. 예컨데 가정용 로봇 청소기는 2차원 지도만으로 충분하나 자율주행 드론은 3차원 지도가 필요한 것과 같이 시나리오에 따라 정확성, 가용 가능 컴퓨팅 자원을 고려해 지도 표현 방법을 선정해야 함.

  • 로봇 청소기와 같은 실내환경에서 사용하는 2차원 점유 그리드 지도
  • 지하철 노선도와 같은 정점과 간선으로 표현하는 위상 지도
  • 3차원 환경 맵을 표현하는 일반적인 방법은 3차원 점군 지도
  • 가상/증강 현실의 몰입감을 위한 밀도 있는 볼륨형태의 3차원 볼륨 지도

 

05. SLAM의 수학적 정의

처음시간 부터 현재 시간 T까지의 로봇 움직임 제어 정보 $u_{1:T}=\{{u_1, u_2, \dots, u_T\}}$와 주변 환경에 대한 관찰 정보 $z_{1:T} = \{{z_1, z_2, z_3, \dots, z_t\}}$가 주어졌을 때 이것으로부터 정확한 로봇의 궤적에 대한 정보 $x_{1:T}=\{{x_1, x_2, x_3, \dots, x_T\}}$와 지도 정보 $m$을 계산하는 알고리즘이다.

 

그림으로 예를 들자면 파란색 원은 센서가 장착된 로봇의 위치를 나타내고, 노란색이 랜드마크 위치를 나타낸다. 이 때 파란색 화살표로 표시된 로봇 움직임 제어 정보와 검은선으로 표시된 랜드마크에 대한 관찰 정보가 주어졌을 때 오른쪽과 같이 처음부터 현재(T)까지의 로봇 이동 궤적에 대한 정보와 랜드마크 위치 정보를 계산하는 것이 목표다. 이에 대한 결과로서 정확한 로봇의 위치를 추정할 수 있고 주변 환경에 대한 지도를 작성할 수 있게 된다.

 

하지만 문제점은 실세계는 불확실성이 산재해 있기 때문에 1미터를 움직이라는 제어 명령을 주어도 외부요인에 의해 움직이는 거리가 달라질 수 있다. 또 센서도 노이즈가 포함되어 있기 때문에 이러한 불확실성을 줄이고 정확한 상태값을 추정하기 위한 최선의 방법으로 확률론적으로 접근이 필요하며 아래와 같은 수식으로 정의할 수 있다.

 

 

즉 SLAM은 처음 시점(0)부터 현재 시점(T)까지 불확실성이 포함된 주변 환경에 대한 관찰 정보와 센서가 장착된 로봇에 대한 움직임 제어 정보가 주어졌을 때, 가장 확률이 높은 로봇의 궤적 정보와 주변 환경에 대한 맵 정보를 추정하는 문제라고 할 수 있다. 이러한 SLAM의 수식적 정의를 도식화해 각 변수의 의존성을 나타내면 다음과 같이 표현할 수 있다.

 

  • 동그라미는 변수를 나타내고 화살표는 변수 사이의 의존성을 나타냄
  • t-1 시점의 로봇 자세$(x)$는 t-1 시점의 로봇 움직임 제어 정보$(u)$에 영향 받음
  • t-1 시점의 로봇 자세$(x)$는 t-1 시점에서 주변 환경에 대한 관찰 정보$(z)$와 다음 시점인 t 시점의 로봇 자세$(x)$에 영향을 미침
  • 지도 정보는 모든 시점에서 주변 환경에 대한 관찰 정보$(z)$에 영향을 미침

+ Recent posts