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=, ωtnew=0, new particle xinew=, 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|xt1[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   ∝   ωt1[i];
9:    add   xt[i]toχt;
10:  end for
11: else
12:  xt = motion_model(xt1,ut);
13: for   i = 0 to   N do
14:   d[i]=PositionWeightCalculation(M¯,xt[i]);
15:    s[i]=OrientationWeightCalculation(zi);
16:   ωtnew[i]=α·s[i]·ωt[i]+β·d[i];
17:   χt¯=χt¯+xt[i],ωtnew[i];
18:   end for
19:   ωtnew=normolaizeweight(ωtnew);
20:   for   i = 0 to   N do
21:   pxtnew|xt,ut1,zt,M¯=probofnewparticle(d[i]);//function (8)
22:   if   rand()pxtnew|xt,ut1,zt,M¯   then
23:    xinew=ParticleGeneration(ωtnew);
24:      add   xinew   to   χt;
25:   end if
26:   end for
27: end if
28:returnχt