FastSLAM 알고리즘
Fast SLAM은 표 1.1처럼 4단계로 주어진 제어와 관측치를 이용해 파티클 필터를 재귀적으로 갱신 합니다.
첫 번째 단계는 이전 자세와 새 입력을 이용하여 각 파티클에 대한 로봇의 세로운 자새를 구합니다.
다음으로, 최근 관측치와 함께 각 파티클에서의 랜드마크 필터는 표준 EKF 갱신 식을 사용하여 갱신 됩니다.
각 파티클에는 중요도 가중치를 할당하고, 이 가중치에 따라 새로운 샘플들을 생성합니다.
중요도를 이용한 리샘플링 단계를 통해 제안 분포와 사후 확률 분포 사이의 차이를 갱신하여 줍시다.
이 갱신 과정은 샘플의 수가 무한에 가까울수록 실제 사후확률 분포에 가까워 지지만
실제로는, FastSLAM 사용시에 상대적으로 적은 파티클 (M = 100)만 하더라도 좋은 사후확률을 구할수가 있겠습니다.
로봇의 경로를 사용하여 슬램 사후확률을 분해하는것은 경로의 길이가 시간에 따라 커지므로 좋지 않은 선택처럼 보일수 있으며, 로봇의 경로에 대한 사후확률 추정시 필터의 차원이 시간에 따라 더 증가할거라고 볼수도 있습니다.
하지만 FastSLAM에서는 그렇지 않은데,
랜드마크 갱신 식과 중요도 가중치는 최신 로봇의 자세에만 의존하므로
이전의 로봇 경로에 대한것을 잃어버려도 상관없기 때문입니다.
그 결과 FastSLAM의 각 파티클들은 현재 로봇의 자세에 대한 추정치만 유지하면 되고, 파티클 필터의 차원수가 시간이 지나더라도 고정되어 집니다.
1.6.1 로그 복잡도
FastSLAM은 EKF보다 두가지 주요한 장점을 가지고 있습니다.
첫째로, 지도에 대한 추정을 분해하여 로봇의 경로가 주어질때 각 랜드마크 사후확률을 추정하는것으로 함으로써
FastSLAM은 효율적으로 완전 슬램 사후확률을 계산할수 있게 됩니다.
동작 갱신과 관측 갱신, 그리고 중요도 가중치 계산은 모두 파티클 하나당 상수 시간에 수행할 수 있게 됩니다.
리샘플링 단계는 순수한 FastSLAM으로 구현한다면, 선형 시간에서 수행될 수 있지만
로그 시간을 수행하도록 구현할수도 있는데,
랜드마크 추정기를 배열 대신 이진 트리의 형태로 각 파티클들을 구성하면 됩니다.
1.6.2 다중 가정 데이터 연관
로봇 경로에 대한 샘플링은 올바른 데이터 연관을 수행하는데 중요한 영향을 줍니다.
FastSLAM에서 각 파티클은 특정한 로봇의 궤적을 나타내기 때문에,
각각의 파티클에 대해 동일한 정보 연관이 수행될 필요는 없습니다.
FastSLAM에서 데이터 연관 결정은 각 파티클에 기반하여 만들어 지는데,
올바르게 정보 연관을 하는 파티클은 높은 가중치를 받을 것이고, 이후 리샘플링 될 확률이 더 커질것입니다.
하지만 잘못된 데이터 연관을 수행한 파티클은 적은 가중치를 받을것이고, 이후 사라질것입니다.
데이터 연관으로 샘플링을 하는것으로 FastSLAM이 새로운 증거가 생길때, 이전의 데이터 연관을 고칠수 있게 해줍니다.
이 과정은 랜드마크의 추가나 제거시에도 동일하게 수행됩니다.
종종, 각 파티클의 데이터 연관은 파티클들이 랜드마크의 갯수가 다른 지도를 만드는 상황을 만들기도 합니다.
이로 인해 가장 높은 확률의 지도를 계산하기 어렵게 만드나,
FastSLAM이 더 확실한 근거가 쌓일때 잘못된 랜드마크를 제거할수 있도록 해줍니다.
어느 관측치가 특정 파티클에서 새로운 랜드마크를 생성시켜버리나
다른 관측치들은 이 관측이 이미 존재하는 랜드마크에 속한다고 판단한 경우에
새로운 랜드마크를 생성해야한다는 파티클은 적은 가중치를 가지게 될 것이고,
이후 리샘플링 단계에서 올바르지 않은 파티클이 사라지면서 이전에 생성된 랜드마크도 제거될것입니다.
1.7 개요
이 자료를통해 FastSLAM 알고리즘의 전반에 대해서 살펴볼것이고,
다양한 시뮬레이션과 실제 환경에서 얻은 데이터 셋으로 FastSLAM과 EKF의 성능을 비교해보겠습니다.
2장에서 SLAM문제를 공식화하고, EKF 기반 선행 방법들에 대해 주로 다루어보겠습니다.
3장에서 데이터 연관이 주어지거나 주어지지 않은 경우 둘다에 대해 가장 간단한 버전의 FastSLAM도 살펴봅시다.
FastSLAM 1.0이라고 하는 버전은 구현하기 가장 간단한 FastSLAM 알고리즘으로, 일반적인 SLAM 환경에서도 잘 동작합니다.
4장에서는 기존의 FastSLAM의 개선된 버전인 FastSLAM 2.0을 볼것인데, 기존의 것보다 더 좋은 결과를 보여줍니다.
이 알고리즘은 현재 관측을 파티클의 제안 분포에 반영하여, 결과적으로 동작 노이즈가 센서 관측보다 큰 경우에 더 정확한 결과를 계산할수 있게 만들어 줍니다.
5장에서는 SLAM 문제와 같은 구조인 동적 물체 추적 문제를 살펴볼 것이고, 어떻게 FastSLAM 알고리즘의 바리에이션을 이용하여 정밀하게 위치 추정되지 않은 로봇으로 부터 동적인 물체를 추적하는지 살펴보겠습니다.
'로봇 > SLAM' 카테고리의 다른 글
FastSLAM - 2.2 SLAM 사후확률 (0) | 2020.07.07 |
---|---|
FastSLAM - 2. SLAM 문제 (0) | 2020.07.07 |
FastSLAM - 1.6 FastSLAM (0) | 2020.07.06 |
FastSLAM - 1.5 SLAM의 구조와 희소 (0) | 2020.07.06 |
FastSLAM - 1.4 확장칼만필터 (0) | 2020.07.06 |