코딩 및 기타/이미지

파티클 필터

정지홍 2025. 5. 25. 23:02

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. 상태 추정
    • 파티클들의 분포 자체가 확률분포 근사
      • 평균 , 최빈값 , 가중치 기반 샘플 등을 최종 상태 추정값으로 사용이 가능하다.

 


 

로봇의 위치 추정 예시

  1. 로봇이 실내에서 위치를 추정한다고 하자.
  2. 초기에 방 전체에 파티클을 무작위로 뿌린다.
  3. 로봇이 앞으로 움직였다면, 모든 파티클도 모션 모델에 따라서 앞으로 이동
  4. 센서로 벽의 거리를 측정하면, 실제 센서 데이터와 일치하는 파티클의 가중치는 높게, 나머지는 낮게한다.
  5. 가중치가 높은 파티클을 중심으로 리샘플링 ==> 파티클들이 로봇의 실제 위치 근처에 몰리게 됨
  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. 위치 추정

'코딩 및 기타 > 이미지' 카테고리의 다른 글

Cell Decomposition  (0) 2025.05.27
Monte Carlo Localization  (1) 2025.05.26
칼만 필터  (0) 2025.05.25
ORB ( Oriented Fast and Rotated BRIEF )  (0) 2025.02.28
Harris corner detection  (0) 2025.02.28