Stap 6: Details van software: odometry en veldtoewijzing = waar ben ik?
Als we eenmaal de informatie over de afgelegde door elk wiel in een discrete-tijd-update (odometry), kunnen we de coördinaten van de positie van de robot met de dezelfde periodiciteit zonder enige externe verwijzing (dead reckoning) schatten.
Sommige theoretische achtergrond met betrekking tot dead reckoning door odometry kan worden gevonden in het boek door Johann Borenstein:
"Waar ben ik? -Sensoren en methoden voor het plaatsen van de mobiele Robot "
en op de volgende webpagina's:
http://www.seattlerobotics.org/encoder/200010/dead_reckoning_article.html
De wiskundige achtergrond en een diepe uitleg van de algemene methode gebruikt, kan worden gevonden op G.W. Lucas papier A Tutorial en elementaire traject Model voor de differentiële besturing systeem van Robot wiel Actuators, beschikbaar op Internet:
http://Rossum.sourceforge.net/papers/DiffSteer/DiffSteer.html
Sommige vereenvoudigde algoritmen kunnen ook worden gevonden in dat dezelfde documentatie, dus het is mogelijk om het verkrijgen van het juiste compromis tussen precisie en snelheid van uitwerking, met behulp van de wiskundige (trigonometrische) vermogen van dsPIC33F serie.
Een beschrijving van de wiskunde gebruikt om de positie te berekenen kan worden gevonden in de afbeeldingen die zijn gekoppeld aan deze stap. Het eerste voorbeeld wordt weergegeven van de betekenis van de symbolen, het tweede voorbeeld wordt weergegeven van de formules die worden gebruikt met deze symbolen. Klik op de selectievakjes naast elke computationele stap een korte beschrijving wordt weergegeven.
Aan het einde weten we hoeveel de robot verhuisde in dat tijdsinterval als delta van de oriëntatie, een delta op X-as en een delta op de Y-as in het referentiegedeelte carthesian.
Cumulatie van elke delta-waarde in eigen variabele weten we de huidige coördinaten (positie en oriëntatie) van het platform.
Ter voorkoming van computationele fouten (deling door nul) en verspilling van de tijd van de controller, heeft een selectievakje vooraf worden gedaan op zowel Sr en Sl variabelen. Definiëren van een quasi-nul waarde die voor minimale mechanische en computationele benaderingen we de formules vereenvoudigen zorgt kunnen als de robot is reizen in een rechte lijn (de ruimte het juiste wiel vallende is bijna hetzelfde als de ruimte reisde door de linker wiel) of als het wordt draaien rond de verticale as (de ruimte het juiste wiel vallende is bijna hetzelfde als de ruimte reisde door de linker wiel maar in een tegenovergestelde richting) , zo gedetailleerd in het stroomschema weergegeven in de laatste afbeelding.
Deze video toont een voorbeeld van welke precisie kunnen we krijgen:
http://www.YouTube.com/watch?v=d7KZDPJW5n8
Field mapping
Met gegevens die zijn berekend door vorige functies wordt een veldtoewijzing uitgevoerd.
Elke Xms, na de huidige positie uitwerking, een veldtoewijzing wordt uitgevoerd het onbekende gebied in een raster van 10 x 10cm cellen verdelen. Vaststelling van een maximale veld dimensie van 5 x 5m, we krijgen een 50 x 50 = 2500 cellen matrix. Elke cel wordt gedefinieerd met een beet, met de bezetting van een totaalgeheugen van 1250 Bytes. Zestien verschillende waarden kunnen worden toegekend aan elke cel:
n = 00 onbekende cel
n = 01-10 cel bezocht n keer
n = 11 obstakel gevonden
n = 12 gas target gevonden
n = 13 lichte target gevonden
n = 14 goede doel gevonden
De robot kunt starten vanuit elke positie in het veld; Dit zijn de coördinaten van de verwijzing (0,0) in haar referentiesysteem.
Veld toewijzing is nuttig om te vinden van de beste strategie in een onbekend gebied verkennen. De robot kan direct zelf aan de minder onderzocht gedeelte van het veld ("n" onderwaarde) kunt tijd besparen door niet tweemaal in een reeds ontdekte doelwit te stoppen, vindt de beste weg naar het bereiken van een bepaalde coördinaat, en meer.