Acrob or SBOT robot constructs a map of a maze using IR distance sensors (Dudík, Kemény)

From RoboWiki
Jump to: navigation, search

Program na vykreslenie dráhy pre model robota Sbot[1].

Pohyb robota po čiare a zaznamenávanie vzdialenosti okolitých objektov

Úvod

Našou úlohou bolo naprogramovať robota tak aby sa hýbal smerom dopredu sledovaním čiari a popritom meral vzdialenosti okolitých objektov.

Zapojenie

               adc_vals[0] - ľavý senzor
               adc_vals[1] - pravý senzor

Program po nadviazaní spojenia s počítačom pomocou bluetooth prostredníctvom programu putty reaguje na stlačenia kláves nasledovne:

 p - testovacie tlačidlo, vypíše do výstupu putty "hello"
 i - vypíše hodnoty z poľa adc_vals od 0 po 7 
 w,s,a,d - ovládanie robota šípkami
 g - zastaví oba motory
 v - vypíše hodnoty senzorov na čiaru
 c - spustí sa nasledovanie čiary robotom

Algoritmus nasledovania čiary:

V cykle prechádza nasledovným vetvením: Ak vidí robot na oboch senzoroch svetlo ide rovno (predpokladá, že čiaru má medzi senzormi). Ak vidí na ľavom otočí sa na mieste do ľava, kým nevidí znova na oboch svetlo. Inak zistí, či je na pravom senzore tma, točí do prava, kým nevidí na oboch svetlo.

Výpis činnosti robota

Keď je spustený mód nasledovania čiary, pri každom prechode cyklom vypíše na nový riadok do programu putty jedno z písmen "r,p,l". r ak ide rovno, p - zabáča doprava, l - zabáča doľava. Po tom ako robota zastavíme, treba ručne z programu putty skopírovať celý výstup a uložiť do textového formátu (.txt).

Popis programu na vykresľovanie

Program bol písaný v IDE NetBeans.

Screenshot programu:

Screen.jpg

Načítavanie vstupného súboru (zdrojový kód ..src/robot/robot1.java) Program si načítava údaje zo zadaného vstupného súboru informácie o chode robota ("r,l,p") a ukladá ich do poľa vystup_file, pričom vždy z dviadsiatich po sebe nasledujúcich riadkov vyberie najpočetnejší znak a uloží do poľa vystup_file. Množstvo riadkov po ktorých ukladá hodnotu do poľa vystup_file je možné nastaviť v premennej dlzkaseturiadkov, ale táto zmena ovplivní aj dĺžku vykreslovanej čiary, preto sa to neodporúča.

Vykreslovanie (zdrojový kód ..src/robot/draha.java)


Počiatočnú pozíciu robota a jeho počiatočný smer si načíta zo vstupu ktorý je možný zadať v programe. Dráha sa vykresľuje podľa hodnôt z poľa vystup_file. V cykle číta za radom všetky načítané hodnoty. Reakcie na hodnoty sú nasledovné:

"p" - otočí aktuálny smerový vektor robota o 1° v smere hodinových ručičiek

"l" - otočí aktuálny smerový vektor robota o 1° proti smeru hodinových ručičiek

"r" - načítava ďalšie hodnoty, až kým nenačíta rotáciu, pričom pri každom ďalšom načítaní "r" posunie koncový bod úsečky v smere aktuálneho natočenia o malú hodnotu. Úsečka sa vykreslí až pri načítaní rotácie, pričom reálne súradnice sú zaokruhlené na celočíselné.

Zdrojáky

zdrojáky[2]

Autor: Martin Chudjak