Sto implementando la localizzazione Monte-Carlo per il mio robot a cui viene fornita una mappa dell'ambiente, della sua posizione iniziale e dell'orientamento. Il mio approccio è il seguente:
- Crea uniformemente 500 particelle attorno alla posizione data
- Quindi ad ogni passaggio:
- motion aggiorna tutte le particelle con odometria (il mio approccio attuale è newX = oldX + odometryX (1 + standard GaussianRandom), ecc.)
- assegnare il peso a ciascuna particella usando i dati del sonar (la formula è per ogni probabilità del sensore * = gaussianPDF (realReading) dove gaussian ha la previsione prevista media)
- restituisce la particella con maggiore probabilità come posizione in questo passaggio
- quindi 9/10 di nuove particelle vengono ricampionate da quelle vecchie in base ai pesi e 1/10 viene campionato uniformemente attorno alla posizione prevista
Ora, ho scritto un simulatore per l'ambiente del robot ed ecco come si comporta questa localizzazione: http://www.youtube.com/watch?v=q7q3cqktwZI
Temo molto che per un lungo periodo di tempo il robot possa perdersi. Se aggiungi particelle in un'area più ampia, il robot si perde ancora più facilmente.
Mi aspetto una prestazione migliore. Qualche consiglio?