Skip to main content
. 2019 Jan 10;19(2):249. doi: 10.3390/s19020249
Algorithm 1: Adaptive Monte Carlo localization
Input: observation information zt, control information ut;
Output: St;
  • 1:

    Initialization: Nr=0, Nm=0, Nkld=0, Nb=0, ωavg=0;

  • 2:

    for all bH do b=0;

  • 3:

    end for

  • 4:

    ifrand()<max{0,1ωfast/ωslow}then

  • 5:

        add random pose to St1;

  • 6:

        Nr=Nr+1;

  • 7:

    else

  • 8:

        draw i with probability ωt1i;

  • 9:

        Nm=Nm+1;

  • 10:

        xtNm = motion_model (ut1,xti1);

  • 11:

        ωtNm = observation_model (zt,xtNm,m);

  • 12:

        St=Stxti,wti;

  • 13:

        ωavg=ωavg+ωti;

  • 14:

        if b(xtNm) = 0 then

  • 15:

            b(xtNm) = 1;

  • 16:

            Nb=Nb+1;

  • 17:

            if Nb>1 then

  • 18:

               Nkld=Nb12ε129Nb1+29Nb1z1δ3;

  • 19:

            end if

  • 20:

        end if

  • 21:

    end if

  • 22:

    while (Nm<Nkld && Nr+Nm<Nmax) or Nr+Nm<Nmin do

  • 23:

        ωslow = αslowωavg/Nm + (1αslow)ωslow;

  • 24:

        ωfast = αfastωavg/Nm + (1αfast)ωfast;

  • 25:

    end while

  • 26:

    returnSt;