Skip to main content
. 2020 Nov 23;20(22):6697. doi: 10.3390/s20226697
Algorithm 1 The improved adaptive Monte Carlo localization (AMCL) algorithm.
Input: control information ut, observation information zt, matched template libraries M;
Output: new particles set χt;
1: Initialization: R=M¯=χt=∅, ωt−new=0, new particle xi−new=∅, cache particle set χt¯=∅;
2: R,M¯ = LaserReflectorIdentification(zt,ut,M);
3: if  M¯=∅   then
4: for i = 0 to   N do
5:    Sample   xt[i]∼pxt|xt−1[i],ut;//Original AMCL
6:    ωt[i]∼measurement_model(zt,xt[i]);//Original AMCL
7:    χt¯=χt¯+xt[i],ωt[i];
8:    draw   i   withprobability   ∝   ωt−1[i];
9:    add   xt[i]toχt;
10:  end for
11: else
12:  xt = motion_model(xt−1,ut);
13: for   i = 0 to   N do
14:   d[i]=PositionWeightCalculation(M¯,xt[i]);
15:    s[i]=OrientationWeightCalculation(zi);
16:   ωt−new[i]=α·s[i]·ωt[i]+β·d[i];
17:   χt¯=χt¯+xt[i],ωt−new[i];
18:   end for
19:   ωt−new=normolaizeweight(ωt−new);
20:   for   i = 0 to   N do
21:   pxt−new|xt,ut−1,zt,M¯=probofnewparticle(d[i]);//function (8)
22:   if   rand()≤pxt−new|xt,ut−1,zt,M¯   then
23:    xi−new=ParticleGeneration(ωt−new);
24:      add   xi−new   to   χt;
25:   end if
26:   end for
27: end if
28:returnχt