FastSlam este una dintre abordările pentru rezolvarea problemelor SLAM ( Simultaneous Localization And Mapping ) . Algoritmul se bazează pe așa-numitul filtru de particule și pe aplicarea rețelei bayesiene . În FastSLAM, o hartă mare este considerată ca o colecție de subhărți locale, ceea ce vă permite să eliminați dependența reperelor unul față de celălalt și astfel să reduceți semnificativ timpul de recalculare a estimării stării sistemului [1] . Metoda a fost dezvoltată în 2002 de studenții de la Universitățile Carnegie Mellon și Stanford.
Să presupunem că robotul se află într-un spațiu unidimensional, iar poziția sa este caracterizată de o variabilă x.
Atunci p(x) este distribuția de probabilitate a lui x, care are o formă gaussiană.
Acum, dacă x reflectă poziția robotului și reperele într-un spațiu multidimensional, atunci distribuția de probabilitate p(x) va determina probabilitățile tuturor variabilelor de stare posibile.
În acest fel,
p(x | {u0, u1, … ui}, {z0, z1, … zi}) (1) este distribuția de probabilitate a tuturor valorilor stării curente a sistemului obținute la momentul i.
Pentru a simplifica înțelegerea, introducem notația unde
Ui = {u0, u1, … ui} (2) — vector cu citirile senzorului
Zi = {z0, z1, … zi} (3) este un vector care descrie informații despre mișcarea robotului
x la rândul său include:
Prin urmare, p(x | Ui,Zi) poate fi reprezentat după cum urmează:
p(x | Ui,Zi) = p(v, p0,p1,…pm | Ui,Zi). (patru)
Să folosim elementele de bază ale teoriei probabilităților pentru a simplifica problema SLAM.
Să presupunem că există două variabile aleatoare independente A și B. Putem spune că p(A, B) = p(A) * p(B).
Dar această expresie nu este valabilă pentru cazul în care A depinde de B. În acest caz, va arăta ca p(A, B) = p(A) * p(B|A).
Estimarea poziției reperelor depinde de estimarea poziției robotului, ceea ce înseamnă că p(v, p0,p1,…pm | Ui,Zi) poate fi reprezentat astfel:
p(v, p0,p1,...pm | Ui,Zi) = p(v | Ui,Zi) * p(p0,p1,...pm | Ui,Zi, v). (5)
Datorită independenței observărilor reperelor unul față de celălalt, este posibil să se separe
turnați p(p0,p1,...pm | Ui,Zi, v) în m expresii independente:
p(v | Ui,Zi) * p(p0,p1,…pm | Ui,Zi, v) = p(v | Ui,Zi) * p(p0 | Ui,Zi, v) * p(p1 | Ui ,Zi, v) * … p(pm | Ui,Zi, v). (6)
Ca rezultat, expresia rezultată pentru distribuția de probabilitate este:
p(x | Ui,Zi) = p(v | Ui,Zi) * Πm p(pm | Ui,Zi, v). (7)
În acest algoritm, problema SLAM este împărțită în m + 1 sarcini și niciuna dintre estimările poziției reperului nu depinde de celelalte.
În ceea ce privește complexitatea algoritmului de calcul este simplificat. Acest fapt, la rândul său, permite rezolvarea problemei de complexitate polinomială a algoritmului bazat pe filtrul Kalman extins în rezolvarea problemelor SLAM și evitarea acesteia în FastSLAM.
Scăderea potențială a preciziei asociată cu ignorarea corelației erorilor în estimarea pozițiilor reperelor [2] .