Skip to main content
. 2023 Feb 28;23(5):2669. doi: 10.3390/s23052669
Algorithm 1: IRACKF.
Input: Initial state x0,y0,vx0,vy0, sampling number T observation dimension n prediction noise covariance matrix Q, observation noise covariance matrix R, error covariance matrix of the priori state P, variance threshold Var_LOS, the average value of Δv¯ in LOS environment D.
Output: Estimate position and velocity X1 X2  XT
  • 1:

    X1x0,y0,vx0,vy0

  • 2:

    for t ← 2 to T do

  • 3:

    Yt ← Read UWB observations

  • 4:

     // Calculate the variance of errors in UWB observations

  • 5:

    Var ← get_var Yt

  • 6:

     // Prediction update

  • 7:

     // Calculate the state prediction values and the prediction covariance matrix

  • 8:

    (xt,pt) ← get_pre(Xt1,Pt1)

  • 9:

     // Calculate the robust factor

  • 10:

     // Calculate the innovation and innovation covariance matrix

  • 11:

    (et,pyt)  get_py(xt,pt,Yt)

  • 12:

    α← identity matrixfor

  • 13:

    for j ← 1 to n do

  • 14:

     if Varj > Var_LOS

  • 15:

    Δv¯j,tejpyjj

  • 16:

    αj,jDjΔv¯j,t

  • 17:

    end if

  • 18:

    jj + 1

  • 19:

    end for

  • 20:

     // Measurements update

  • 21:

    if detα<>1

  • 22:

    Rt1 α*Rt1

  • 23:

    Xt,Pt←Mu_RCKFxt,pt,Qt1,Rt1,Yt

  • 24:

    else

  • 25:

    Xt,Pt,Qt←Mu_ACKFxt,pt,Qt1,Rt1,Yt,t

  • 26:

    end if

  • 27:

    tt + 1

  • 28:

    end for