Particle Filter란?
- 로봇공학에서의 Particle Filter는 베이즈 필터의 대표적인 비모수적 근사법으로 많이 사용된다.
- 파티클 필터의 개념
- 파티클는 시스템의 상태에 대한 확률 분포를 "많은 개수의 샘플들(파티클, Particle )"로 근사하는 기법이다.
- 각 파티클은 상태공간 상의 한 점을 의미하며, 이 점이 현재 상태일 확률을 나타내는 가중치를 가지고 있다.
- 즉, 전체 확률분포를 "입자들"로 근사한다고 해서, Particle Filter라고 부른다.
- 파티클 필터의 목적
- 복잡한(특히 비선형, 비가우시안) 시스템의 상태 추정에 쓰인다.
- 칼만 필터처럼 정규분포로 근사하지 않고, 임의의 분포를 근사할 수 있다.
- ==> 여러 봉우리 , 비대칭 , 꼬리가 긴 분포 등도 표현 가능
- 예시: localization , tracking문제
- 특징
- 1. 비모수적 근사
- 2. 샘플 수가 증가할수록, 정확도가 증가하나 계산 비용도 증가
- 3. 고차원 상태 공간에서는 효율이 떨어진다.
- 샘플 빈도 저주로 인해서, 상태 공간 차원이 커지면 엄청난 수의 파티클이 필요
- 4. resampling문제
- 가중치가 낮은 파티클이 소멸 , 높은 파티클이 복사되어 집합이 수렴
- 실제 적용 예시 ( Monte Carlo Localization )
- 로봇의 위치추정에서, 각각의 파티클들이 로봇의 (x, y, θ) 위치와 자세를 나타냄.
- 모션 모델(이동거리, 회전 등)과 센서 모델(레이저, 카메라 등)로 파티클을 업데이트
- 가중치가 높은 파티클 위주로 리샘플링
- adaptive방식은 파티클 수를 상황에 따라서 자동으로 조절
파티클 필터 작동 원리
- 1. 초기화
- 파티클 N개를 상태공간에 무작위로 or 사전 정보(belief)에 따라서 뿌린다.
초기화 단계에 대한 설명
- 2. 예측/샘플링
- 이전 파티클들을 "모션 모델"에 따라서 이동시킨다.
~는 "~로부터 샘플링하다" or "~라는 분포를 따른다"라는 의미다. 여기서는 "i번째 파티클의 새로운 상태"는 "이전 상태 x_t-1"와 "입력 u_t"로 정의된 "모션 모델 확률 분포"에서 샘플링한 값이다.라는 의미
- 3. 갱신/측정
- 센서 데이터 z_t를 이용해서, "각 파티클이 관측을 잘 설명하는 정도(관측 모델)"에 따라 가중치를 갱신한다.
- 4. 정규화
- 모든 파티클의 가중치의 합이 1이 되도록 정규화한다.
- 5. 재샘플링, resampling
- 가중치가 높은 파티클은 여러번 복사하며, 낮은 파티클은 버린다.
- 즉, 파티클 집합을 "살아남은"파티클 위주로 다시 구성한다.
이는, 대부분의 파티클이 0에 수렴하는 현상을 방지한다.
- 6. 상태 추정
- 파티클들의 분포 자체가 확률분포 근사
- 평균 , 최빈값 , 가중치 기반 샘플 등을 최종 상태 추정값으로 사용이 가능하다.
로봇의 위치 추정 예시
- 로봇이 실내에서 위치를 추정한다고 하자.
- 초기에 방 전체에 파티클을 무작위로 뿌린다.
- 로봇이 앞으로 움직였다면, 모든 파티클도 모션 모델에 따라서 앞으로 이동
- 센서로 벽의 거리를 측정하면, 실제 센서 데이터와 일치하는 파티클의 가중치는 높게, 나머지는 낮게한다.
- 가중치가 높은 파티클을 중심으로 리샘플링 ==> 파티클들이 로봇의 실제 위치 근처에 몰리게 됨
- 점점 더 로봇의 실제 위치와 근사
파티클을 뿌린다?
- 이러한 표현은 "파티클을 어디에 어떻게 초기화하느냐?"를 가르키는 말이다.
- 상황에 따라서 3가지의 방식이 주로 사용된다.
- 1. 전역 초기화 ( global initialization )
- 지도 전체에 골고루 뿌린다.
- 로봇의 초기 위치를 전혀 모를때 사용한다.
- 지도 상에서 주행가능한 영역에 균등하게 N개의 파티클을 분포시킨다.
- 장점 => 완전 무작위 상태에서도 수렴 가능
- 단점 => 수렴 속도가 느리며, 많은 파티클이 필요하다.
- 2. 로컬 초기화 ( local initialization )
- 초기 추정 위치를 기존으로
반경 r이내에, 또는 gaussian 분포 형태로 360° 방향과 거리를 뿌린다.
- 초기 위치를 대략적으로 알고 있을때 사용한다.
- 장점 : 파티클 수가 적어도 빠르게 수렴
- 단점 : 실제 위치 추정 오차가 크면 수렴 실패
- 3, 하이브리드 초기화
- 전역과 로컬을 섞어서 사용
- 일부(예: 20%)는 전역, 나머지(80%)는 로컬로 뿌려 빠른 수렴과 전역 재탐색 균형
- 초기 위치 정보가 불확실할 때 많이 쓰임
- ==> 즉, 파티클을 뿌린다는것은 위의 3가지 방법을 적절한 거를 선택하여 위치를 추정한다는 것.
- 파티클의 의미
- 파티클(입자) 하나하나에 대해서 "내가 이 위치에 있다면 센서가 이렇게 관측될 텐데, 실제 관측값과 얼마나 비슷한가"를 계산하는 방식이다.
- 1. 파티클 초기화
- 전역 or 로컬 초기화로 N개의 파티클을 지도 상 가능한 위치에 뿌린다.
- 2. 센서 관측 획득
- 로봇이 카메라 or 센서로 주변 환경을 실제로 측정한다.
- 3. 예측된 관측값 계산
- 각 파티클 위치에서, "지도"와 "센서 모델"을 이용해서, 예상되는 센서 스캔을 시뮬레이션한다.
- 4. 가중치 계산 ( Likelihood )
- 실제 스캔과 예측 스캔 간 차이를 기반으로 계산해서, 해당 파티클 위치가 실제 관측을 잘 설명하는 정도를 수치화한다.
- 5. resampling
- 가중치가 높은 파티클은 여러번 복제하고, 낮은 파티클은 제거해서 분포를 재구성한다.
- 결과적으로는, 실제 센서 데이터와 가장 잘 맞는 위치들에 파티클이 몰리게 된다.
- 6. 위치 추정