Robot constructs a map of a maze - Adam Bilisics

From RoboWiki
Revision as of 16:57, 28 June 2013 by Robot (talk | contribs)
Jump to: navigation, search

Úvod

Mojím projektom je naprogramovať robotnačku. Táto sa bude pohybovať po priestore rozumným spôsobom, vyhýbať sa prekážkam pomocou senzorov a ukladať si údaje so senzorov do dvojrozmernej mapy a teda vytvárať virtuálnu mapu priestoru.

Finálny projekt je v jazyku JAVA a môžete si zdojový kód stiahnuť tu: Robotnacka

Robotnacka.png

Tu môžete vidieť príklad mapy

Tento kúsok mapy je len z troch vertikálnych prejdení robotnačkou cez mapu. Ukážka časti mapy

Algoritmus pohybu a vyhýbania sa objektom

Pohyb Robota je treba dať do ľavého rohu. Pohyb je jednoduchý. Vypočítal som na koľko robotových krokov dokáže senzor rozpoznať zmenu. Vždy sa teda posúva o túto jednotku. Tiež vieme koľko týchto jednotiek je celá výška mapy, takže počítadlo nám udržuje koľko krát už išiel dopredu robot. Na vrchu mapy/plochy sa otočí doprava, posunie sa o kúsok, znova sa otočí doprava a ide smerom dolu rovnakým spôsobom.

Kolízia Kolízia alebo vyhýbanie sa prekážkam je uskutočňované nasledovne. Akonáhle je predný senzor na 0, čiže je priamo pred prekážkou, alebo hneď naľavo či napravo od neho senzory zaznamenaju vzdialenosť objektu menej než 3, tak robot cúvne a začína prekážku obchádzať.

Obchádzanie Po tom čo robot cúvne o 3 jednotky dozadu, otočí sa doprava. Potom sa snaží správne sa "nakalibrovať", aneb nájisť ľavým senzorom či uz je začiatok objektu vedľa neho. Ak nie posunie sa dopredu a znova opakuje. Ak áno, ide dopredu až kým ľavý senzor nezaznamená že už je mimo prekážky. V tento moment sa robot posúva ešte o polovicu svojej dĺžky v prepočítaných jednotkách, otočí sa doľava a znova zopakuje to čo som predchvíľkou popísal. Nakalibruje, našiel začiatok, ide, ide, našiel koniec, posunie sa ešte o polovicu svojej dĺžky, zabočí doľava. Medzičasom si však pamätá, koľko krát sa posunul doprava, čiže uz vie koľko krát sa má posunúť doľava aby sa vrátil na pôvodnú dráhu. Potom sa otočí doprava a pokračuje v smere kde skončil.

Skenovanie objektov - vytváranie mapy

Mapa sama o sebe je len dvojrozmerná pole integerov, ktoré je na začiatku vynulované. Akonáhle kontrolujeme či sa môžeme posunúť ďalej, pozrieme všetky senzory(nie len predné) a podľa natočenia robota si do mapy na dané miesto pripočítame +1. Toleranciu som dal 10 jednotiek. Ak senzor zaznamenáva väčšiu vzdialenosť, neukladá nič.