SLAM이란 Simultaneous Localization And Mapping, 즉 로봇이나 자율주행 자동차가 자신을 둘러싼 환경에 대한 맵(Map)을 생성하고, 그 안에서 자신의 위치를 추정하는 기술이다.
LiDAR(Light Detection And Ranging) 센서를 이용한 SLAM은 비교적 간단하고, 더 자세한 기법이랄 것이 없기 때문에 Visual SLAM의 다양한 방법들을 간략하게 정리해 보았다.
1. Filter based SLAM
로봇의 position과 방향, 환경 정보 같은 것을 포함하는 시스템 상태(state)를 추정하기 위해 수학적 필터들을 이용하는 알고리즘이다.
필터들은 시간에 따른 더 정확한 상태 추정을 위해 센서 데이터에 반복적으로 적용된다.
예를 들어 Kalman 필터는 noisy한 데이터에 대해 동적(Dynamic)으로 시스템의 상태를 추정하는 기술로써 널리 사용된다.
2. SLAM as Markov Random Field
MRF는 수학적 모델 중 하나인데, 랜덤 변수들 사이 불확실성과 의존성에 대한 표현(representation)과 추리(reasoning)를 위해 사용된다.
SLAM에서 MRF는 서로 다른 map의 각 부분과 그 안에서의 agent의 위치에 대한 공간적인 관계를 표현하기 위해 사용될 수 있다.
이를 통해 agent의 위치를 더 정확하게 추정하고 전반적인 map에 대한 정확도를 향상시킬 수 있다.
3. Keyframe based SLAM
환경 map을 표현하기 위해 keyframe들을 사용하는 기법인데, 이 때 keyframe이란 agent 센서 데이터로부터 얻은 frame이다.
수많은 frame들 중 예를 들면 장면(scene)에서의 움직임(motion)이나 변화량 같은 것들에 기반해 선택될 수 있다.
이 keyframe들로 환경의 sparse한 표현을 구현할 수 있으며, 이는 agent가 이동하고 더 많은 환경 정보를 관찰하면서, 즉 시간이 지남에 따라 더 정제될 수 있다.
이러한 접근은 전체 환경에 대한 dense map을 유지하려는 다른 slam 기법들보다도 더 효율적일 수 있다.
4. Feature based SLAM
Agent가 센서 데이터(이미지)에서 쉽게 눈에 띄는 코너나 edge 같은 feature들을 추출한다.
이러한 feature들은 agent가 자신의 위치를 결정하는 것을 돕는 랜드마크로 사용된다.
이 랜드마크의 위치들을 활용해 map을 생성하고, agent의 position과 방향은 관찰된 feature들과 랜드마크 위치들 사이에서 가장 최적의 정렬을 찾아 추정하는 방식이다.
Filter 기반 SLAM과의 가장 큰 차이는 feature 기반 방식이 더 계산 효율이 크다는 것이다. 그러나 정확도는 filter 기반 방식이 더 낮을 수 있다.
5. Deep learning based SLAM
여러 환경으로부터 수집된 많은 센서 데이터를 학습한다.
Feature 기반 SLAM은 hand-engineered feature들을 사용하며, 그렇기 때문에 쉽게 인식 가능한 feature들을 환경이 충분히 포함하고 있다는 가정을 전제로 한다.
반면 딥러닝 기반 기법은 알고리즘이 자동으로 feature와 pattern을 학습하므로, 보다 넓은 범위의 환경에 대해 적응 가능하고, 더 복잡하고 다이나믹한 상황에 대한 처리가 가능하다.
6. Direct SLAM
Raw 센서 데이터, 즉 이미지나 포인트 클라우드 같은 것을 이용한다. 이를 통해 직접적으로 agent의 pose와 map을 추정하는 방식이다.
이러한 접근은 더 계산 비용이 클 수 있지만 더 정확한 결과를 제공할 수 있다. 왜냐하면 센서 데이터의 모든 가용 정보를 사용하기 때문이다.
Feature based SLAM과 비교해 가장 중요한 차이가 있다면, 계산 효율이 더 좋다는 것이다. map을 표현하기 위해 더 적은 수의 정보를 사용하니까.
따라서 제한된 컴퓨팅 리소스를 가지고 있다면 feature 기반 기법을 사용하는 것이 적합하다.
하지만 역시 direct SLAM이 더 정확한 결과를 제공할 수 있기 때문에, 결국 선택은 구체적인 기술의 요구사항과 application의 제한점에 따라 다르다.
Direct SLAM 중에서도 여러 기법이 있다.
① Bundle Adjustment
Photogrammetry 원리를 이용하며, 관찰한 feature와 그에 상응하는 map 내 3D point들의 reprojection error를 줄이는 방향으로 agent의 pose와 환경의 3D 구조에 대한 추정을 반복적으로 정제하는 방식이다.
② PL SLAM
Points와 lines를 이용한 실시간 monocular visual SLAM 기법으로, 평면의 표면들과 agent의 pose, 평면 파라미터(Non-linear Least Square 최적화 이용)들을 이용해 환경을 표현한다.
③ Dense SLAM
Stereo matching, 깊이(depth) 추정 같은 컴퓨터 비전 기술을 사용하는 방식이다.
④ Scan Matching
ICP(Iterative Closest Point) 같은 geometric 컴퓨터 비전 기술을 이용한다.
+) Multi-camera based SLAM
Single camera를 사용하는 것보다 더 정확하고 robust한 결과를 제공한다. 추가적인 카메라가 동일한 장면(scene)에 대해 다양한 view를 제공하기 때문이다.
이는 ambiguity를 줄임으로써 알고리즘의 전반적인 성능을 개선할 수 있다.
일반적으로 멀티 카메라 SLAM은 코너나 edge 같은 feature들을 각 카메라에서 캡처한 이미지로부터 추출하는 방식으로 작동한다.
이 feature들은 서로 다른 view를 넘어 대응하는 feature들이 서로 매치되며, 이러한 정보는 카메라의 상대적 위치를 추정하고, 환경 내에서 feature들의 3차원 position을 삼각 측량하는 데 사용될 수 있다.
일단 feature들의 3차원 position이 결정되고 나면, SLAM 알고리즘은 이 점들을 agent가 자신의 위치를 결정하기 위한 랜드마크로 사용할 수 있다.