SLAM이란?

꼭 알아야 할 3가지 사항

SLAM(Simultaneous Localization and Mapping)은 자율주행 차량에 사용되어 주변 환경 지도를 작성하는 동시에 차량의 위치를 작성된 지도 안에서 인식하는 기법입니다. SLAM 알고리즘을 통해 차량은 미지의 환경에 대한 지도를 작성할 수 있습니다. 엔지니어는 지도 정보를 사용하여 경로 계획 및 장애물 회피 등의 작업을 수행합니다.

SLAM이 중요한 이유

SLAM은 오랫동안 기술 연구의 주제로 거론되었습니다. 하지만 컴퓨터 처리 속도가 크게 개선되고 카메라와 레이저 거리 측정기 등의 저비용 센서가 등장함에 따라 SLAM은 점점 더 많은 분야의 실제 응용 사례에 사용되고 있습니다.

SLAM이 중요한 이유를 알아보기 위해 그 이점과 응용 사례를 몇 가지 살펴보도록 하겠습니다.

SLAM 응용 사례

가정용 로봇 진공청소기를 예로 들겠습니다. SLAM이 없다면 로봇 청소기는 방 안에서 무작위로 돌아다니기만 하고 바닥을 전부 청소하지도 못할 수 있습니다. 그리고 이런 방식으로는 전력이 과도하게 사용되어 배터리가 금방 소진됩니다. 반면 SLAM 기술을 적용한 로봇은 바퀴 회전수와 카메라 및 기타 이미징 센서에서 가져온 데이터 같은 정보를 사용하여 필요한 이동량을 파악할 수 있습니다. 이를 위치추정이라고 합니다. 또한 로봇은 카메라와 기타 센서를 동시에 사용하여 주변 환경의 장애물 지도를 생성하고 같은 구역을 또다시 청소하는 경우를 방지할 수 있습니다. 이를 지도 작성이라고 합니다.

SLAM은 창고에서 선반을 정렬하는 이동형 로봇의 길 찾기, 자율주행 차량의 빈 주차 공간 주차하기 또는 미지의 환경에서의 드론 조종을 통한 배송 등 다른 여러 응용 사례에서도 유용하게 사용할 수 있습니다. MATLAB 및 Simulink는 다양한 응용 분야 개발을 위한 SLAM 알고리즘, 함수 및 분석 툴을 제공합니다. 사용자는 센서 융합, 객체 추적, 경로 계획경로 추종 등의 기타 작업과 함께 SLAM(Simultaneous Localization and Mapping)을 구현할 수 있습니다.

SLAM의 작동 방식

SLAM 구현에 사용되는 기술 요소에는 크게 두 가지 유형이 있습니다. 첫 번째 유형은 프론트엔드 처리를 포함하는 센서 신호 처리로서, 사용되는 센서에 대한 의존도가 높습니다. 두 번째 유형은 백엔드 처리를 포함하는 자세 그래프 최적화로서 센서에 구애받지 않습니다.

프론트엔드 처리 구성요소를 좀 더 자세히 알아볼 수 있도록 서로 다른 두 가지 SLAM 기법인 시각적 SLAM과 라이다 SLAM을 살펴보겠습니다.

시각적 SLAM

이름을 통해 알 수 있듯이, 시각적 SLAM(또는 vSLAM)은 카메라 및 기타 영상 센서로 획득한 영상을 사용합니다. 시각적 SLAM은 단일 카메라(광각, 어안 및 구형 카메라), 겹눈 카메라(스테레오 및 멀티 카메라) 및 RGB-D 카메라(심도 및 ToF 카메라)를 사용할 수 있습니다.

시각적 SLAM은 비교적 값싼 카메라로 저렴하게 구현할 수 있습니다. 또한 카메라에서 제공되는 정보가 방대하기 때문에 이를 토대로 표지물(과거에 측정된 위치)을 감지할 수도 있습니다. 또한 표지물 감지는 그래프 기반 최적화와의 결합이 가능하여 SLAM 구현 시 유연성이 확보됩니다.

단안 SLAM은 vSLAM이 단일 카메라를 유일한 센서로 사용할 때를 지칭하는데, 이때는 심도 추정이 어려워집니다. 이 문제는 위치추정이 필요한 영상에서 AR 마커나 체커보드 또는 기타 알려진 객체를 감지하거나 카메라 정보를 속도, 방향 같은 물리량의 측정이 가능한 IMU(관성 측정 장치) 등의 다른 센서와 융합하여 해결할 수 있습니다. vSLAM 관련 기술에는 SfM(Structure from Motion), 시각적 주행거리 측정, 그리고 번들 조정이 포함됩니다.

시각적 SLAM 알고리즘은 크게 두 부류로 분류할 수 있습니다. 먼저 Sparse 방법은 영상의 특징점을 매칭하고 PTAM 및 ORB-SLAM 등의 알고리즘을 사용합니다. Dense 방법은 영상의 전체 밝기를 사용하고 DTAM, LSD-SLAM, DSO 및 SVO와 같은 알고리즘을 사용합니다.

SfM(Structure from Motion)

RGB-D SLAM의 포인트 클라우드 정합

라이다 SLAM

라이다(Light detection and ranging)는 주로 레이저 센서(또는 거리 센서)를 사용하는 기법입니다.

레이저는 카메라와 ToF 등의 센서보다 훨씬 더 정밀하며 자율주행 차량과 드론처럼 빠르게 이동하는 물체와 관련된 응용 사례에 사용됩니다. 레이저 센서에서 가져온 출력값은 보통 2D(x, y) 또는 3D(x, y, z) 포인트 클라우드 데이터입니다. 레이저 센서 포인트 클라우드를 사용하면 고정밀 거리 측정이 가능하며, SLAM을 적용한 지도 작성에도 매우 효과적입니다. 일반적으로 이동 정보는 포인트 클라우드 매칭을 통해 순차적으로 추정됩니다. 계산된 이동(주행 거리) 정보는 차량의 위치추정에 사용됩니다. 라이다 포인트 클라우드 매칭에는 ICP(Iterative Closest Point) 및 NDT(Normal Distributions Transform) 알고리즘이 사용됩니다. 2D 또는 3D 포인트 클라우드 지도는 그리드 지도 또는 복셀 지도로 표현할 수 있습니다.

한편, 밀도에 있어서 포인트 클라우드는 영상처럼 정교하지 않으며 매칭에 필요한 충분한 특징을 항상 제공하는 것도 아닙니다. 예를 들어 장애물이 거의 없는 장소에서는 포인트 클라우드 정렬이 어렵고, 이로 인해 차량 위치 추적이 실패할 수 있습니다. 게다가 포인트 클라우드 매칭에는 일반적으로 높은 수준의 처리 능력이 필요하고, 따라서 속도 개선을 위한 처리 최적화가 필요합니다. 이러한 문제 때문에 자율주행 차량의 위치추정에는 휠 주행거리 측정, GNSS(범지구 위성 항법 시스템) 및 IMU 데이터 등의 기타 측정 결과를 융합하는 작업이 수반될 수 있습니다. 창고의 로봇과 같은 응용 분야에서는 2D 라이다 SLAM 등이 흔히 사용되지만 UAV 및 자동 주차에는 3D 라이다 포인트 클라우드를 이용하는 SLAM이 사용될 수 있습니다.

2D 라이다를 이용한 SLAM

3D 라이다를 이용한 SLAM

SLAM에서 흔히 생기는 문제

SLAM이 몇몇 실제 응용 분야에 사용되고는 있지만, 몇 가지 기술적 문제로 인해 더 광범위한 용도로는 도입이 어려운 상황입니다. 다음 각각의 문제는 이를 타개할 수 있는 대응책이 있습니다.

1. 실제값과의 상당한 편차를 초래하는 위치추정 오차 누적

SLAM은 일부 오차 범위가 포함된 순차적 이동 정보를 추정합니다. 이 오차는 시간이 지나면서 누적되고, 따라서 실제값과는 상당한 편차가 발생합니다. 이렇게 되면 지도 데이터의 붕괴 또는 왜곡이 발생하여 후속 검색이 어려워집니다. 사각형 통로 주변을 주행하는 경우를 예로 들어 보겠습니다. 오류가 누적되면서 로봇의 출발점과 끝점이 더는 일치하지 않게 됩니다. 이는 루프 폐쇄 문제라고 합니다. 이와 같은 자세 추정 오류는 불가피한 문제입니다. 루프 폐쇄를 감지하고 누적된 오류를 정정하거나 상쇄하는 방법을 파악하는 것이 중요합니다.

자세 그래프 구성 및 오류 최소화의 예.

한 가지 대응책은 이전에 갔던 장소의 몇몇 특징을 표지물로서 기억하여 위치추정 오류를 최소화하는 것입니다. 자세 그래프는 오류 정정에 도움이 되도록 구성됩니다. 오류 최소화를 최적화 문제로 풀면 더 정확한 지도 데이터 생성이 가능해집니다. 이러한 종류의 최적화를 시각적 SLAM의 번들 조정이라고 합니다.

자세 그래프 작성 및 오류 최소화의 예.

2. 위치추정 실패 및 지도상 위치 상실

영상 및 포인트 클라우드 매핑 시 로봇의 이동 특성은 고려되지 않습니다. 경우에 따라서는 이러한 접근법으로 인해 불연속적인 위치추정값이 생성될 수 있습니다. 예를 들자면 1m/s로 이동하는 로봇이 갑자기 10m 앞으로 급속 이동하는 계산 결과가 표시되는 경우를 들 수 있습니다. 이러한 유형의 위치추정 실패 문제는 복원 알고리즘을 사용하거나 이동 모델과 다수의 센서를 융합하여 센서 데이터에 기반한 계산을 수행함으로써 방지할 수 있습니다.

이동 모델에 센서 융합을 사용하는 방법에는 여러 가지가 있습니다. 널리 사용되는 방법은 위치추정에 칼만 필터링을 사용하는 것입니다. 대부분의 차동 구동 로봇 및 사륜 차량은 일반적으로 비선형 이동 모델을 사용하므로, 확장 칼만 필터와 입자 필터(몬테카를로 위치추정)가 종종 사용됩니다. 때로는 무향 칼만 필터처럼 더 유연한 베이즈 필터를 사용할 수도 있습니다. 흔히 사용되는 몇 가지 센서를 꼽자면 AHRS(자세방위기준장치), INS(관성 항법 시스템), 가속도계 센서, 자이로 센서, 자기 센서 및 IMU와 같은 관성 측정 장치를 들 수 있습니다. 차량에 장착된 휠 인코더는 종종 주행거리 측정에 사용됩니다.

위치추정에 실패할 경우 복원을 위한 대응책은 이전에 갔던 장소의 표지물을 키프레임으로서 기억하는 것입니다. 표지물을 검색할 때는 고속 스캔이 가능한 방식으로 특징 추출 절차가 적용됩니다. 영상 특징에 기반한 방법에는 BoF(Bag of Features) 및 BoVW(Bag of Visual Words)가 있습니다. 최근에는 특징까지의 거리 비교에 딥러닝이 사용되고 있습니다.

3. 영상 처리, 포인트 클라우드 처리 및 최적화에 소요되는 높은 계산 비용

차량 하드웨어에 SLAM을 구현할 때는 계산 비용이 문제가 됩니다. 계산은 대개 제한된 처리 능력을 갖는 소형 저전력 임베디드 마이크로프로세서에서 수행됩니다. 정확한 위치추정을 위해서는 높은 빈도로 포인트 클라우드 매칭과 영상 처리를 실행하는 것이 매우 중요합니다. 게다가 루프 폐쇄와 같은 최적화 계산은 계산량이 높은 과정입니다. 문제는 그처럼 계산적 비용이 상당한 과정을 임베디드 마이크로컴퓨터에서 어떻게 실행하냐는 데 있습니다.

한 가지 대응책은 서로 다른 프로세스를 병렬로 실행하는 것입니다. 매칭의 전처리 과정인 특징 추출 같은 과정은 병렬화에 비교적 적합합니다. 멀티코어 CPU를 처리와 SIMD(Single Instruction Multiple Data) 계산, 임베디드 GPU에 이용하면 경우에 따라 속도를 더욱 향상할 수 있습니다. 또한 자세 그래프 최적화는 비교적 긴 주기에 걸쳐 수행될 수 있으므로 우선순위를 낮추고 일정한 간격으로 이 처리를 수행하는 것으로도 성능을 개선할 수 있습니다.

MATLAB을 활용한 SLAM

MATLAB®은 사용자의 타겟 시스템에 대한 SLAM 응용 구현은 물론, 알려진 SLAM 관련 기술 문제를 타개할 수많은 대응책을 검토하는 데도 필요한 기능을 제공합니다.

  1. SLAM 프론트엔드를 위한 센서 신호 및 영상 처리
  2. SLAM 백엔드를 위한 2D/3D 자세 그래프
  3. SLAM Map Builder 앱을 사용한 점유 그리드
    • MATLAB 작업 공간 또는 rosbag 파일에서 라이다 데이터를 가져와 점유 그리드 생성
    • 루프 폐쇄를 찾고 수정하며 경로 계획을 위해 지도를 점유 그리드로 내보내기
  4. 경로 계획 및 제어를 위해 SLAM 알고리즘에서 출력된 지도 사용
  5. Parallel Computing Toolbox™를 사용한 병렬 실행으로 영상 처리 등의 계산 집약적 처리 과정의 속도 개선
  6. ROS Toolbox를 사용하여 MATLAB 및 Simulink®에서 독립형 ROS 노드 배포 및 ROS 사용 로봇과 통신
  7. MATLAB Coder™GPU Coder™를 사용하여 MATLAB 및 Simulink에서 개발된 영상 처리 및 내비게이션 알고리즘을 임베디드 마이크로프로세서에 배포

SLAM에 대해 자세히 알아보기

Navigation Toolbox를 통해 주변 환경 지도를 구축하고 로봇의 자세나 자율주행 차량의 위치를 추정하여 자율 내비게이션에 활용합니다.
이 예제에 사용된 방법에서는 SLAM 알고리즘 구현을 위해 자세 그래프 최적화를 수집된 일련의 2D 라이다 스캔 데이터와 함께 사용합니다. 2D 라이다 스캔 데이터는 주변 환경 지도 작성과 로봇의 위치 및 이동 궤적 추정에 사용됩니다.
이 방법에서는 입력된 IMU 값을 사용하여 차량 장착 센서의 3D 라이다 데이터를 처리한 후 이를 토대로 지도를 작성합니다. 이 방법은 차량의 이동 궤적과 GPS 기록을 비교합니다.
SfM(Structure from Motion)은 2D 영상 시퀀스에서 3D 장면을 찾아내는 방법입니다. 이 예제에서는 뷰 시퀀스에서 보정된 카메라의 위치 확인 후 3D 장면이 재구성됩니다.
시각적 주행거리 측정은 영상 시퀀스를 분석하여 카메라의 위치와 방향을 추정하는 과정입니다. 이는 일련의 영상에서 보정된 단일 카메라의 경로를 추적하는 방법을 가리킵니다.
이 예제에서는 단안 카메라의 영상 데이터를 처리하여 실내 환경 지도를 구축하고 카메라의 이동 궤적을 추정하는 방법을 보여줍니다. 이 예제에서는 특징 기반 vSLAM 알고리즘인 ORB-SLAM을 사용합니다.
이 예제에서는 시뮬레이션된 Gazebo® 환경 내 TurtleBot®의 MCL(몬테카를로 위치추정) 알고리즘 응용 사례를 소개합니다.