본문 바로가기

Enginius/Machine Learning

Particle Filter

Predefined Distribution

p( x_k | x_k-1 )  : dynamic distribution

p( y_k | x_k )    : observation distribution


Parameter

P : the number of particle


Algorithm

1. P 개의 particle을 dynamic model, p( x_k | x_k-1{L} ) ,에서 draw한다.

   particle은 x_k{L}에 저장된다.

2. (k번째 observation이 들어오면) observation model, p( y_k | x_k{L} ) ,에서 weight를 update한다.

   weight update: what_k{L} = what_k-1{L}*p( y_k | x_k{L} )

3. weight들을 normalize한다.

4. particle의 effective number를 계산한다.

   N_eff = 1/(sum(w_k));

5. Neff < Nthr 이면, 새롭게 resample한다.

   a) 현재 weight들의 distribution에서 P개의 particle x_k{L}를 뽑는다.

   b) weight는 1/P로 한다.


결과

[Results]

 measurement error: 2.359, estimation error: 2.000 


소스 코드 

1. main_2d_track_particle.m

2. do_pf_initialization_2d_track

3. pf_dyn_dist_2d_track.m

4. pf_obs_dist_2d_track.m

5. resampleMultinomial.m


그외 필요한 것들