본문 바로가기
Automated Vehicle

SLAM

by 드로니뚜벅이 2022. 4. 11.

SLAM(Simultaneous Localization And Mapping, 동시적 위치추정 및 지도작성)은 로봇이나 자율주행 차량이 움직이면서 동시에 자신의 위치와 주변 환경을 파악하여 지도를 작성하는 방법입니다. SLAM 알고리즘을 통해 차량은 미지의 환경에 대한 지도를 작성할 수 있습니다. 이를 바탕으로 엔지니어는 지도 정보를 사용하여 경로 계획 및 장애물 회피 등의 작업을 수행합니다.

Localization로봇이나 자율주행 차량의 위치를 추정하는 것이고 Mapping로봇이나 자율주행 차량 주위에 무엇이 있는지 지도를 작성하는 것입니다.

 

응용 사례

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

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

 

SLAM 작동 방식

크게 보면 SLAM을 달성하는 데 사용할 수 있는 기술적 구성요소에는 두 가지 유형이 있습니다. 첫 번째는 프론트엔드 처리 등의 센서 신호 처리이며, 이는 사용하는 센서에 크게 의존하게 됩니다. 두 번째는 백엔드 처리 등의 자세 그래프 최적화로서 센서와는 무관합니다.

SLAM으 처리 흐름

 

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

 

시각적 SLAM

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

시각적 SLAM은 비교적 저렴한 카메라를 사용하여 저비용으로 구현할 수 있습니다. 뿐만 아니라 카메라에서 제공되는 정보가 방대하기 때문에 이를 토대로 랜드마크(이전에 측정한 위치)를 감지할 수 있습니다. 랜드마크 감지는 그래프 기반 최적화와의 결합이 가능하여 SLAM 구현 시 유연성이 확보됩니다.

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

시각적 SLAM 알고리즘은 크게 두 범주로 분류할 수 있습니다. 희소 방법은 영상의 특징점들을 정합하고 PTAM이나 ORB-SLAM 등의 알고리즘을 사용합니다. 조밀 방법은 영상의 전체적인 밝기를 사용하고 DTAM, LSD-SLAM, DSO, SVO 등의 알고리즘을 사용합니다.

 

라이다 SLAM

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

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

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

2차원 라이다를 사용한 SLAM
3차원 라이다를 사용한 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를 사용해서 처리하면 경우에 따라 속도를 더욱 향상할 수 있습니다. 또한 자세 그래프 최적화는 비교적 긴 사이클에 걸쳐 수행될 수 있으므로 우선순위를 낮추고 일정한 간격으로 이 공정을 수행하는 것으로도 성능을 개선할 수 있습니다.

 

참고 사이트

https://kr.mathworks.com/discovery/slam.html

https://taeyoung96.github.io/slam/SLAM_01/

https://youtu.be/DM0dpHLhtX0

https://youtu.be/4UXW3qhzRR8

https://google-cartographer-ros.readthedocs.io/en/latest/

'Automated Vehicle' 카테고리의 다른 글

AGV vs. AMR  (0) 2023.09.15
자율주행 차량 센서(RADAR,LiDAR,Camera) 장단점  (0) 2022.12.19
OBD (On Board Diagnostics)  (0) 2022.12.08