Hur man bygger en själv navigera roboten (6 / 7 steg)
Steg 6: Detaljer av programvara: odometry och fältmappning = var är jag?
När vi har information om avståndet reste vid varje hjul i en Tidsdiskret uppdatering (odometry), kan vi beräkna position koordinaterna för roboten med samma periodicitet utan någon extern hänvisning (död räkenskap).
Några teoretiska bakgrund när det gäller död räkenskap av odometry återfinns i boken av Johann Borenstein:
"Var är jag? -Sensorer och metoder för mobil Robot positionering "
och på följande webbsidor:
http://www.seattlerobotics.org/Encoder/200010/dead_reckoning_article.html
Matematiska bakgrunden och en djup förklaring till den allmänna metod som används, kan hittas på G.W. Lucas papper en handledning och elementära banan modell för differentierad styrning System av Robot hjul manöverdonen, tillgänglig på Internet:
http://Rossum.sourceforge.net/Papers/DiffSteer/DiffSteer.html
Några förenklade algoritmer kan hittas i den samma dokumentationen också, så det är möjligt att erhålla den rätta kompromissen mellan precision och snabbhet i utarbetandet, med den matematiska (trigonometriska) funktionen av dsPIC33F serien.
En beskrivning av matematik används för att beräkna positionen kan hittas i bilder bifogas detta steg. Den första visar innebörden av symboler, för det andra visar formler används med dessa symboler. Att klicka på kryssrutorna bredvid varje computational steg en kort beskrivning visas.
I slutet vet vi hur mycket roboten flyttade det tidsintervallet som ett delta orientering, ett delta på X-axeln och ett delta på Y-axeln i fältet carthesian referens.
Sammanläggning av varje delta-värde i sin egen variabel vet vi de aktuella koordinaterna (position och orientering) av plattformen.
För att undvika computational fel (division med noll) och controller tidspillan, har en kontroll göras i förväg på både Sr och Sl variabler. Definiera en kvasi noll värde som tar hand om minimal mekanisk och computational approximationer vi kan förenkla formlerna om roboten reser i en rak linje (utrymmet omfattas av högra hjulet är nästan samma som utrymmet reste vid vänstra hjulet) eller om det rörligt kring sin vertikala axel (utrymmet omfattas av högra hjulet är nästan samma som utrymmet reste vänstra hjulet, men i en motsatt riktning) , så detaljerade i flödesschemat på sista bilden.
Denna video visar ett exempel på vilken precision kan vi få:
http://www.youtube.com/watch?v=d7KZDPJW5n8
Fältet kartläggning
Med data beräknas av tidigare funktioner utförs en fältmappning.
Varje Xms efter nuvarande position utarbetandet, utförs en fältmappning dividera fältet okänd i en 10 x 10cm celler rutnät. Definiera en maximal fältet dimension av 5 x 5m, vi får en 50 x 50 = 2500 celler matris. Varje cell definieras med en nibble, med en totalt minne ockupationen av 1250 byte. Sexton olika värden kan tilldelas till varje cell:
n = 00 okänd cell
n = 01 – 10 cell besökte n gånger
n = 11 hinder hittade
n = 12 gas mål hittade
n = 13 lätta mål hittade
n = 14 ljud target hittade
Roboten kan starta från en position i fältet. dessa kommer att vara referens koordinaterna (0,0) i dess referenssystem.
Fältet mappning är användbar för att hitta det bästa att utforska strategi i ett okänt fält. Roboten kan rikta sig till mindre utforskade delen av fältet (lägre "n" värde), kan spara tid genom att inte stoppa två gånger i ett redan upptäckta mål, kan hitta den bästa vägen att nå en viss koordinat med mera.